Files
classroomio/src/lib/mocks/index.ts
T

52 lines
1.5 KiB
TypeScript
Raw Normal View History

2023-10-04 08:18:33 +01:00
import { HTML_IDS, HTML_TEMPLATES } from './html';
import { CSS_IDS, CSS_TEMPLATES } from './css';
import { calculateTotalPoints, shuffleOptions } from './utils';
import type { ExerciseTemplate } from '$lib/utils/types';
import { JS_IDS, JS_TEMPLATES } from './js';
import { REACT_IDS, REACT_TEMPLATES } from './react';
2023-10-09 16:21:26 +00:00
import { TS_IDS, TS_TEMPLATES } from './typescript';
2023-10-04 08:18:33 +01:00
export const TAGS = {
HTML: 'HTML',
CSS: 'CSS',
JS: 'JS',
Typescript: 'Typescript',
ReactJS: 'ReactJS',
VueJS: 'VueJS'
};
function generateTemplateForTag(
keys: { [key: string]: string },
templates: {
[x: string]: ExerciseTemplate;
}
) {
const template = [];
for (const key in keys) {
const id = keys[key];
templates[id].questionnaire.questions = templates[id].questionnaire.questions.map((q) => {
q.options = shuffleOptions(q.options);
return q;
});
template.push({
id,
title: templates[id].title,
questions: templates[id].questionnaire.questions.length,
points: calculateTotalPoints(templates[id]),
data: templates[id]
});
}
return template;
}
2023-10-04 08:18:33 +01:00
export const TEMPLATES = {
[TAGS.HTML]: generateTemplateForTag(HTML_IDS, HTML_TEMPLATES),
[TAGS.CSS]: generateTemplateForTag(CSS_IDS, CSS_TEMPLATES),
[TAGS.JS]: generateTemplateForTag(JS_IDS, JS_TEMPLATES),
2023-10-09 16:21:26 +00:00
[TAGS.Typescript]: generateTemplateForTag(TS_IDS, TS_TEMPLATES),
[TAGS.ReactJS]: generateTemplateForTag(REACT_IDS, REACT_TEMPLATES),
2023-10-04 08:18:33 +01:00
[TAGS.VueJS]: []
};