Skip to content

Commit cee11fb

Browse files
Merge pull request #31 from tarunluthra123/master
Quiz Preview
2 parents b4fc3f0 + c5d67da commit cee11fb

File tree

26 files changed

+687
-980
lines changed

26 files changed

+687
-980
lines changed

app/helpers/mark-option.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import {helper} from '@ember/component/helper';
2+
3+
export function markOption([questionId, choiceId, answers]) {
4+
let index = answers.findIndex(obj => obj.id == questionId)
5+
if (index > -1) {
6+
if (answers[index].markedChoices.includes(choiceId)) {
7+
return true;
8+
}
9+
}
10+
return false
11+
}
12+
13+
export default helper(markOption);
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import Component from '@ember/component';
2+
import Ember from 'ember';
3+
4+
export default Component.extend({
5+
questionIDs: Ember.computed('quiz.questions.@each', function () {
6+
return this.get('quiz').hasMany('questions').ids()
7+
})
8+
})
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<div class="container-fluid">
2+
<div class="row">
3+
{{#each questionIDs as |num i|}}
4+
<div class="button-solid col-3 m-2">
5+
<a href="#" {{action navigateToQuestion num}} class="white">
6+
<button>{{i}}</button>
7+
</a>
8+
</div>
9+
{{/each}}
10+
</div>
11+
</div>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import Component from '@ember/component';
2+
import Ember from 'ember';
3+
4+
export default Component.extend({
5+
actions: {
6+
selectChoiceAndMark(questionNumber, choiceId) {
7+
this.get('selectChoice')(questionNumber, choiceId)
8+
}
9+
},
10+
selectedChoice: Ember.computed('questionNumber', 'answers', function () {
11+
let questionNumber = this.get('questionNumber')
12+
let answers = this.get('answers')
13+
let index = answers.findIndex(obj => obj.id == questionNumber)
14+
if (index > -1) {
15+
return answers[index].markedChoices[0]
16+
}
17+
return null
18+
})
19+
})
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<div>
2+
<h3>Question - {{question.title}}</h3>
3+
<p><b>Description -</b> {{question.description}}</p>
4+
<br>
5+
{{#each question.choices as |choice|}}
6+
{{#if question.multicorrect}}
7+
{{input type="checkbox" checked=(mark-option question.id choice.id answers) name="questionChoices"
8+
click=(action "selectChoiceAndMark" question.id choice.id)}}
9+
{{choice.title}}
10+
<br>
11+
{{else}}
12+
{{#radio-button value=choice.id groupValue=selectedChoice name="questionChoices"
13+
changed=(action "selectChoiceAndMark" question.id choice.id)}}
14+
{{choice.title}}
15+
{{/radio-button}}
16+
<br>
17+
{{/if}}
18+
{{choice.description}}<br><br>
19+
{{/each}}
20+
<br><br>
21+
</div>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import Component from '@ember/component';
2+
import Ember from 'ember';
3+
import {inject as service} from '@ember/service';
4+
5+
export default Component.extend({
6+
store: service(),
7+
question: Ember.computed('res', function () {
8+
return this.store.findRecord('question', this.get('res').id)
9+
})
10+
})
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<div style="border-color: black">
2+
Question ID : {{res.id}}<br>
3+
Question Score : {{res.score}}<br>
4+
Question Title : {{question.title}}<br>
5+
{{#if res.correctlyAnswered}}
6+
Correctly marked choices :
7+
<ul style="list-style-type: square">
8+
{{#each res.correctlyAnswered as |choice|}}
9+
<li>{{choice.title}}</li>
10+
{{/each}}
11+
</ul>
12+
{{/if}}
13+
14+
{{#if res.incorrectlyAnswered}}
15+
Incorrectly marked choices :
16+
<ul style="list-style-type: square">
17+
{{#each res.incorrectlyAnswered as |choice|}}
18+
<li>{{choice.title}}</li>
19+
{{/each}}
20+
</ul>
21+
{{/if}}
22+
23+
</div>
Lines changed: 99 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,112 @@
11
<div class="container">
2-
<div class="row">
3-
<div class="col-4"></div>
4-
<div class="col-6">
5-
<h1>Add new Quiz:</h1>
6-
</div>
7-
</div>
8-
<div class="row justify-content-center align-items-center">
9-
<div class="col-2">
10-
<label>Title *</label>
11-
</div>
12-
<div class="col-6 input-group">
13-
{{input type="text" class="input-text" value=quiz.title}}
14-
</div>
15-
<div class="col-3">
16-
{{markdown-to-html quiz.title}}
17-
</div>
18-
</div>
19-
<div class="row justify-content-center align-items-center">
20-
<div class="col-2">
21-
<label>Description *</label>
22-
</div>
23-
<div class="col-6 input-group">
24-
{{textarea type="text" class="input-text py-4" value=quiz.description}}
25-
</div>
26-
<div class="col-3">
27-
{{markdown-to-html quiz.description extensions='katex'}}
28-
</div>
29-
</div>
30-
{{#unless quiz.isNew}}
312
<div class="row">
32-
<div class="col-2">
33-
<label>Questions</label>
34-
</div>
35-
<div class="col-6">
36-
{{#power-select-multiple
37-
search=(perform questionFilterTask)
38-
selected=quiz.questions
39-
onchange=(action (mut quiz.questions ))
40-
as |question|}}
41-
{{question.title}}
42-
{{/power-select-multiple}}
43-
</div>
44-
</div>
45-
{{/unless}}
3+
<div class="col-4"></div>
4+
<div class="col-6">
5+
<h1>Add new Quiz:</h1>
6+
</div>
7+
</div>
8+
<div class="row justify-content-center align-items-center">
9+
<div class="col-2">
10+
<label>Title *</label>
11+
</div>
12+
<div class="col-6 input-group">
13+
{{input type="text" class="input-text" value=quiz.title}}
14+
</div>
15+
<div class="col-3">
16+
{{markdown-to-html quiz.title}}
17+
</div>
18+
</div>
19+
<div class="row justify-content-center align-items-center">
20+
<div class="col-2">
21+
<label>Description *</label>
22+
</div>
23+
<div class="col-6 input-group">
24+
{{textarea type="text" class="input-text py-4" value=quiz.description}}
25+
</div>
26+
<div class="col-3">
27+
{{markdown-to-html quiz.description extensions='katex'}}
28+
</div>
29+
</div>
30+
{{#unless quiz.isNew}}
31+
<div class="row">
32+
<div class="col-2">
33+
<label>Questions</label>
34+
</div>
35+
<div class="col-6">
36+
{{#power-select-multiple
37+
search=(perform questionFilterTask)
38+
selected=quiz.questions
39+
onchange=(action (mut quiz.questions ))
40+
as |question|}}
41+
{{question.title}}
42+
{{/power-select-multiple}}
43+
</div>
44+
</div>
45+
{{/unless}}
4646

47-
<div class="row justify-content-center align-items-center">
48-
<div class="col-2">
49-
<label>Image Url *</label>
50-
</div>
51-
<div class="col-6 input-group">
52-
{{input type="text" class="input-text" value=quiz.image}}
47+
<div class="row justify-content-center align-items-center">
48+
<div class="col-2">
49+
<label>Image Url *</label>
50+
</div>
51+
<div class="col-6 input-group">
52+
{{input type="text" class="input-text" value=quiz.image}}
53+
</div>
5354
</div>
54-
</div>
5555

56-
<div class="row justify-content-center align-items-center">
57-
<div class="col-2">
58-
<label>Duration *</label>
56+
<div class="row justify-content-center align-items-center">
57+
<div class="col-2">
58+
<label>Duration *</label>
59+
</div>
60+
<div class="col-6 input-group">
61+
{{input type="text" class="input-text" value=quiz.duration}}
62+
</div>
63+
</div>
64+
<div class="row justify-content-center align-items-center">
65+
<div class="col-2">
66+
<label>Max Attempts *</label>
67+
</div>
68+
<div class="col-6 input-group">
69+
{{input type="text" class="input-text" value=quiz.maxAttempts}}
70+
</div>
5971
</div>
60-
<div class="col-6 input-group">
61-
{{input type="text" class="input-text" value=quiz.duration}}
62-
</div>
63-
</div>
64-
<div class="row justify-content-center align-items-center">
65-
<div class="col-2">
66-
<label>Max Attempts *</label>
67-
</div>
68-
<div class="col-6 input-group">
69-
{{input type="text" class="input-text" value=quiz.maxAttempts}}
70-
</div>
71-
</div>
72-
<div class="row">
73-
<div class="col-2">
74-
<label>Start Date *</label>
75-
</div>
76-
<div class="col-6">
77-
{{ember-datetime-picker value=startDateMoment }}
78-
{{!-- {{input type="text" value=quiz.startDate}} --}}
79-
</div>
80-
</div>
81-
<div class="row">
82-
<div class="col-2">
83-
<label>End Date *</label>
72+
<div class="row">
73+
<div class="col-2">
74+
<label>Start Date *</label>
75+
</div>
76+
<div class="col-6">
77+
{{ember-datetime-picker value=startDateMoment }}
78+
{{!-- {{input type="text" value=quiz.startDate}} --}}
79+
</div>
8480
</div>
85-
<div class="col-6">
86-
{{ember-datetime-picker value=endDateMoment }}
81+
<div class="row">
82+
<div class="col-2">
83+
<label>End Date *</label>
84+
</div>
85+
<div class="col-6">
86+
{{ember-datetime-picker value=endDateMoment }}
8787

88-
{{!-- {{input type="text" value=quiz.endDate}} --}}
88+
{{!-- {{input type="text" value=quiz.endDate}} --}}
89+
</div>
8990
</div>
90-
</div>
9191

92-
<div class="row">
93-
<div class="col-4"></div>
94-
<div class="col-6">
95-
<div class="button-solid">
96-
<button {{action 'save'}}>Save Changes</button>
97-
</div>
92+
<div class="row">
93+
<div class="col-2"></div>
94+
{{#if quiz.id}}
95+
<div class="col-4">
96+
<div class="button-solid">
97+
<a class="white" href="{{quiz.id}}/preview">
98+
<button>Preview</button>
99+
</a>
100+
</div>
101+
</div>
102+
{{/if}}
103+
<div class="col-2"></div>
104+
<div class="col-4">
105+
<div class="button-solid">
106+
<button {{action 'save'}}>Save Changes</button>
107+
</div>
108+
</div>
98109
</div>
99-
</div>
110+
100111
</div>
101112

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import Controller from '@ember/controller';
22

33
export default Controller.extend({
4-
actions: {
5-
saveQuiz () {
6-
return this.get('model').save()
4+
actions: {
5+
saveQuiz() {
6+
return this.get('model').save()
7+
}
78
}
8-
}
99
});

app/pods/quiz/id/index/route.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import Route from '@ember/routing/route';
2+
3+
export default Route.extend({
4+
model(params) {
5+
return this.modelFor('quiz/id')
6+
}
7+
});

0 commit comments

Comments
 (0)