@if (assessmentForm.bFormReady) { } @if (isLoading()) {
Loading assessment...
}
@if (assessmentForm.bFormReady) {
}
@if (mode() === 0) {
QUESTIONS ({{ questions().length }} ADDED)
@for (q of questions(); track q.SlNo; let i = $index) {
Q{{ q.SlNo }} {{ q.QuestionText }}
{{ getQTypeLabel(q.QuestionType) }} {{ q.Marks }} marks
@if (hasOptions(q.QuestionType)) {
@for (opt of q.DisplayOptions; track opt.id; let oi = $index) {
@if (q.QuestionType === 3) { } @else { } @if (q.QuestionType !== 1) { {{ getOptionLetter(oi) }}.  } {{ opt.text }} @if (isCorrectOption(q, opt)) { ✓ Correct }
}
} @if (q.QuestionType === 4) {
@for (pair of q.DisplayPairs; track $index) {
{{ pair.left }} → {{ pair.right }}
}
} @if (q.QuestionType === 5) {
@for (item of q.DisplayOrderItems; track item.id; let oi = $index) {
{{ oi + 1 }}. {{ item.text }}
}
}
}
} @if (mode() === 1) {
Paper Configuration
@if (paperForm.bFormReady) {
}
PAPER SECTIONS ({{ sections().length }} ADDED) Total questions across sections: {{ totalQuestionsAcrossSections() }}
@if (sections().length === 0) {

No sections added yet. Click "+ Add Section" to build your structured paper.

} @for (sec of sections(); track sec.SlNo; let si = $index) {
S{{ sec.SlNo }} {{ sec.SectionTitle }}
{{ sec.QuestionCount }} Qs · {{ sec.MarksPerQuestion }} marks @if (sec.QuestionTypeFilter !== -1) { {{ getTypeFilterLabel(sec.QuestionTypeFilter) }} } @if (sec.DifficultyFilter !== -1) { {{ getDiffLabel(sec.DifficultyFilter) }} }
POOL QUESTIONS ({{ sec.PoolQuestions.length }})
@if (sec.PoolQuestions.length === 0) {
No pool questions added yet.
} @for (pq of sec.PoolQuestions; track pq.SlNo; let qi = $index) {
Q{{ qi + 1 }}
{{ pq.QuestionTitle }} @if (pq.QuestionText) { {{ pq.QuestionText.length > 90 ? pq.QuestionText.slice(0, 90) + '...' : pq.QuestionText }} }
{{ getQTypeLabel(pq.QuestionType) }} {{ pq.Marks }} marks
}
}
}
@if (showQDialog()) {
{{ editingIndex() !== null ? 'Edit Question' : 'Add Assessment Question' }}
@if (questionForm.bFormReady) {
@if (questionTypeSig() === 2) {
Correct Answer
} @else if (questionTypeSig() === 4) {
Matching pairs (left matches right) @for (pair of qMatchPairs(); track $index; let pi = $index) {
→
}
} @else if (questionTypeSig() === 5) {
Items (drag to set the correct order)
@for (item of qOrderItems(); track $index; let oi = $index) {
✥ {{ oi + 1 }}.
}
} @else {
Options (pick correct) @for (opt of qOptions(); track $index; let oi = $index) {
@if (questionTypeSig() !== 1) { }
} @if (questionTypeSig() !== 1) { }
}
} @else { }
} @if (showSDialog()) {
{{ editingSectionIdx() !== null ? 'Edit Section' : 'Add Paper Section' }}
@if (sectionForm.bFormReady) {
} @else {
Loading form...
}
} @if (showPQDialog()) {
{{ editingPQIndex() !== null ? 'Edit Pool Question' : 'Add Pool Question' }}
@if (poolQForm.bFormReady) {
@if (poolQTypeSig() === 2) {
Correct Answer
} @else if (poolQTypeSig() === 4) {
Matching pairs (left matches right) @for (pair of pqMatchPairs(); track $index; let pi = $index) {
→
}
} @else if (poolQTypeSig() === 5) {
Items (drag to set the correct order)
@for (item of pqOrderItems(); track $index; let oi = $index) {
✥ {{ oi + 1 }}.
}
} @else {
Options (pick correct) @for (opt of pqOptions(); track $index; let oi = $index) {
@if (poolQTypeSig() !== 1) { }
} @if (poolQTypeSig() !== 1) { }
}
} @else {
Loading form...
}
} @if (showPreview()) {
Question Paper Preview
{{ assessmentForm.get('AssessmentTitle')?.value || 'Untitled Assessment' }}
Total Marks: {{ assessmentForm.get('TotalMarks')?.value || 0 }} Duration: {{ assessmentForm.get('DurationMins')?.value || 0 }} mins Pass %: {{ assessmentForm.get('PassMarkPct')?.value || 0 }}
@if (mode() === 0) { @if (questions().length === 0) {
No questions added yet.
} @for (q of questions(); track q.SlNo) {
{{ q.SlNo }}. {{ q.QuestionText }} [{{ q.Marks }} marks]
@if (hasOptions(q.QuestionType)) {
@for (opt of q.DisplayOptions; track opt.id; let oi = $index) {
{{ getOptionLetter(oi) }}. {{ opt.text }}
}
} @else if (q.QuestionType === 4) {
@for (pair of q.DisplayPairs; track $index) {
{{ pair.left }} → {{ pair.right }}
}
} @else if (q.QuestionType === 5) {
@for (item of q.DisplayOrderItems; track item.id; let oi = $index) {
{{ oi + 1 }}. {{ item.text }}
}
} @else {
}
} } @if (mode() === 1) { @if (sections().length === 0) {
No sections added yet.
} @for (sec of sections(); track sec.SlNo) {
Section {{ sec.SlNo }}: {{ sec.SectionTitle }} ({{ sec.PoolQuestions.length }} × {{ sec.MarksPerQuestion }} marks)
@if (sec.PoolQuestions.length === 0) {
No questions added to this section yet.
} @for (pq of sec.PoolQuestions; track pq.SlNo) {
{{ pq.SlNo }}. {{ pq.QuestionText }} [{{ pq.Marks }} marks]
@if (hasOptions(pq.QuestionType)) {
@for (opt of pq.DisplayOptions; track opt.id; let oi = $index) {
{{ getOptionLetter(oi) }}. {{ opt.text }}
}
} @else if (pq.QuestionType === 4) {
@for (pair of pq.DisplayPairs; track $index) {
{{ pair.left }} → {{ pair.right }}
}
} @else if (pq.QuestionType === 5) {
@for (item of pq.DisplayOrderItems; track item.id; let oi = $index) {
{{ oi + 1 }}. {{ item.text }}
}
} @else {
}
}
} }
}