瀏覽代碼

Partial commit --- softcoding

master
kj1352 5 年之前
父節點
當前提交
3e5c54e9eb
共有 4 個檔案被更改,包括 126 行新增172 行删除
  1. +1
    -1
      src/app/tabs/courses/course-details/course-details.component.html
  2. +17
    -142
      src/app/tabs/courses/quiz/quiz.component.html
  3. +28
    -29
      src/app/tabs/courses/quiz/quiz.component.scss
  4. +80
    -0
      src/app/tabs/courses/quiz/quiz.component.ts

+ 1
- 1
src/app/tabs/courses/course-details/course-details.component.html 查看文件

@@ -56,7 +56,7 @@
<svg-icon [applyClass]="true" class="type-icon" src="assets/custom-icons/newspaper.svg"></svg-icon> Notes: <svg-icon [applyClass]="true" class="type-icon" src="assets/custom-icons/newspaper.svg"></svg-icon> Notes:
</span> </span>
<span class="type" *ngIf="topic.type === 'quiz'"> <span class="type" *ngIf="topic.type === 'quiz'">
<svg-icon [applyClass]="true" class="type-icon" src="assets/custom-icons/question-mark.svg"></svg-icon> Notes:
<svg-icon [applyClass]="true" class="type-icon" src="assets/custom-icons/question-mark.svg"></svg-icon> Quiz:
</span> </span>
<strong> {{ topic.heading }} - </strong> {{ topic.description }} <strong> {{ topic.heading }} - </strong> {{ topic.description }}
</p> </p>


+ 17
- 142
src/app/tabs/courses/quiz/quiz.component.html 查看文件

@@ -11,99 +11,23 @@


<section class="question-status"> <section class="question-status">
<div class="container"> <div class="container">
<div class="question-number correct">
<div class="question-number correct" *ngFor="let question of questionList; let i = index"
[ngClass]="{'current': selectedQuestionId && selectedQuestionId === question.id,
'correct' : question.userAnswer === question.correctAnswer,
'wrong' : question.userAnswer !== 0 && question.userAnswer !== question.correctAnswer}">
<span> <span>
<label> 1 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</span>
</div>
<div class="question-number wrong">
<span>
<label> 2 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/close-circle.svg"></svg-icon>
</span>
</div>
<div class="question-number correct">
<span>
<label> 3 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</span>
</div>
<div class="question-number wrong">
<span>
<label> 4 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/close-circle.svg"></svg-icon>
</span>
</div>
<div class="question-number correct">
<span>
<label> 5 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</span>
</div>
<div class="question-number wrong">
<span>
<label> 6 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/close-circle.svg"></svg-icon>
</span>
</div>
<div class="question-number current wrong">
<span>
<label> 7 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/close-circle.svg"></svg-icon>
</span>
</div>

<div class="question-number current correct">
<span>
<label> 8 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</span>
</div>

<div class="question-number">
<span>
<label> 9 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</span>
</div>

<div class="question-number">
<span>
<label> 10 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</span>
</div>


<div class="question-number">
<span>
<label> 11 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</span>
</div>


<div class="question-number">
<span>
<label> 12 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</span>
</div>

<div class="question-number">
<span>
<label> 13 </label>
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
<label> {{ i + 1 }} </label>
<svg-icon [applyClass]="true" class="icon correct-icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
<svg-icon [applyClass]="true" class="icon wrong-icon" src="assets/custom-icons/close-circle.svg"></svg-icon>
</span> </span>
</div> </div>
</div> </div>
</section> </section>


<ngx-siema [options]="options"> <ngx-siema [options]="options">
<ngx-siema-slide>
<ngx-siema-slide *ngFor="let question of questionList; let i = index">
<p class="question"> <p class="question">
Architecto obcaecati perferendis suscipit consequuntur labore voluptatibus vitae totam minima, tempore excepturi, cum at qui voluptas rerum nostrum odio minus, voluptatem dolores. ?
{{ question.question }}
</p> </p>


<div class="timer-holder"> <div class="timer-holder">
@@ -120,67 +44,18 @@
<!-- 135.2 * (1 - 0.6) --> <!-- 135.2 * (1 - 0.6) -->


<ol class="option-list"> <ol class="option-list">
<li class="wrong">
<label> 1. Option 1 </label>
<div class="icon-holder">
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/close-circle.svg"></svg-icon>
</div>
</li>
<li>
<label> 2. Option 2 </label>
<div class="icon-holder">
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</div>
</li>
<li>
<label> 3. Option 3 </label>
<div class="icon-holder">
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</div>
</li>
<li class="correct">
<label> 4. Option 4 </label>
<div class="icon-holder">
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</div>
</li>
</ol>
</ngx-siema-slide>


<ngx-siema-slide>
<p class="question">
dis suscipit consequuntur labore voluptatibus vitae totam minima, tempore excepturi, cum at qui voluptas rerum nostrum odio minus, voluptatem dolores. ?
</p>

<div class="timer-holder">
<div class="timer">
<span> 00:40 </span>
<svg width="55" height="55" viewBox="0 0 55 55">
<circle cx="27.5" cy="27.5" r="21.5" fill="none" stroke="#cecece" stroke-width="3" />
<circle cx="27.5" cy="27.5" r="21.5" fill="none" stroke-width="3"
stroke-dasharray="135.2" stroke-dashoffset="52.08" id="progress" />
</svg>
</div>
</div>

<!-- 135.2 * (1 - 0.6) -->

<ol class="option-list">
<li class="wrong">
<label> 1. Option 1 </label>
<li *ngFor="let option of question.options; let j = index"
[ngClass]="{'correct' : question.userAnswer === question.correctAnswer && question.userAnswer === option.id,
'wrong': question.userAnswer !== 0 && question.userAnswer !== question.correctAnswer && question.userAnswer === option.id,
'show-correct': question.userAnswer !== 0 && question.userAnswer !== question.correctAnswer && question.correctAnswer === option.id }"
(click)="question.userAnswer = option.id;">
<label> {{ j + 1 }}. {{ option.text }} </label>
<div class="icon-holder"> <div class="icon-holder">
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/close-circle.svg"></svg-icon>
</div>
</li>
<li>
<label> 2. Option 2 </label>
<div class="icon-holder">
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
<svg-icon [applyClass]="true" class="icon wrong-icon" src="assets/custom-icons/close-circle.svg"></svg-icon>
<svg-icon [applyClass]="true" class="icon correct-icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
</div> </div>
</li> </li>
</ol> </ol>

</ngx-siema-slide> </ngx-siema-slide>
</ngx-siema> </ngx-siema>




+ 28
- 29
src/app/tabs/courses/quiz/quiz.component.scss 查看文件

@@ -47,18 +47,19 @@


.question-status { .question-status {
background-color: var(--ash-black); background-color: var(--ash-black);
padding: 10px 0% 5px;
padding: 10px 0;
display: block; display: block;
width: 100%; width: 100%;
overflow: auto; overflow: auto;
margin-bottom: -10px;
position: relative; position: relative;


.container { .container {
width: 100%; width: 100%;
padding: 0 5%; padding: 0 5%;
white-space: nowrap; white-space: nowrap;
display: inline-block;
display: flex;
flex-wrap: wrap;
align-items: center;
overflow: auto; overflow: auto;
} }


@@ -91,10 +92,7 @@
height: 17px; height: 17px;
background-color: var(--dark-grey); background-color: var(--dark-grey);
color: white; color: white;
align-items: center;
justify-content: center;
display: inline-block;
margin-right: 10px;
margin-right: 7px;
border-radius: 50%; border-radius: 50%;
overflow: hidden; overflow: hidden;
border: 1px solid var(--dark-grey); border: 1px solid var(--dark-grey);
@@ -123,20 +121,25 @@
border-color: var(--light-grey); border-color: var(--light-grey);
background-color: var(--black); background-color: var(--black);


&.wrong {
background-color: var(--danger-dark);
.icon {
fill: var(--black) !important;
&.correct {
background-color: var(--green);

.correct-icon {
fill: var(--black);
} }
} }


&.correct {
background-color: var(--green);
&.wrong {
background-color: var(--danger-dark);


.icon {
fill: var(--black) !important;
.wrong-icon {
fill: var(--black);
} }
} }

.icon {
fill: white;
}
} }


&.correct { &.correct {
@@ -147,7 +150,7 @@
display: none; display: none;
} }


.icon {
.correct-icon {
fill: var(--green); fill: var(--green);
display: block; display: block;
} }
@@ -155,16 +158,14 @@


&.wrong { &.wrong {
border-color: var(--danger-dark); border-color: var(--danger-dark);
background-color: var(--danger-dark);
background-color: white;


label { label {
display: none; display: none;
} }


.icon {
fill: white;
width: 7px;
height: 7px;
.wrong-icon {
fill: var(--danger-dark);
display: block; display: block;
} }
} }
@@ -179,7 +180,7 @@ ngx-siema-slide {
color: white; color: white;
font-size: 13px; font-size: 13px;
background-color: var(--ash-black); background-color: var(--ash-black);
padding: 15px 5%;
padding: 0 5% 15px 5%;
} }


.timer-holder { .timer-holder {
@@ -270,7 +271,7 @@ ngx-siema-slide {
} }
} }


&.correct {
&.correct, &.show-correct {
box-shadow: 0px 0px 5px var(--green); box-shadow: 0px 0px 5px var(--green);
border-color: var(--green); border-color: var(--green);


@@ -282,7 +283,7 @@ ngx-siema-slide {
border-color: var(--green); border-color: var(--green);
background-color: white; background-color: white;


.icon {
.correct-icon {
fill: var(--green); fill: var(--green);
display: block; display: block;
} }
@@ -299,12 +300,10 @@ ngx-siema-slide {


.icon-holder { .icon-holder {
border-color: var(--danger-dark); border-color: var(--danger-dark);
background-color: var(--danger-dark);
background-color: white;


.icon {
fill: white;
width: 10px;
height: 10px;
.wrong-icon {
fill: var(--danger-dark);
display: block; display: block;
} }
} }


+ 80
- 0
src/app/tabs/courses/quiz/quiz.component.ts 查看文件

@@ -25,16 +25,96 @@ export class QuizComponent implements OnInit {
}, },
}; };


selectedQuestionId: number;

questionList = [{
id: 1,
question: 'Which sentence is corrent? "1. Ramu went to School \n 2. School went Ramu"',
userAnswer: 0,
correctAnswer: 1,
options: [{
id: 1,
text: '1 is correct',
}, {
id: 2,
text: '2 is correct',
}, {
id: 3,
text: 'Both are correct',
}, {
id: 4,
text: 'Both are wrong',
}]
}, {
id: 2,
question: 'How much is 16x16 ?',
userAnswer: 0,
correctAnswer: 4,
options: [{
id: 1,
text: '30000',
}, {
id: 2,
text: '540',
}, {
id: 3,
text: '156',
}, {
id: 4,
text: '256',
}]
}, {
id: 3,
question: 'Who is Jackie Chan ?',
userAnswer: 0,
correctAnswer: 2,
options: [{
id: 1,
text: 'Dancer',
}, {
id: 2,
text: 'Actor',
}, {
id: 3,
text: 'Singer',
}, {
id: 4,
text: 'Gambler',
}]
}, {
id: 4,
question: 'Who is Newton ?',
userAnswer: 0,
correctAnswer: 3,
options: [{
id: 1,
text: 'Dancer',
}, {
id: 2,
text: 'Actor',
}, {
id: 3,
text: 'Scientist',
}, {
id: 4,
text: 'Gambler',
}]
}];

constructor( constructor(
private location: Location, private location: Location,
private ngxSiemaService: NgxSiemaService private ngxSiemaService: NgxSiemaService
) { } ) { }


ngOnInit(): void { ngOnInit(): void {
this.selectedQuestionId = this.questionList[0].id;
} }


next() { next() {
this.ngxSiemaService.next(1); this.ngxSiemaService.next(1);
this.ngxSiemaService.currentSlide().subscribe((index) => {
this.selectedQuestionId = this.questionList[index.currentSlide].id;
}).unsubscribe();
} }


back() { back() {