@windward/games 0.0.9 → 0.0.10
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/components/content/blocks/dragDrop/BucketGame.vue +41 -87
- package/components/content/blocks/dragDrop/SortingGame.vue +43 -29
- package/components/content/blocks/flashcards/FlashcardSlides.vue +3 -1
- package/components/content/blocks/matchingGame/MatchingGame.vue +94 -51
- package/components/content/blocks/quizshowGame/AnswerPanel.vue +23 -16
- package/components/content/blocks/quizshowGame/QuizShow.vue +17 -4
- package/components/content/blocks/slideshow/SlideShow.vue +3 -1
- package/components/content/blocks/wordJumble/Jumble.vue +4 -2
- package/components/content/blocks/wordJumble/WordJumble.vue +11 -2
- package/components/settings/BucketGameSettingsManager.vue +175 -349
- package/components/settings/FlashCardSlidesManager.vue +335 -414
- package/components/settings/MatchingGameManager.vue +357 -618
- package/components/settings/SlideShowManager.vue +89 -127
- package/components/settings/SortingGameSettingsManager.vue +32 -144
- package/components/settings/WordJumbleSettingsManager.vue +48 -142
- package/i18n/en-US/components/content/blocks/bucket_game.ts +1 -0
- package/i18n/en-US/components/content/blocks/flashcard.ts +2 -0
- package/i18n/en-US/components/settings/matching_game.ts +1 -1
- package/i18n/en-US/components/settings/quizshow_game.ts +1 -1
- package/i18n/en-US/components/settings/slideshow.ts +2 -0
- package/i18n/es-ES/components/content/blocks/bucket_game.ts +40 -0
- package/i18n/es-ES/components/content/blocks/crossword.ts +25 -0
- package/i18n/es-ES/components/content/blocks/flashcard.ts +7 -0
- package/i18n/es-ES/components/content/blocks/index.ts +23 -0
- package/i18n/es-ES/components/content/blocks/matching_game.ts +26 -0
- package/i18n/es-ES/components/content/blocks/multiple_choice.ts +9 -0
- package/i18n/es-ES/components/content/blocks/quizshow_game.ts +35 -0
- package/i18n/es-ES/components/content/blocks/seven_strikes.ts +6 -0
- package/i18n/es-ES/components/content/blocks/slideshow.ts +13 -0
- package/i18n/es-ES/components/content/blocks/sorting_game.ts +5 -0
- package/i18n/es-ES/components/content/blocks/word_jumble.ts +9 -0
- package/i18n/es-ES/components/content/crud_table.ts +6 -0
- package/i18n/es-ES/components/content/index.ts +7 -0
- package/i18n/es-ES/components/index.ts +9 -0
- package/i18n/es-ES/components/navigation/index.ts +5 -0
- package/i18n/es-ES/components/settings/bucket_game.ts +38 -0
- package/i18n/es-ES/components/settings/crossword.ts +7 -0
- package/i18n/es-ES/components/settings/flashcard.ts +28 -0
- package/i18n/es-ES/components/settings/index.ts +23 -0
- package/i18n/es-ES/components/settings/matching_game.ts +15 -0
- package/i18n/es-ES/components/settings/multiple_choice.ts +17 -0
- package/i18n/es-ES/components/settings/quizshow_game.ts +20 -0
- package/i18n/es-ES/components/settings/seven_strikes.ts +8 -0
- package/i18n/es-ES/components/settings/slideshow.ts +13 -0
- package/i18n/es-ES/components/settings/sorting_game.ts +5 -0
- package/i18n/es-ES/components/settings/word_jumble.ts +11 -0
- package/i18n/es-ES/index.ts +15 -0
- package/i18n/es-ES/modules/index.ts +5 -0
- package/i18n/es-ES/pages/index.ts +5 -0
- package/i18n/es-ES/shared/content_blocks.ts +18 -0
- package/i18n/es-ES/shared/index.ts +7 -0
- package/i18n/es-ES/shared/settings.ts +14 -0
- package/i18n/sv-SE/components/content/blocks/bucket_game.ts +40 -0
- package/i18n/sv-SE/components/content/blocks/crossword.ts +20 -0
- package/i18n/sv-SE/components/content/blocks/flashcard.ts +7 -0
- package/i18n/sv-SE/components/content/blocks/index.ts +23 -0
- package/i18n/sv-SE/components/content/blocks/matching_game.ts +25 -0
- package/i18n/sv-SE/components/content/blocks/multiple_choice.ts +9 -0
- package/i18n/sv-SE/components/content/blocks/quizshow_game.ts +35 -0
- package/i18n/sv-SE/components/content/blocks/seven_strikes.ts +6 -0
- package/i18n/sv-SE/components/content/blocks/slideshow.ts +13 -0
- package/i18n/sv-SE/components/content/blocks/sorting_game.ts +5 -0
- package/i18n/sv-SE/components/content/blocks/word_jumble.ts +9 -0
- package/i18n/sv-SE/components/content/crud_table.ts +6 -0
- package/i18n/sv-SE/components/content/index.ts +7 -0
- package/i18n/sv-SE/components/index.ts +9 -0
- package/i18n/sv-SE/components/navigation/index.ts +5 -0
- package/i18n/sv-SE/components/settings/bucket_game.ts +38 -0
- package/i18n/sv-SE/components/settings/crossword.ts +7 -0
- package/i18n/sv-SE/components/settings/flashcard.ts +28 -0
- package/i18n/sv-SE/components/settings/index.ts +23 -0
- package/i18n/sv-SE/components/settings/matching_game.ts +15 -0
- package/i18n/sv-SE/components/settings/multiple_choice.ts +16 -0
- package/i18n/sv-SE/components/settings/quizshow_game.ts +20 -0
- package/i18n/sv-SE/components/settings/seven_strikes.ts +8 -0
- package/i18n/sv-SE/components/settings/slideshow.ts +13 -0
- package/i18n/sv-SE/components/settings/sorting_game.ts +5 -0
- package/i18n/sv-SE/components/settings/word_jumble.ts +11 -0
- package/i18n/sv-SE/index.ts +15 -0
- package/i18n/sv-SE/modules/index.ts +5 -0
- package/i18n/sv-SE/pages/index.ts +5 -0
- package/i18n/sv-SE/shared/content_blocks.ts +18 -0
- package/i18n/sv-SE/shared/index.ts +7 -0
- package/i18n/sv-SE/shared/settings.ts +14 -0
- package/package.json +1 -1
- package/i18n/en-US.ts +0 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
2
|
+
<div>
|
|
3
3
|
<div>
|
|
4
4
|
<h3
|
|
5
5
|
:aria-label="
|
|
@@ -40,8 +40,16 @@
|
|
|
40
40
|
class="success mr-5"
|
|
41
41
|
@click="onContinueGame"
|
|
42
42
|
>{{ $t('shared.forms.continue') }}
|
|
43
|
-
</v-btn
|
|
44
|
-
|
|
43
|
+
</v-btn>
|
|
44
|
+
<v-container
|
|
45
|
+
v-if="status === 'errorOutline'"
|
|
46
|
+
class="d-flex justify-end"
|
|
47
|
+
@click="onExitFeedback"
|
|
48
|
+
><v-icon class="icon--error"
|
|
49
|
+
>mdi-close-circle</v-icon
|
|
50
|
+
>
|
|
51
|
+
</v-container>
|
|
52
|
+
</v-col>
|
|
45
53
|
</v-row>
|
|
46
54
|
<br />
|
|
47
55
|
</v-container>
|
|
@@ -49,8 +57,8 @@
|
|
|
49
57
|
<v-container>
|
|
50
58
|
<v-row>
|
|
51
59
|
<draggable
|
|
52
|
-
class="d-flex justify-space-between flex-wrap col-md-12"
|
|
53
60
|
v-bind="dragOptions"
|
|
61
|
+
class="d-flex justify-space-between flex-wrap col-md-12"
|
|
54
62
|
:list="block.metadata.config.answerObjects"
|
|
55
63
|
:disabled="!allowDrag"
|
|
56
64
|
:group="{
|
|
@@ -69,7 +77,7 @@
|
|
|
69
77
|
tile
|
|
70
78
|
color="primary"
|
|
71
79
|
>
|
|
72
|
-
<v-icon>mdi-
|
|
80
|
+
<v-icon>mdi-drag-vertical</v-icon>
|
|
73
81
|
<span>
|
|
74
82
|
{{ answer.display }}
|
|
75
83
|
</span>
|
|
@@ -77,8 +85,8 @@
|
|
|
77
85
|
</draggable>
|
|
78
86
|
</v-row>
|
|
79
87
|
<v-row
|
|
80
|
-
class="d-flex flex-wrap flex-row justify-center flex-fill"
|
|
81
88
|
v-if="render"
|
|
89
|
+
class="d-flex flex-wrap flex-row justify-center flex-fill"
|
|
82
90
|
>
|
|
83
91
|
<v-row align="center" class="col-md-12">
|
|
84
92
|
<v-card
|
|
@@ -154,17 +162,17 @@
|
|
|
154
162
|
</v-row>
|
|
155
163
|
</v-row>
|
|
156
164
|
<v-row
|
|
157
|
-
class="d-flex flex-wrap flex-row justify-center flex-fill"
|
|
158
165
|
v-if="
|
|
159
166
|
!render && block.metadata.config.prompts.length > 0
|
|
160
167
|
"
|
|
168
|
+
class="d-flex flex-wrap flex-row justify-center flex-fill"
|
|
161
169
|
>
|
|
162
170
|
<v-row align="center" class="col-md-12">
|
|
163
171
|
<v-card
|
|
164
172
|
v-if="
|
|
165
173
|
!block.metadata.config.prompts[
|
|
166
174
|
startingIndex
|
|
167
|
-
][
|
|
175
|
+
][startingIndex].toggle
|
|
168
176
|
"
|
|
169
177
|
class="pa-2 flex-fill bucket"
|
|
170
178
|
min-height="5em"
|
|
@@ -174,13 +182,8 @@
|
|
|
174
182
|
>
|
|
175
183
|
<v-card-text class="text-center">
|
|
176
184
|
<draggable
|
|
177
|
-
class="dragArea list-group"
|
|
178
|
-
:key="
|
|
179
|
-
block.metadata.config.prompts[
|
|
180
|
-
startingIndex
|
|
181
|
-
]['prompt']
|
|
182
|
-
"
|
|
183
185
|
v-bind="dragOptions"
|
|
186
|
+
class="dragArea list-group"
|
|
184
187
|
disabled
|
|
185
188
|
group="people"
|
|
186
189
|
tabindex="0"
|
|
@@ -192,7 +195,7 @@
|
|
|
192
195
|
{{
|
|
193
196
|
block.metadata.config.prompts[
|
|
194
197
|
startingIndex
|
|
195
|
-
][
|
|
198
|
+
][startingIndex].prompt
|
|
196
199
|
}}
|
|
197
200
|
</div>
|
|
198
201
|
</draggable>
|
|
@@ -204,7 +207,10 @@
|
|
|
204
207
|
v-if="
|
|
205
208
|
block.metadata.config.prompts[
|
|
206
209
|
startingIndex
|
|
207
|
-
][
|
|
210
|
+
][startingIndex].toggle &&
|
|
211
|
+
block.metadata.config.prompts[
|
|
212
|
+
startingIndex
|
|
213
|
+
][startingIndex].file
|
|
208
214
|
"
|
|
209
215
|
class="pa-2 flex-fill bucket"
|
|
210
216
|
min-height="5em"
|
|
@@ -213,13 +219,13 @@
|
|
|
213
219
|
>
|
|
214
220
|
<v-card-text>
|
|
215
221
|
<draggable
|
|
222
|
+
v-bind="dragOptions"
|
|
216
223
|
class="dragArea list-group"
|
|
217
224
|
:key="
|
|
218
225
|
block.metadata.config.prompts[
|
|
219
226
|
startingIndex
|
|
220
227
|
]['prompt']
|
|
221
228
|
"
|
|
222
|
-
v-bind="dragOptions"
|
|
223
229
|
disabled
|
|
224
230
|
group="people"
|
|
225
231
|
tabindex="0"
|
|
@@ -228,33 +234,36 @@
|
|
|
228
234
|
:id="
|
|
229
235
|
block.metadata.config.prompts[
|
|
230
236
|
startingIndex
|
|
231
|
-
][
|
|
237
|
+
][startingIndex].file.asset
|
|
238
|
+
.public_url
|
|
232
239
|
"
|
|
233
240
|
>
|
|
234
241
|
<v-img
|
|
235
242
|
v-if="
|
|
236
243
|
block.metadata.config
|
|
237
244
|
.prompts[startingIndex][
|
|
238
|
-
|
|
239
|
-
]
|
|
245
|
+
startingIndex
|
|
246
|
+
]['file']
|
|
240
247
|
"
|
|
241
248
|
:aria-describedby="
|
|
242
249
|
block.metadata.config
|
|
243
250
|
.prompts[startingIndex][
|
|
244
|
-
|
|
245
|
-
]
|
|
251
|
+
startingIndex
|
|
252
|
+
]['ariaDescribedBy']
|
|
246
253
|
"
|
|
247
254
|
:alt="
|
|
248
255
|
block.metadata.config
|
|
249
256
|
.prompts[startingIndex][
|
|
250
|
-
|
|
251
|
-
]
|
|
257
|
+
startingIndex
|
|
258
|
+
]['altText']
|
|
252
259
|
"
|
|
253
260
|
:src="
|
|
254
261
|
block.metadata.config
|
|
255
262
|
.prompts[startingIndex][
|
|
256
|
-
|
|
257
|
-
]['
|
|
263
|
+
startingIndex
|
|
264
|
+
]['file']['asset'][
|
|
265
|
+
'public_url'
|
|
266
|
+
]
|
|
258
267
|
"
|
|
259
268
|
></v-img>
|
|
260
269
|
</div>
|
|
@@ -294,9 +303,9 @@
|
|
|
294
303
|
)
|
|
295
304
|
}}
|
|
296
305
|
<v-progress-linear
|
|
306
|
+
v-model="completedPercent"
|
|
297
307
|
color="primary"
|
|
298
308
|
outlined
|
|
299
|
-
v-model="completedPercent"
|
|
300
309
|
rounded
|
|
301
310
|
height="15"
|
|
302
311
|
></v-progress-linear>
|
|
@@ -342,16 +351,22 @@ export default {
|
|
|
342
351
|
this.block.metadata.config = {}
|
|
343
352
|
}
|
|
344
353
|
if (_.isEmpty(this.block.metadata.config.title)) {
|
|
345
|
-
this.block.metadata.config.title =
|
|
354
|
+
this.block.metadata.config.title = this.$t(
|
|
355
|
+
'plugin.games.components.settings.matching_game.form.title'
|
|
356
|
+
)
|
|
346
357
|
}
|
|
347
358
|
if (_.isEmpty(this.block.metadata.config.instructions)) {
|
|
348
359
|
this.block.metadata.config.instructions = ''
|
|
349
360
|
}
|
|
350
361
|
if (_.isEmpty(this.block.metadata.config.feedback_correct)) {
|
|
351
|
-
this.block.metadata.config.feedback_correct =
|
|
362
|
+
this.block.metadata.config.feedback_correct = this.$t(
|
|
363
|
+
'plugin.games.components.settings.bucket_game.form.feedback.correct_default'
|
|
364
|
+
)
|
|
352
365
|
}
|
|
353
366
|
if (_.isEmpty(this.block.metadata.config.feedback_incorrect)) {
|
|
354
|
-
this.block.metadata.config.feedback_incorrect =
|
|
367
|
+
this.block.metadata.config.feedback_incorrect = this.$t(
|
|
368
|
+
'plugin.games.components.settings.bucket_game.form.feedback.incorrect_default'
|
|
369
|
+
)
|
|
355
370
|
}
|
|
356
371
|
if (_.isEmpty(this.block.metadata.config.prompts)) {
|
|
357
372
|
this.block.metadata.config.prompts = []
|
|
@@ -370,10 +385,10 @@ export default {
|
|
|
370
385
|
return _.flatten(this.solvedQuestions).length
|
|
371
386
|
},
|
|
372
387
|
completedPercent() {
|
|
373
|
-
if (this.
|
|
388
|
+
if (this.flattenedPrompts.length > 0) {
|
|
374
389
|
return (
|
|
375
390
|
(this.solvedQuestions.length /
|
|
376
|
-
this.
|
|
391
|
+
this.flattenedPrompts.length) *
|
|
377
392
|
100
|
|
378
393
|
)
|
|
379
394
|
}
|
|
@@ -388,7 +403,6 @@ export default {
|
|
|
388
403
|
feedback: this.$t(
|
|
389
404
|
'plugin.games.components.content.blocks.matching_game.default_feedback'
|
|
390
405
|
),
|
|
391
|
-
toggle: false,
|
|
392
406
|
gameCompleted: false,
|
|
393
407
|
shufflePrompts: [],
|
|
394
408
|
solvedQuestions: [],
|
|
@@ -404,9 +418,10 @@ export default {
|
|
|
404
418
|
name: '',
|
|
405
419
|
},
|
|
406
420
|
prompt: '',
|
|
421
|
+
toggle: false,
|
|
407
422
|
},
|
|
408
|
-
editedPrompt: {},
|
|
409
423
|
startingIndex: 0,
|
|
424
|
+
flattenedPrompts: '',
|
|
410
425
|
}
|
|
411
426
|
},
|
|
412
427
|
watch: {
|
|
@@ -415,8 +430,13 @@ export default {
|
|
|
415
430
|
this.onReset()
|
|
416
431
|
}
|
|
417
432
|
},
|
|
433
|
+
value(newValue) {
|
|
434
|
+
this.flattenedPrompts = _.flatten(newValue.metadata.config.prompts)
|
|
435
|
+
},
|
|
418
436
|
},
|
|
419
437
|
mounted() {
|
|
438
|
+
// flatten nested prompts
|
|
439
|
+
this.flattenedPrompts = _.flatten(this.block.metadata.config.prompts)
|
|
420
440
|
this.setMainPrompt()
|
|
421
441
|
},
|
|
422
442
|
methods: {
|
|
@@ -437,10 +457,9 @@ export default {
|
|
|
437
457
|
return array
|
|
438
458
|
},
|
|
439
459
|
setMainPrompt() {
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
)
|
|
460
|
+
const holder = this.block.metadata.config.prompts.flat(1)
|
|
461
|
+
if (holder !== 0 && !_.isEmpty(holder)) {
|
|
462
|
+
this.shufflePrompts = _.cloneDeep(holder)
|
|
444
463
|
this.shufflePrompts = this.shuffle(this.shufflePrompts)
|
|
445
464
|
this.mainPrompt = this.shufflePrompts.shift()
|
|
446
465
|
}
|
|
@@ -452,25 +471,40 @@ export default {
|
|
|
452
471
|
}
|
|
453
472
|
let draggedElement = ''
|
|
454
473
|
let target = ''
|
|
455
|
-
if (
|
|
474
|
+
if (
|
|
475
|
+
this.mainPrompt.toggle === false ||
|
|
476
|
+
!_.isBoolean(this.mainPrompt.toggle)
|
|
477
|
+
) {
|
|
456
478
|
draggedElement =
|
|
457
479
|
this.block.metadata.config.answerObjects[evt.oldIndex]
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
480
|
+
this.block.metadata.config.prompts.forEach((outerElement) => {
|
|
481
|
+
const getMain = outerElement.find((element) => {
|
|
482
|
+
return (
|
|
483
|
+
element.prompt ==
|
|
484
|
+
evt.to.firstChild.textContent.trim()
|
|
485
|
+
)
|
|
486
|
+
})
|
|
487
|
+
if (getMain) {
|
|
488
|
+
target = getMain
|
|
489
|
+
}
|
|
462
490
|
})
|
|
463
491
|
} else {
|
|
464
492
|
draggedElement =
|
|
465
493
|
this.block.metadata.config.answerObjects[evt.oldIndex]
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
494
|
+
this.block.metadata.config.prompts.forEach((outerElement) => {
|
|
495
|
+
const mainElement = outerElement.find((element) => {
|
|
496
|
+
return (
|
|
497
|
+
element.file?.asset.public_url ==
|
|
498
|
+
evt.to.firstElementChild.id
|
|
499
|
+
)
|
|
500
|
+
})
|
|
501
|
+
if (mainElement) {
|
|
502
|
+
target = mainElement
|
|
503
|
+
}
|
|
471
504
|
})
|
|
472
505
|
}
|
|
473
|
-
if (_.isUndefined(target)) {
|
|
506
|
+
if (_.isUndefined(target) || _.isEmpty(target)) {
|
|
507
|
+
console.log('dragged to nowhere')
|
|
474
508
|
} else if (draggedElement.id !== target.answer.id) {
|
|
475
509
|
this.feedback = this.block.metadata.config.feedback_incorrect
|
|
476
510
|
this.status = 'errorOutline'
|
|
@@ -480,8 +514,7 @@ export default {
|
|
|
480
514
|
this.status = 'successOutline'
|
|
481
515
|
this.allowDrag = false
|
|
482
516
|
if (
|
|
483
|
-
this.solvedQuestions.length ===
|
|
484
|
-
this.block.metadata.config.prompts.length
|
|
517
|
+
this.solvedQuestions.length === this.flattenedPrompts.length
|
|
485
518
|
) {
|
|
486
519
|
this.feedback = this.$t(
|
|
487
520
|
'plugin.games.components.content.blocks.matching_game.congratulations_feedback'
|
|
@@ -491,6 +524,13 @@ export default {
|
|
|
491
524
|
}
|
|
492
525
|
}
|
|
493
526
|
},
|
|
527
|
+
onExitFeedback() {
|
|
528
|
+
this.status = 'default'
|
|
529
|
+
this.allowDrag = true
|
|
530
|
+
this.feedback = this.$t(
|
|
531
|
+
'plugin.games.components.content.blocks.matching_game.default_feedback'
|
|
532
|
+
)
|
|
533
|
+
},
|
|
494
534
|
onContinueGame() {
|
|
495
535
|
if (!this.render) {
|
|
496
536
|
this.startingIndex = this.startingIndex + 1
|
|
@@ -538,6 +578,9 @@ export default {
|
|
|
538
578
|
.answerCard {
|
|
539
579
|
min-width: 23%;
|
|
540
580
|
}
|
|
581
|
+
.icon--error {
|
|
582
|
+
color: var(--v-error-base);
|
|
583
|
+
}
|
|
541
584
|
@media (max-width: 1270px) {
|
|
542
585
|
.answerCard {
|
|
543
586
|
min-width: 30%;
|
|
@@ -22,26 +22,32 @@
|
|
|
22
22
|
</div>
|
|
23
23
|
</v-row>
|
|
24
24
|
<br />
|
|
25
|
+
<v-row v-if="editMode">
|
|
26
|
+
<v-icon>mdi-help</v-icon>
|
|
27
|
+
<div>
|
|
28
|
+
{{
|
|
29
|
+
$t(
|
|
30
|
+
'plugin.games.components.content.blocks.quizshow_game.form.question'
|
|
31
|
+
)
|
|
32
|
+
}}
|
|
33
|
+
</div></v-row
|
|
34
|
+
>
|
|
25
35
|
<v-row
|
|
26
36
|
align="center"
|
|
27
37
|
justify="center"
|
|
28
38
|
class="pa-4 mb-4 font-weight-bold text-capitalize"
|
|
29
39
|
>
|
|
30
|
-
<
|
|
40
|
+
<TextEditor
|
|
31
41
|
v-if="editMode"
|
|
32
42
|
v-model="question.text"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
:autofocus="true"
|
|
42
|
-
rows="2"
|
|
43
|
-
></v-textarea>
|
|
44
|
-
<v-card flat v-if="!editMode" v-html="question.text"></v-card>
|
|
43
|
+
class="col-md-12"
|
|
44
|
+
menubar="edit insert format"
|
|
45
|
+
toolbar="undo redo | italic underline strikethrough removeformat | mathButton "
|
|
46
|
+
:height="250"
|
|
47
|
+
lazy-load
|
|
48
|
+
auto-grow
|
|
49
|
+
></TextEditor>
|
|
50
|
+
<TextViewer v-if="!editMode" v-model="question.text"></TextViewer>
|
|
45
51
|
</v-row>
|
|
46
52
|
<v-row
|
|
47
53
|
align="center"
|
|
@@ -208,10 +214,11 @@
|
|
|
208
214
|
<script>
|
|
209
215
|
import Dialog from '~/components/Dialog.vue'
|
|
210
216
|
import { MathHelper } from '@windward/core/utils'
|
|
211
|
-
|
|
217
|
+
import TextEditor from '~/components/Text/TextEditor.vue'
|
|
218
|
+
import TextViewer from '~/components/Text/TextViewer.vue'
|
|
212
219
|
export default {
|
|
213
220
|
name: 'AnswerPanel',
|
|
214
|
-
components: { Dialog },
|
|
221
|
+
components: { Dialog, TextEditor, TextViewer },
|
|
215
222
|
props: {
|
|
216
223
|
editMode: { type: Boolean, required: false, default: false },
|
|
217
224
|
value: { type: Object, required: true, default: () => {} },
|
|
@@ -239,7 +246,7 @@ export default {
|
|
|
239
246
|
deep: true,
|
|
240
247
|
},
|
|
241
248
|
},
|
|
242
|
-
|
|
249
|
+
beforeMount() {
|
|
243
250
|
if (!_.isEmpty(this.value)) {
|
|
244
251
|
this.question = _.cloneDeep(this.value)
|
|
245
252
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"
|
|
21
21
|
tabindex="0"
|
|
22
22
|
>
|
|
23
|
-
{{
|
|
23
|
+
{{ title }}
|
|
24
24
|
</h3>
|
|
25
25
|
|
|
26
26
|
<p tabindex="0">
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
.categories"
|
|
44
44
|
:key="cat_index"
|
|
45
45
|
class="flex-fill"
|
|
46
|
-
|
|
46
|
+
elevation="0"
|
|
47
47
|
tile
|
|
48
48
|
:max-width="
|
|
49
49
|
block.metadata.config.responsive
|
|
@@ -74,10 +74,16 @@
|
|
|
74
74
|
@click="quizshow(cat_index, point_index)"
|
|
75
75
|
>
|
|
76
76
|
<v-row justify="space-between">
|
|
77
|
-
<v-col
|
|
77
|
+
<v-col
|
|
78
|
+
v-if="
|
|
79
|
+
!render ||
|
|
80
|
+
(render &&
|
|
78
81
|
options.answers[cat_index][
|
|
79
82
|
point_index
|
|
80
|
-
] !== null)
|
|
83
|
+
] !== null)
|
|
84
|
+
"
|
|
85
|
+
md="1"
|
|
86
|
+
>
|
|
81
87
|
<feedback-icons
|
|
82
88
|
v-if="!render"
|
|
83
89
|
:success="
|
|
@@ -233,6 +239,13 @@ export default {
|
|
|
233
239
|
mounted() {},
|
|
234
240
|
updated() {},
|
|
235
241
|
computed: {
|
|
242
|
+
title() {
|
|
243
|
+
return this.block.metadata.config.title
|
|
244
|
+
? this.block.metadata.config.title
|
|
245
|
+
: this.$t(
|
|
246
|
+
'plugin.games.components.settings.quizshow_game.title'
|
|
247
|
+
)
|
|
248
|
+
},
|
|
236
249
|
editorFeedbackIcons() {
|
|
237
250
|
if (this.render) {
|
|
238
251
|
return {
|
|
@@ -103,7 +103,9 @@ export default {
|
|
|
103
103
|
this.block.metadata.config = {}
|
|
104
104
|
}
|
|
105
105
|
if (_.isEmpty(this.block.metadata.config.title)) {
|
|
106
|
-
this.block.metadata.config.title =
|
|
106
|
+
this.block.metadata.config.title = this.$t(
|
|
107
|
+
'plugin.games.components.settings.slideshow.form.slideshow_title'
|
|
108
|
+
)
|
|
107
109
|
}
|
|
108
110
|
|
|
109
111
|
if (_.isEmpty(this.block.metadata.config.instructions)) {
|
|
@@ -29,8 +29,10 @@ export default {
|
|
|
29
29
|
// reveals correct answer in input areas
|
|
30
30
|
if (newValue === true) {
|
|
31
31
|
for (let i = 0; i < this.value.value.length; i++) {
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
if (this.answer.length > 0) {
|
|
33
|
+
const letter = this.answer.charAt(i)
|
|
34
|
+
this.letterArray[i].value = letter
|
|
35
|
+
}
|
|
34
36
|
}
|
|
35
37
|
} else {
|
|
36
38
|
this.splitUpWord()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-container>
|
|
3
3
|
<v-col class="pa-0">
|
|
4
|
-
<
|
|
4
|
+
<h3>
|
|
5
5
|
{{
|
|
6
6
|
block.metadata.config.title
|
|
7
7
|
? block.metadata.config.title
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
'plugin.games.components.content.blocks.word_jumble.title'
|
|
10
10
|
)
|
|
11
11
|
}}
|
|
12
|
-
</
|
|
12
|
+
</h3>
|
|
13
13
|
<p>{{ block.metadata.config.instructions }}</p>
|
|
14
14
|
</v-col>
|
|
15
15
|
<v-col class="pa-0">
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
</v-container>
|
|
56
56
|
<v-row class="justify-center mt-4">
|
|
57
57
|
<Jumble
|
|
58
|
+
:key="updateJumble"
|
|
58
59
|
:value="word"
|
|
59
60
|
:reveal="showAnswer"
|
|
60
61
|
:reset="resetValue"
|
|
@@ -91,6 +92,7 @@
|
|
|
91
92
|
import _ from 'lodash'
|
|
92
93
|
import Jumble from './Jumble.vue'
|
|
93
94
|
import BaseContentBlock from '~/components/Content/Blocks/BaseContentBlock'
|
|
95
|
+
import Crypto from '~/helpers/Crypto'
|
|
94
96
|
|
|
95
97
|
export default {
|
|
96
98
|
name: 'WordJumble',
|
|
@@ -141,8 +143,14 @@ export default {
|
|
|
141
143
|
resetValue: false,
|
|
142
144
|
studentResponse: '',
|
|
143
145
|
feedbackStatus: '',
|
|
146
|
+
updateJumble: 0,
|
|
144
147
|
}
|
|
145
148
|
},
|
|
149
|
+
watch: {
|
|
150
|
+
render(newValue) {
|
|
151
|
+
this.updateJumble = Crypto.id()
|
|
152
|
+
},
|
|
153
|
+
},
|
|
146
154
|
mounted() {
|
|
147
155
|
this.showAnswer = false
|
|
148
156
|
},
|
|
@@ -224,6 +232,7 @@ export default {
|
|
|
224
232
|
// that components do not remount on slides each time the slide is revisited
|
|
225
233
|
// updates class
|
|
226
234
|
this.feedbackStatus = ''
|
|
235
|
+
this.showFeedback = false
|
|
227
236
|
this.feedback = this.$t(
|
|
228
237
|
'plugin.games.components.content.blocks.word_jumble.feedback'
|
|
229
238
|
)
|