@windward/core 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/components/Content/Blocks/ClickableIcons.vue +113 -116
- package/components/Content/Blocks/OpenResponseCollate.vue +30 -15
- package/components/Content/Blocks/Video.vue +67 -40
- package/components/Settings/OpenResponseCollateSettings.vue +48 -16
- package/components/Settings/UserUploadSettings.vue +77 -17
- package/components/utils/FillInBlank/FillInBlankInput.vue +24 -1
- package/components/utils/FillInBlank/FillInTheBlanksManager.vue +5 -0
- package/components/utils/GenerateAIQuestionButton.vue +152 -12
- package/components/utils/TinyMCEWrapper.vue +8 -3
- package/i18n/en-US/components/content/blocks/generate_questions.ts +10 -0
- package/i18n/en-US/components/settings/open_response_collate.ts +2 -2
- package/i18n/en-US/components/settings/user_upload.ts +6 -4
- package/i18n/en-US/components/utils/FillInBlank/FillInBlankInput.ts +1 -0
- package/i18n/en-US/components/utils/FillInBlank/FillInTheBlanksManager.ts +1 -0
- package/i18n/en-US/shared/settings.ts +2 -0
- package/i18n/es-ES/components/content/blocks/generate_questions.ts +10 -0
- package/i18n/es-ES/components/settings/open_response_collate.ts +1 -0
- package/i18n/es-ES/components/settings/user_upload.ts +6 -4
- package/i18n/es-ES/components/utils/FillInBlank/FillInBlankInput.ts +4 -3
- package/i18n/es-ES/components/utils/FillInBlank/FillInTheBlanksManager.ts +2 -1
- package/i18n/es-ES/shared/settings.ts +2 -0
- package/i18n/sv-SE/components/content/blocks/generate_questions.ts +10 -0
- package/i18n/sv-SE/components/settings/open_response_collate.ts +2 -0
- package/i18n/sv-SE/components/settings/user_upload.ts +7 -5
- package/i18n/sv-SE/components/utils/FillInBlank/FillInBlankInput.ts +6 -5
- package/i18n/sv-SE/components/utils/FillInBlank/FillInTheBlanksManager.ts +5 -4
- package/i18n/sv-SE/shared/settings.ts +2 -0
- package/package.json +1 -1
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
|
-
<v-container>
|
|
3
|
+
<v-container class="pa-0">
|
|
4
4
|
<BaseContentBlockSettings
|
|
5
5
|
v-model="block.metadata.config"
|
|
6
6
|
:disabled="render"
|
|
7
7
|
></BaseContentBlockSettings>
|
|
8
|
+
<p>
|
|
9
|
+
{{
|
|
10
|
+
$t(
|
|
11
|
+
'windward.core.components.settings.user_upload.max_file_size'
|
|
12
|
+
)
|
|
13
|
+
}}
|
|
14
|
+
</p>
|
|
8
15
|
</v-container>
|
|
9
16
|
<v-switch
|
|
10
17
|
v-model="block.metadata.config.uploadSettings.multiple"
|
|
@@ -23,6 +30,7 @@
|
|
|
23
30
|
item-value="value"
|
|
24
31
|
outlined
|
|
25
32
|
dense
|
|
33
|
+
style="z-index: 20"
|
|
26
34
|
:label="
|
|
27
35
|
$t('windward.core.components.settings.user_upload.accept_types')
|
|
28
36
|
"
|
|
@@ -31,8 +39,8 @@
|
|
|
31
39
|
</div>
|
|
32
40
|
</template>
|
|
33
41
|
<script>
|
|
34
|
-
import BaseContentSettings from '~/components/Content/Settings/BaseContentSettings.js'
|
|
35
42
|
import _ from 'lodash'
|
|
43
|
+
import BaseContentSettings from '~/components/Content/Settings/BaseContentSettings.js'
|
|
36
44
|
import Uuid from '~/helpers/Uuid'
|
|
37
45
|
import BaseContentBlockSettings from '~/components/Content/Settings/BaseContentBlockSettings.vue'
|
|
38
46
|
|
|
@@ -45,44 +53,96 @@ export default {
|
|
|
45
53
|
valid: true,
|
|
46
54
|
debounce: null,
|
|
47
55
|
loading: false,
|
|
48
|
-
|
|
56
|
+
attrs: {
|
|
57
|
+
class: 'mb-6',
|
|
58
|
+
boilerplate: true,
|
|
59
|
+
elevation: 0,
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
computed: {
|
|
64
|
+
acceptOptions() {
|
|
65
|
+
const documents = [
|
|
66
|
+
{ name: 'doc', value: 'application/msword' },
|
|
67
|
+
{
|
|
68
|
+
name: 'docx',
|
|
69
|
+
value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: 'odt',
|
|
73
|
+
value: 'application/vnd.oasis.opendocument.text',
|
|
74
|
+
},
|
|
75
|
+
{ name: 'pdf', value: 'application/pdf' },
|
|
76
|
+
{ name: 'xls', value: 'application/vnd.ms-excel' },
|
|
77
|
+
{
|
|
78
|
+
name: 'xlsx',
|
|
79
|
+
value: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
80
|
+
},
|
|
81
|
+
{ name: 'rtf', value: 'application/rtf' },
|
|
82
|
+
{ name: 'pages', value: 'application/x-iwork-pages-sffpages' },
|
|
83
|
+
{
|
|
84
|
+
name: 'numbers',
|
|
85
|
+
value: 'application/x-iwork-numbers-sffnumbers',
|
|
86
|
+
},
|
|
87
|
+
{ name: 'txt', value: 'text/plain' },
|
|
88
|
+
{
|
|
89
|
+
name: 'ods',
|
|
90
|
+
value: 'application/vnd.oasis.opendocument.spreadsheet',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'csv',
|
|
94
|
+
value: 'text/csv',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'pptx',
|
|
98
|
+
value: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'ppt',
|
|
102
|
+
value: 'application/vnd.ms-powerpoint',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'odp',
|
|
106
|
+
value: 'application/vnd.oasis.opendocument.presentation',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: 'keynote',
|
|
110
|
+
value: 'application/zip',
|
|
111
|
+
},
|
|
112
|
+
]
|
|
113
|
+
return [
|
|
49
114
|
{
|
|
50
115
|
name: this.$t(
|
|
51
116
|
'windward.core.components.settings.user_upload.types.all'
|
|
52
117
|
),
|
|
53
|
-
value: '
|
|
118
|
+
value: '*',
|
|
54
119
|
},
|
|
55
120
|
{
|
|
56
121
|
name: this.$t(
|
|
57
122
|
'windward.core.components.settings.user_upload.types.all_image'
|
|
58
123
|
),
|
|
59
|
-
value: 'image
|
|
124
|
+
value: 'image/*',
|
|
60
125
|
},
|
|
61
126
|
{
|
|
62
127
|
name: this.$t(
|
|
63
|
-
'windward.core.components.settings.user_upload.types.
|
|
128
|
+
'windward.core.components.settings.user_upload.types.all_video_audio'
|
|
64
129
|
),
|
|
65
|
-
value: '
|
|
130
|
+
value: 'video/*,audio/*',
|
|
66
131
|
},
|
|
67
132
|
{
|
|
68
133
|
name: this.$t(
|
|
69
|
-
'windward.core.components.settings.user_upload.types.
|
|
134
|
+
'windward.core.components.settings.user_upload.types.all_word'
|
|
70
135
|
),
|
|
71
|
-
value:
|
|
136
|
+
value: documents.map((type) => type.value).join(','),
|
|
72
137
|
},
|
|
73
138
|
{
|
|
74
139
|
name: this.$t(
|
|
75
140
|
'windward.core.components.settings.user_upload.types.all_zip'
|
|
76
141
|
),
|
|
77
|
-
value: 'application/zip',
|
|
142
|
+
value: 'application/zip,application/gzip,application/x-gzip,application/x-tar,application/rar,application/x-rar-compressed,application/x-7z-compressed,application/x-bzip2,application/x-xz',
|
|
78
143
|
},
|
|
79
|
-
]
|
|
80
|
-
|
|
81
|
-
class: 'mb-6',
|
|
82
|
-
boilerplate: true,
|
|
83
|
-
elevation: 0,
|
|
84
|
-
},
|
|
85
|
-
}
|
|
144
|
+
]
|
|
145
|
+
},
|
|
86
146
|
},
|
|
87
147
|
beforeMount() {
|
|
88
148
|
if (_.isEmpty(this.block)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<span class="fib">
|
|
3
|
-
<v-dialog v-model="show" max-width="
|
|
3
|
+
<v-dialog v-model="show" max-width="500" width="90%">
|
|
4
4
|
<v-card>
|
|
5
5
|
<v-card-text class="pt-6">
|
|
6
6
|
<div>
|
|
@@ -20,6 +20,16 @@
|
|
|
20
20
|
)
|
|
21
21
|
}}
|
|
22
22
|
</p>
|
|
23
|
+
<div v-if="hasExplanation" class="mt-3">
|
|
24
|
+
<p class="font-weight-bold mb-1">
|
|
25
|
+
{{
|
|
26
|
+
$t(
|
|
27
|
+
'windward.core.components.utils.fill_in_the_blank.fill_in_blank_input.explanation'
|
|
28
|
+
)
|
|
29
|
+
}}:
|
|
30
|
+
</p>
|
|
31
|
+
<div v-html="decodedDescription"></div>
|
|
32
|
+
</div>
|
|
23
33
|
</div>
|
|
24
34
|
</v-card-text>
|
|
25
35
|
<v-card-actions>
|
|
@@ -141,6 +151,19 @@ export default {
|
|
|
141
151
|
}
|
|
142
152
|
return ''
|
|
143
153
|
},
|
|
154
|
+
hasExplanation() {
|
|
155
|
+
return this.description && this.description.trim() !== '' && this.description !== 'empty'
|
|
156
|
+
},
|
|
157
|
+
decodedDescription() {
|
|
158
|
+
if (!this.hasExplanation) {
|
|
159
|
+
return ''
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
return atob(this.description)
|
|
163
|
+
} catch (e) {
|
|
164
|
+
return this.description
|
|
165
|
+
}
|
|
166
|
+
},
|
|
144
167
|
},
|
|
145
168
|
watch: {
|
|
146
169
|
// set focus on the action button when dialog loaded for accessibility
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
</div>
|
|
45
45
|
</v-col>
|
|
46
46
|
<v-col
|
|
47
|
-
v-if="isFlashcardType"
|
|
47
|
+
v-if="isFlashcardType || isMatchingGameType || isSortingGameType"
|
|
48
48
|
cols="auto"
|
|
49
49
|
class="d-flex align-center"
|
|
50
50
|
>
|
|
@@ -124,14 +124,32 @@ export default {
|
|
|
124
124
|
isBucketGameType() {
|
|
125
125
|
return this.questionType === 'bucket_game'
|
|
126
126
|
},
|
|
127
|
+
isMatchingGameType() {
|
|
128
|
+
return this.questionType === 'matching_game'
|
|
129
|
+
},
|
|
130
|
+
isSortingGameType() {
|
|
131
|
+
return this.questionType === 'sorting_game'
|
|
132
|
+
},
|
|
127
133
|
replaceExistingLabel() {
|
|
128
134
|
if (this.isBucketGameType) {
|
|
129
135
|
return this.$t(
|
|
130
136
|
'windward.games.components.settings.bucket_game.form.replace_existing'
|
|
131
137
|
)
|
|
138
|
+
return this.$t(
|
|
139
|
+
'windward.games.components.settings.bucket_game.form.replace_existing'
|
|
140
|
+
)
|
|
141
|
+
}
|
|
142
|
+
if (this.isMatchingGameType) {
|
|
143
|
+
return this.$t(
|
|
144
|
+
'windward.games.components.settings.matching_game.form.replace_existing')
|
|
145
|
+
}
|
|
146
|
+
if (this.isSortingGameType) {
|
|
147
|
+
return this.$t(
|
|
148
|
+
'windward.games.components.settings.sorting_game.form.replace_existing')
|
|
132
149
|
}
|
|
133
150
|
return this.$t(
|
|
134
151
|
'windward.games.components.settings.flashcard.form.replace_existing'
|
|
152
|
+
|
|
135
153
|
)
|
|
136
154
|
},
|
|
137
155
|
flattenedContent() {
|
|
@@ -192,14 +210,18 @@ export default {
|
|
|
192
210
|
]
|
|
193
211
|
|
|
194
212
|
// Only add higher-level Bloom's taxonomy for supported question types
|
|
195
|
-
|
|
196
|
-
|
|
213
|
+
const supportsAdvancedTaxonomy =
|
|
214
|
+
this.isSortingGameType ||
|
|
215
|
+
([
|
|
216
|
+
'multi_choice_single_answer',
|
|
217
|
+
'multi_choice_multi_answer',
|
|
218
|
+
'ordering'
|
|
219
|
+
].includes(this.questionType) &&
|
|
197
220
|
!this.isFlashcardType &&
|
|
198
221
|
!this.isBucketGameType &&
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
) {
|
|
222
|
+
!this.isMatchingGameType)
|
|
223
|
+
|
|
224
|
+
if (supportsAdvancedTaxonomy) {
|
|
203
225
|
const multiBlooms = [
|
|
204
226
|
{
|
|
205
227
|
value: 'Analyze',
|
|
@@ -227,6 +249,14 @@ export default {
|
|
|
227
249
|
return this.$t(
|
|
228
250
|
'windward.core.components.content.blocks.generate_questions.button_label_bucket_game'
|
|
229
251
|
)
|
|
252
|
+
} else if (this.questionType === 'matching_game') {
|
|
253
|
+
return this.$t(
|
|
254
|
+
'windward.core.components.content.blocks.generate_questions.button_label_matching_game'
|
|
255
|
+
)
|
|
256
|
+
} else if (this.questionType === 'sorting_game') {
|
|
257
|
+
return this.$t(
|
|
258
|
+
'windward.core.components.content.blocks.generate_questions.button_label_sorting_game'
|
|
259
|
+
)
|
|
230
260
|
} else {
|
|
231
261
|
return this.$t(
|
|
232
262
|
'windward.core.components.content.blocks.generate_questions.button_label'
|
|
@@ -249,9 +279,8 @@ export default {
|
|
|
249
279
|
}
|
|
250
280
|
|
|
251
281
|
const course = new Course(this.course)
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
)
|
|
282
|
+
const contentData = this.selectedContent || this.content
|
|
283
|
+
const content = new Content(contentData)
|
|
255
284
|
|
|
256
285
|
let response
|
|
257
286
|
if (this.questionType === 'flashcard') {
|
|
@@ -347,6 +376,96 @@ export default {
|
|
|
347
376
|
'Invalid response from bucket game generation'
|
|
348
377
|
)
|
|
349
378
|
}
|
|
379
|
+
} else if (this.questionType === 'matching_game') {
|
|
380
|
+
// MATCHING GAME GENERATION
|
|
381
|
+
const activity = new Activity()
|
|
382
|
+
|
|
383
|
+
const endpoint = `suggest/matching_game${bloomsRequest}`;
|
|
384
|
+
|
|
385
|
+
response = await Activity.custom(
|
|
386
|
+
course,
|
|
387
|
+
content,
|
|
388
|
+
activity,
|
|
389
|
+
endpoint
|
|
390
|
+
).get()
|
|
391
|
+
|
|
392
|
+
let activityData = null
|
|
393
|
+
|
|
394
|
+
if (response && response.activity) {
|
|
395
|
+
activityData = response.activity
|
|
396
|
+
} else if (
|
|
397
|
+
response &&
|
|
398
|
+
response.length > 0 &&
|
|
399
|
+
response[0] &&
|
|
400
|
+
response[0].activity
|
|
401
|
+
) {
|
|
402
|
+
activityData = response[0].activity
|
|
403
|
+
} else if (Array.isArray(response) && response.length > 0) {
|
|
404
|
+
activityData = response[0]
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
if (activityData && activityData.metadata &&
|
|
408
|
+
activityData.metadata.config &&
|
|
409
|
+
activityData.metadata.config.answerObjects &&
|
|
410
|
+
activityData.metadata.config.prompts
|
|
411
|
+
) {
|
|
412
|
+
// We pass the activity data and the replace flag to the parent component
|
|
413
|
+
this.$emit(
|
|
414
|
+
'click:generate',
|
|
415
|
+
activityData,
|
|
416
|
+
this.replaceExisting
|
|
417
|
+
)
|
|
418
|
+
} else {
|
|
419
|
+
throw new Error(
|
|
420
|
+
'Invalid response from matching game generation'
|
|
421
|
+
)
|
|
422
|
+
}
|
|
423
|
+
} else if (this.questionType === 'sorting_game') {
|
|
424
|
+
// SORTING GAME GENERATION
|
|
425
|
+
const activity = new Activity()
|
|
426
|
+
|
|
427
|
+
const endpoint = `suggest/sorting_game${bloomsRequest}`;
|
|
428
|
+
|
|
429
|
+
response = await Activity.custom(
|
|
430
|
+
course,
|
|
431
|
+
content,
|
|
432
|
+
activity,
|
|
433
|
+
endpoint
|
|
434
|
+
).get()
|
|
435
|
+
|
|
436
|
+
let activityData = null
|
|
437
|
+
|
|
438
|
+
if (response && response.activity) {
|
|
439
|
+
activityData = response.activity
|
|
440
|
+
} else if (
|
|
441
|
+
response &&
|
|
442
|
+
response.length > 0 &&
|
|
443
|
+
response[0] &&
|
|
444
|
+
response[0].activity
|
|
445
|
+
) {
|
|
446
|
+
activityData = response[0].activity
|
|
447
|
+
} else if (Array.isArray(response) && response.length > 0) {
|
|
448
|
+
activityData = response[0]
|
|
449
|
+
} else if (response) {
|
|
450
|
+
activityData = response
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
if (activityData && activityData.metadata &&
|
|
454
|
+
activityData.metadata.config &&
|
|
455
|
+
activityData.metadata.config.answer &&
|
|
456
|
+
Array.isArray(activityData.metadata.config.answer)
|
|
457
|
+
) {
|
|
458
|
+
// We pass the activity data and the replace flag to the parent component
|
|
459
|
+
this.$emit(
|
|
460
|
+
'click:generate',
|
|
461
|
+
activityData,
|
|
462
|
+
this.replaceExisting
|
|
463
|
+
)
|
|
464
|
+
} else {
|
|
465
|
+
throw new Error(
|
|
466
|
+
'Invalid response from sorting game generation'
|
|
467
|
+
)
|
|
468
|
+
}
|
|
350
469
|
} else {
|
|
351
470
|
// ASSESSMENT QUESTION GENERATION
|
|
352
471
|
const assessment = new Assessment({ id: this.block.id })
|
|
@@ -392,6 +511,28 @@ export default {
|
|
|
392
511
|
this.$t(
|
|
393
512
|
`${basePath}.content_mismatch_bucket_game_support`
|
|
394
513
|
)
|
|
514
|
+
} else if (
|
|
515
|
+
(errorMessage === 'activity.error.content_mismatch' ||
|
|
516
|
+
errorType === 'content_mismatch') &&
|
|
517
|
+
this.questionType === 'matching_game'
|
|
518
|
+
) {
|
|
519
|
+
errorText =
|
|
520
|
+
this.$t(`${basePath}.content_mismatch_matching_game`) +
|
|
521
|
+
'\n\n' +
|
|
522
|
+
this.$t(
|
|
523
|
+
`${basePath}.content_mismatch_matching_game_support`
|
|
524
|
+
)
|
|
525
|
+
} else if (
|
|
526
|
+
(errorMessage === 'activity.error.content_mismatch' ||
|
|
527
|
+
errorType === 'content_mismatch') &&
|
|
528
|
+
this.questionType === 'sorting_game'
|
|
529
|
+
) {
|
|
530
|
+
errorText =
|
|
531
|
+
this.$t(`${basePath}.content_mismatch_sorting_game`) +
|
|
532
|
+
'\n\n' +
|
|
533
|
+
this.$t(
|
|
534
|
+
`${basePath}.content_mismatch_sorting_game_support`
|
|
535
|
+
)
|
|
395
536
|
} else {
|
|
396
537
|
errorText =
|
|
397
538
|
this.$t(`${basePath}.${errorType}`) +
|
|
@@ -429,5 +570,4 @@ export default {
|
|
|
429
570
|
border-radius: 15px;
|
|
430
571
|
}
|
|
431
572
|
</style>
|
|
432
|
-
|
|
433
|
-
</style>
|
|
573
|
+
|
|
@@ -36,10 +36,15 @@
|
|
|
36
36
|
<label v-if="hint" class="editor-hint">{{ hint }}</label>
|
|
37
37
|
</slot>
|
|
38
38
|
</div>
|
|
39
|
-
<v-btn-toggle
|
|
39
|
+
<v-btn-toggle
|
|
40
|
+
v-if="allowRead && !render"
|
|
41
|
+
dense
|
|
42
|
+
multiple
|
|
43
|
+
class="pt-1 d-flex justify-end"
|
|
44
|
+
>
|
|
40
45
|
<slot name="actions-prepend" :render="render"></slot>
|
|
41
46
|
<slot name="actions" :render="render">
|
|
42
|
-
<v-btn-toggle
|
|
47
|
+
<v-btn-toggle dense>
|
|
43
48
|
<v-btn color="primary" outlined @click="read">
|
|
44
49
|
<v-icon> mdi-play</v-icon>
|
|
45
50
|
</v-btn>
|
|
@@ -61,7 +66,6 @@ import _ from 'lodash'
|
|
|
61
66
|
import 'tinymce'
|
|
62
67
|
import Editor from '@tinymce/tinymce-vue'
|
|
63
68
|
import { getTinymce } from '@tinymce/tinymce-vue/lib/cjs/main/ts/TinyMCE'
|
|
64
|
-
import GlossaryVerification from '../Glossary/GlossaryVerification.vue'
|
|
65
69
|
/* Required TinyMCE components */
|
|
66
70
|
import 'tinymce/icons/default/icons.min.js'
|
|
67
71
|
import 'tinymce/themes/silver/theme.min.js'
|
|
@@ -112,6 +116,7 @@ import 'tinymce/skins/content/dark/content.js'
|
|
|
112
116
|
|
|
113
117
|
import { Synthesizer } from 'speechreader'
|
|
114
118
|
import Crypto from '~/helpers/Crypto'
|
|
119
|
+
import GlossaryVerification from '../Glossary/GlossaryVerification.vue'
|
|
115
120
|
import MathHelper from '../../helpers/MathHelper'
|
|
116
121
|
import { WindwardPlugins } from '../../helpers/tinymce/WindwardPlugins'
|
|
117
122
|
|
|
@@ -16,6 +16,14 @@ export default {
|
|
|
16
16
|
content_mismatch_bucket_game_support:
|
|
17
17
|
"Consider adding content with clear categories and multiple sortable items that can be grouped into 2-4 distinct buckets.",
|
|
18
18
|
|
|
19
|
+
content_mismatch_matching_game: "Content not suitable for matching games.",
|
|
20
|
+
content_mismatch_matching_game_support:
|
|
21
|
+
"Consider adding content that explicitly defines relationships between terms, concepts, or categories that students can match.",
|
|
22
|
+
|
|
23
|
+
content_mismatch_sorting_game: "Content not suitable for sorting games.",
|
|
24
|
+
content_mismatch_sorting_game_support:
|
|
25
|
+
"Consider adding content with sequential steps, chronological events, or items that have a clear logical order for students to arrange.",
|
|
26
|
+
|
|
19
27
|
llm_unavailable: 'Question generation temporarily unavailable.',
|
|
20
28
|
llm_unavailable_support:
|
|
21
29
|
"We're unable to connect to our AI service at the moment. Please try again in a few minutes or contact support if the issue persists.",
|
|
@@ -27,6 +35,8 @@ export default {
|
|
|
27
35
|
button_label: 'Generate Question',
|
|
28
36
|
button_label_flashcard: 'Generate Flashcards',
|
|
29
37
|
button_label_bucket_game: 'Generate Buckets',
|
|
38
|
+
button_label_matching_game: 'Generate Matches',
|
|
39
|
+
button_label_sorting_game: 'Generate Items',
|
|
30
40
|
selected_pages: 'Selected Page',
|
|
31
41
|
ai_assistance: 'AI Assistance',
|
|
32
42
|
blooms: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default {
|
|
2
|
-
instructions:
|
|
3
|
-
'Check off open response items to collate into a document.',
|
|
2
|
+
instructions: 'Check off open response items to collate into a document.',
|
|
4
3
|
include_prompts: 'Include Prompts',
|
|
5
4
|
filename: 'Filename (Blank for current page name)',
|
|
5
|
+
additional_text: 'Additional text to display in downloaded document',
|
|
6
6
|
}
|
|
@@ -3,10 +3,12 @@ export default {
|
|
|
3
3
|
accept_types: 'Allowed File Types',
|
|
4
4
|
types: {
|
|
5
5
|
all: 'All File Types',
|
|
6
|
-
all_image: 'Images
|
|
7
|
-
all_word: 'Documents
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
all_image: 'Images',
|
|
7
|
+
all_word: 'Documents (Text, Spreadsheets, Presentations)',
|
|
8
|
+
all_zip: 'Compressed',
|
|
9
|
+
all_video_audio: 'Video/Audio',
|
|
10
|
+
file: 'file',
|
|
10
11
|
},
|
|
12
|
+
max_file_size: 'Maximum file size: 100MB',
|
|
11
13
|
instructions: 'Drag or click here to upload files.',
|
|
12
14
|
}
|
|
@@ -18,6 +18,14 @@ export default {
|
|
|
18
18
|
content_mismatch_bucket_game_support:
|
|
19
19
|
'Considera agregar contenido con categorías claras y múltiples elementos clasificables que se puedan agrupar en 2-4 categorías distintas.',
|
|
20
20
|
|
|
21
|
+
content_mismatch_matching_game: 'El contenido no es adecuado para juegos de emparejamiento.',
|
|
22
|
+
content_mismatch_matching_game_support:
|
|
23
|
+
'Considera agregar contenido que defina explícitamente relaciones entre términos, conceptos o categorías que los estudiantes puedan emparejar.',
|
|
24
|
+
|
|
25
|
+
content_mismatch_sorting_game: 'El contenido no es adecuado para juegos de ordenamiento.',
|
|
26
|
+
content_mismatch_sorting_game_support:
|
|
27
|
+
'Considera agregar contenido con pasos secuenciales, eventos cronológicos o elementos que tengan un orden lógico claro para que los estudiantes los organicen.',
|
|
28
|
+
|
|
21
29
|
llm_unavailable:
|
|
22
30
|
'La generación de preguntas no está disponible temporalmente.',
|
|
23
31
|
llm_unavailable_support:
|
|
@@ -30,6 +38,8 @@ export default {
|
|
|
30
38
|
button_label: 'Generar pregunta',
|
|
31
39
|
button_label_flashcard: 'Generar tarjetas',
|
|
32
40
|
button_label_bucket_game: 'Generar categorías',
|
|
41
|
+
button_label_matching_game: 'Generar coincidencias',
|
|
42
|
+
button_label_sorting_game: 'Generar elementos',
|
|
33
43
|
selected_pages: 'Página seleccionada',
|
|
34
44
|
ai_assistance: 'Asistencia de IA',
|
|
35
45
|
blooms: {
|
|
@@ -3,10 +3,12 @@ export default {
|
|
|
3
3
|
accept_types: 'Tipos de archivos permitidos ',
|
|
4
4
|
types: {
|
|
5
5
|
all: 'Todos los tipos de archivos',
|
|
6
|
-
all_image: 'Imágenes
|
|
7
|
-
all_word: 'Documentos
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
all_image: 'Imágenes',
|
|
7
|
+
all_word: 'Documentos (Texto, Hojas de cálculo, Presentaciones)',
|
|
8
|
+
all_zip: 'Comprimido',
|
|
9
|
+
all_video_audio: 'Video/Audio',
|
|
10
|
+
file: 'Archivo',
|
|
10
11
|
},
|
|
12
|
+
max_file_size: 'Tamaño máximo de archivo: 100 MB',
|
|
11
13
|
instructions: 'Arrastre o haga clic aquí para cargar archivos.',
|
|
12
14
|
}
|
|
@@ -2,14 +2,15 @@ export default {
|
|
|
2
2
|
add_answer: 'Agregar respuesta',
|
|
3
3
|
answer: 'Respuesta',
|
|
4
4
|
check: 'Verificar',
|
|
5
|
-
check_answer: 'Haga clic para
|
|
5
|
+
check_answer: 'Haga clic para verificar la respuesta',
|
|
6
6
|
close: 'Cerrar',
|
|
7
7
|
correct: 'Correcto',
|
|
8
8
|
default_description: 'Su entrada es correcta',
|
|
9
9
|
incorrect: 'Incorrecto',
|
|
10
10
|
input_incorrect: "'{0}' es incorrecto",
|
|
11
|
-
reset: '
|
|
11
|
+
reset: 'reiniciar',
|
|
12
12
|
try_again: 'Intentar de nuevo',
|
|
13
|
-
user_input: '
|
|
13
|
+
user_input: 'Su respuesta: {0}',
|
|
14
14
|
correct_answer: 'Respuesta correcta: {0}',
|
|
15
|
+
explanation: 'Explicación',
|
|
15
16
|
}
|
|
@@ -3,9 +3,10 @@ export default {
|
|
|
3
3
|
try_again: 'Intentar de nuevo',
|
|
4
4
|
correct: 'Correcto',
|
|
5
5
|
incorrect: 'Incorrecto',
|
|
6
|
-
reset: '
|
|
6
|
+
reset: 'reiniciar',
|
|
7
7
|
check: 'Verificar',
|
|
8
8
|
add_answer: 'Agregar respuesta',
|
|
9
9
|
default_description: 'descripción predeterminada',
|
|
10
10
|
answer: 'Respuesta',
|
|
11
|
+
explanation: 'Explicación',
|
|
11
12
|
}
|
|
@@ -16,6 +16,14 @@ export default {
|
|
|
16
16
|
content_mismatch_bucket_game_support:
|
|
17
17
|
'Överväg att lägga till innehåll med tydliga kategorier och flera sorterbara objekt som kan grupperas i 2-4 distinkta kategorier.',
|
|
18
18
|
|
|
19
|
+
content_mismatch_matching_game: 'Innehållet är inte lämpligt för matchningsspel.',
|
|
20
|
+
content_mismatch_matching_game_support:
|
|
21
|
+
'Överväg att lägga till innehåll som uttryckligen definierar relationer mellan termer, koncept eller kategorier som elever kan matcha.',
|
|
22
|
+
|
|
23
|
+
content_mismatch_sorting_game: 'Innehållet är inte lämpligt för sorteringsspel.',
|
|
24
|
+
content_mismatch_sorting_game_support:
|
|
25
|
+
'Överväg att lägga till innehåll med sekventiella steg, kronologiska händelser eller objekt som har en tydlig logisk ordning för elever att arrangera.',
|
|
26
|
+
|
|
19
27
|
llm_unavailable: 'Frågegenerering tillfälligt otillgänglig.',
|
|
20
28
|
llm_unavailable_support:
|
|
21
29
|
'Vi kan inte ansluta till vår AI-tjänst för tillfället. Försök igen om några minuter.',
|
|
@@ -27,6 +35,8 @@ export default {
|
|
|
27
35
|
button_label: 'Generera fråga',
|
|
28
36
|
button_label_flashcard: 'Generera flashkort',
|
|
29
37
|
button_label_bucket_game: 'Generera kategorier',
|
|
38
|
+
button_label_matching_game: 'Generera matchningar',
|
|
39
|
+
button_label_sorting_game: 'Generera objekt',
|
|
30
40
|
selected_pages: 'Vald sida',
|
|
31
41
|
ai_assistance: 'AI-hjälp',
|
|
32
42
|
blooms: {
|