mirror of
https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir.git
synced 2025-08-11 21:23:54 -04:00
Compare commits
6 commits
b0d798ec10
...
498d7d2c1c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
498d7d2c1c | ||
|
|
9fbe2920cc | ||
|
|
331ff33d5b | ||
|
|
ee7a7a0544 | ||
|
|
8c57a8759f | ||
|
|
22a2754e31 |
4 changed files with 113 additions and 13 deletions
30
README.fr-ca.md
Normal file
30
README.fr-ca.md
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
[](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/actions/workflows/frontend-deploy.yml)
|
||||||
|
[](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/actions/workflows/backend-deploy.yml)
|
||||||
|
[](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/actions/workflows/deploy.yml)
|
||||||
|
|
||||||
|
|
||||||
|
[](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/blob/master/README.md)
|
||||||
|
|
||||||
|
# EvalueTonSavoir
|
||||||
|
|
||||||
|
EvalueTonSavoir est une plateforme open source et auto-hébergée qui poursuit le développement du code provenant de https://github.com/ETS-PFE004-Plateforme-sondage-minitest. Cette plateforme minimaliste est conçue comme un outil d'apprentissage et d'enseignement, offrant une solution simple et efficace pour la création de quiz utilisant le format GIFT, similaire à Moodle.
|
||||||
|
|
||||||
|
## Fonctionnalités clés
|
||||||
|
|
||||||
|
* Open Source et Auto-hébergé : Possédez et contrôlez vos données en déployant la plateforme sur votre propre infrastructure.
|
||||||
|
* Compatibilité GIFT : Créez des quiz facilement en utilisant le format GIFT, permettant une intégration transparente avec d'autres systèmes d'apprentissage.
|
||||||
|
* Minimaliste et Efficace : Une approche bare bones pour garantir la simplicité et la facilité d'utilisation, mettant l'accent sur l'essentiel de l'apprentissage.
|
||||||
|
|
||||||
|
## Contribution
|
||||||
|
|
||||||
|
Actuellement, il n'y a pas de modèle établi pour les contributions. Si vous constatez quelque chose de manquant ou si vous pensez qu'une amélioration est possible, n'hésitez pas à ouvrir un issue et/ou une PR)
|
||||||
|
|
||||||
|
## Liens utiles
|
||||||
|
|
||||||
|
* [Dépôt d'origine Frontend](https://github.com/ETS-PFE004-Plateforme-sondage-minitest/ETS-PFE004-EvalueTonSavoir-Frontend)
|
||||||
|
* [Dépôt d'origine Backend](https://github.com/ETS-PFE004-Plateforme-sondage-minitest/ETS-PFE004-EvalueTonSavoir-Backend)
|
||||||
|
* [Documentation (Wiki)](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/wiki)
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
EvalueTonSavoir is open-sourced and licensed under the [MIT License](/LICENSE).
|
||||||
22
README.md
22
README.md
|
|
@ -2,24 +2,26 @@
|
||||||
[](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/actions/workflows/backend-deploy.yml)
|
[](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/actions/workflows/backend-deploy.yml)
|
||||||
[](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/actions/workflows/deploy.yml)
|
[](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/actions/workflows/deploy.yml)
|
||||||
|
|
||||||
# EvalueTonSavoir
|
[](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/blob/main/README.fr-ca.md)
|
||||||
|
|
||||||
EvalueTonSavoir est une plateforme open source et auto-hébergée qui poursuit le développement du code provenant de https://github.com/ETS-PFE004-Plateforme-sondage-minitest. Cette plateforme minimaliste est conçue comme un outil d'apprentissage et d'enseignement, offrant une solution simple et efficace pour la création de quiz utilisant le format GIFT, similaire à Moodle.
|
# EvalueTonSavoir
|
||||||
|
|
||||||
## Fonctionnalités clés
|
EvalueTonSavoir is an open-source and self-hosted platform that continues the development of the code from https://github.com/ETS-PFE004-Plateforme-sondage-minitest. This minimalist platform is designed as a learning and teaching tool, offering a simple and effective solution for creating quizzes using the GIFT format, similar to Moodle.
|
||||||
|
|
||||||
* Open Source et Auto-hébergé : Possédez et contrôlez vos données en déployant la plateforme sur votre propre infrastructure.
|
## Key Features
|
||||||
* Compatibilité GIFT : Créez des quiz facilement en utilisant le format GIFT, permettant une intégration transparente avec d'autres systèmes d'apprentissage.
|
|
||||||
* Minimaliste et Efficace : Une approche bare bones pour garantir la simplicité et la facilité d'utilisation, mettant l'accent sur l'essentiel de l'apprentissage.
|
* **Open Source and Self-Hosted**: Own and control your data by deploying the platform on your own infrastructure.
|
||||||
|
* **GIFT Compatibility**: Easily create quizzes using the GIFT format, enabling seamless integration with other learning systems.
|
||||||
|
* **Minimalist and Efficient**: A bare-bones approach to ensure simplicity and ease of use, focusing on the essentials of learning.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
|
|
||||||
Actuellement, il n'y a pas de modèle établi pour les contributions. Si vous constatez quelque chose de manquant ou si vous pensez qu'une amélioration est possible, n'hésitez pas à ouvrir un issue et/ou une PR)
|
Currently, there is no established model for contributions. If you notice something missing or think an improvement is possible, feel free to open an issue and/or a PR.
|
||||||
|
|
||||||
## Liens utiles
|
## Useful Links
|
||||||
|
|
||||||
* [Dépôt d'origine Frontend](https://github.com/ETS-PFE004-Plateforme-sondage-minitest/ETS-PFE004-EvalueTonSavoir-Frontend)
|
* [Original Frontend Repository](https://github.com/ETS-PFE004-Plateforme-sondage-minitest/ETS-PFE004-EvalueTonSavoir-Frontend)
|
||||||
* [Dépôt d'origine Backend](https://github.com/ETS-PFE004-Plateforme-sondage-minitest/ETS-PFE004-EvalueTonSavoir-Backend)
|
* [Original Backend Repository](https://github.com/ETS-PFE004-Plateforme-sondage-minitest/ETS-PFE004-EvalueTonSavoir-Backend)
|
||||||
* [Documentation (Wiki)](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/wiki)
|
* [Documentation (Wiki)](https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir/wiki)
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ describe('LiveResults', () => {
|
||||||
expect(classAverageElement).toBeInTheDocument();
|
expect(classAverageElement).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('displays the correct answers per question', () => {
|
test('displays the correct answers per question in %', () => {
|
||||||
render(
|
render(
|
||||||
<LiveResults
|
<LiveResults
|
||||||
socket={mockSocket}
|
socket={mockSocket}
|
||||||
|
|
@ -175,4 +175,67 @@ describe('LiveResults', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('displays the submitted answer(s) in a question cell', () => {
|
||||||
|
render(
|
||||||
|
<LiveResults
|
||||||
|
socket={mockSocket}
|
||||||
|
questions={mockQuestions}
|
||||||
|
showSelectedQuestion={jest.fn()}
|
||||||
|
quizMode="teacher"
|
||||||
|
students={mockStudents}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
// Show answers should be enabled
|
||||||
|
const showAnswersSwitch = screen.getByLabelText('Afficher les réponses');
|
||||||
|
// Toggle the display of answers is it's not already enabled
|
||||||
|
if (!(showAnswersSwitch as HTMLInputElement).checked) {
|
||||||
|
fireEvent.click(showAnswersSwitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
mockStudents.forEach((student) => {
|
||||||
|
student.answers.forEach((answer) => {
|
||||||
|
const chosenAnswerElements = screen.getAllByText(answer.answer.join(', '));
|
||||||
|
const chosenAnswerElement = chosenAnswerElements.find((element) => {
|
||||||
|
return element.closest('td')?.classList.contains('MuiTableCell-root');
|
||||||
|
});
|
||||||
|
expect(chosenAnswerElement).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('highlights the cell of the selected question', () => {
|
||||||
|
render(
|
||||||
|
<LiveResults
|
||||||
|
socket={mockSocket}
|
||||||
|
questions={mockQuestions}
|
||||||
|
showSelectedQuestion={jest.fn()}
|
||||||
|
quizMode="teacher"
|
||||||
|
students={mockStudents}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
// Select the first question
|
||||||
|
const questionCell = screen.getByText(`Q${1}`);
|
||||||
|
fireEvent.click(questionCell);
|
||||||
|
|
||||||
|
// Check if the selected question is highlighted
|
||||||
|
expect(questionCell.closest('th')?.classList.contains('selected-question')).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Show answers should be enabled by default', () => {
|
||||||
|
render(
|
||||||
|
<LiveResults
|
||||||
|
socket={mockSocket}
|
||||||
|
questions={mockQuestions}
|
||||||
|
showSelectedQuestion={jest.fn()}
|
||||||
|
quizMode="teacher"
|
||||||
|
students={mockStudents}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
const showAnswersSwitch = screen.getByLabelText('Afficher les réponses');
|
||||||
|
expect((showAnswersSwitch as HTMLInputElement).checked).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,11 @@ const LiveResultsTableFooter: React.FC<LiveResultsFooterProps> = ({
|
||||||
const answer = student.answers.find(
|
const answer = student.answers.find(
|
||||||
(answer) => parseInt(answer.idQuestion.toString()) === index + 1
|
(answer) => parseInt(answer.idQuestion.toString()) === index + 1
|
||||||
);
|
);
|
||||||
const answerText = answer ? answer.answer.toString() : '';
|
const answerText = answer
|
||||||
|
? Array.isArray(answer.answer)
|
||||||
|
? answer.answer.join(', ') // Join array elements with a space or another delimiter
|
||||||
|
: "" // never reached
|
||||||
|
: '';
|
||||||
const isCorrect = answer ? answer.isCorrect : false;
|
const isCorrect = answer ? answer.isCorrect : false;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -63,6 +67,7 @@ const LiveResultsTableFooter: React.FC<LiveResultsFooterProps> = ({
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{showCorrectAnswers ? (
|
{showCorrectAnswers ? (
|
||||||
|
// strips out formatting of answer text here (it will break images, katex, etc.)
|
||||||
<div dangerouslySetInnerHTML={{ __html: FormattedTextTemplate({ format: '', text: answerText }) }}></div>
|
<div dangerouslySetInnerHTML={{ __html: FormattedTextTemplate({ format: '', text: answerText }) }}></div>
|
||||||
) : isCorrect ? (
|
) : isCorrect ? (
|
||||||
<FontAwesomeIcon icon={faCheck} aria-label="correct" />
|
<FontAwesomeIcon icon={faCheck} aria-label="correct" />
|
||||||
|
|
@ -91,4 +96,4 @@ const LiveResultsTableFooter: React.FC<LiveResultsFooterProps> = ({
|
||||||
</TableBody>
|
</TableBody>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
export default LiveResultsTableFooter;
|
export default LiveResultsTableFooter;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue