completed the survey questions
This commit is contained in:
parent
077a1b6cdd
commit
b727a3a9d6
4 changed files with 115 additions and 26 deletions
|
@ -3,7 +3,7 @@
|
||||||
This is a small engine for the survey created for one of our master projet.
|
This is a small engine for the survey created for one of our master projet.
|
||||||
It allows for a small survey embedding a web page to track the user input allowing for metrics collection.
|
It allows for a small survey embedding a web page to track the user input allowing for metrics collection.
|
||||||
This run with the [PyQt6](https://www.riverbankcomputing.com/software/pyqt/) and
|
This run with the [PyQt6](https://www.riverbankcomputing.com/software/pyqt/) and
|
||||||
[PyQt6-WebEngine](https://www.riverbankcomputing.com/software/pyqtwebengine/) librairie.
|
[PyQt6-WebEngine](https://www.riverbankcomputing.com/software/pyqtwebengine/) librairies.
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,8 @@ class WebMission(BaseSurvey):
|
||||||
# events
|
# events
|
||||||
|
|
||||||
def eventFilter(self, obj: QObject, event: QEvent) -> bool:
|
def eventFilter(self, obj: QObject, event: QEvent) -> bool:
|
||||||
|
# TODO: scroll ?
|
||||||
|
|
||||||
if obj is self.browser.web.focusProxy() and not self._finished:
|
if obj is self.browser.web.focusProxy() and not self._finished:
|
||||||
# if the object is the content of the web engine widget
|
# if the object is the content of the web engine widget
|
||||||
match event.type():
|
match event.type():
|
||||||
|
|
|
@ -69,6 +69,9 @@ class FrameSurvey(QFrame):
|
||||||
# progress bar
|
# progress bar
|
||||||
self.progress = QProgressBar()
|
self.progress = QProgressBar()
|
||||||
self._layout.addWidget(self.progress)
|
self._layout.addWidget(self.progress)
|
||||||
|
self.progress.setStyleSheet("QProgressBar::chunk { background-color: #03A9FC; }")
|
||||||
|
self.progress.setTextVisible(False)
|
||||||
|
self.progress.setFixedHeight(8)
|
||||||
|
|
||||||
# load the survey configuration file
|
# load the survey configuration file
|
||||||
self.load_file(survey_path)
|
self.load_file(survey_path)
|
||||||
|
@ -111,8 +114,6 @@ class FrameSurvey(QFrame):
|
||||||
|
|
||||||
# update the progress bar
|
# update the progress bar
|
||||||
self.progress.setMaximum(len(surveys_data["surveys"]))
|
self.progress.setMaximum(len(surveys_data["surveys"]))
|
||||||
self.progress.setTextVisible(False)
|
|
||||||
self.progress.setFixedHeight(8)
|
|
||||||
|
|
||||||
def next_survey(self):
|
def next_survey(self):
|
||||||
# get the collected data from the survey
|
# get the collected data from the survey
|
||||||
|
|
132
surveys.json
132
surveys.json
|
@ -1,14 +1,20 @@
|
||||||
{
|
{
|
||||||
"surveys": {
|
"surveys": {
|
||||||
|
|
||||||
"welcome": {
|
"text-welcome": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"title": "Bienvenue !",
|
"title": "Bienvenue dans nôtre enquête !",
|
||||||
"description": "Salut ...",
|
"description": "Nous somme des étudiants en Informatique à l'UPJV.\nNous réalisons une étude sur l'ergonomie des interfaces graphique.\nCette étude concerne la plateforme de jeu vidéo \"Steam\"."
|
||||||
|
},
|
||||||
|
|
||||||
|
"text-data-collection": {
|
||||||
|
"type": "text",
|
||||||
|
"title": "Collection des données",
|
||||||
|
"description": "Notre étude demande de collecter des données comme vos mouvements de souris et votre clavier lorsque vous naviguerez sur cette application.\nAucune autre donnée ne sera collecté en dehors de cette application.\nCes données sont anonyme et ne seront destiné exclusivement qu'à notre recherche.\nSi vous ne souhaitez pas continuer ce questionnaire, appuyez sur \"Abandonner\"",
|
||||||
"abandonable": true
|
"abandonable": true
|
||||||
},
|
},
|
||||||
|
|
||||||
"age": {
|
"question-age": {
|
||||||
"type": "question-integer",
|
"type": "question-integer",
|
||||||
"title": "Quel est votre âge ?",
|
"title": "Quel est votre âge ?",
|
||||||
"default": 30,
|
"default": 30,
|
||||||
|
@ -16,7 +22,7 @@
|
||||||
"maximum": 150
|
"maximum": 150
|
||||||
},
|
},
|
||||||
|
|
||||||
"usage-steam": {
|
"question-usage-steam": {
|
||||||
"type": "question-single-choice",
|
"type": "question-single-choice",
|
||||||
"title": "Utilisez-vous Steam ?",
|
"title": "Utilisez-vous Steam ?",
|
||||||
"choices": {
|
"choices": {
|
||||||
|
@ -28,7 +34,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"usage-concurrent": {
|
"question-usage-concurrent": {
|
||||||
"type": "question-multiple-choice",
|
"type": "question-multiple-choice",
|
||||||
"title": "Quel autre plateforme de jeu en ligne utilisez-vous ?",
|
"title": "Quel autre plateforme de jeu en ligne utilisez-vous ?",
|
||||||
"choices": {
|
"choices": {
|
||||||
|
@ -43,7 +49,7 @@
|
||||||
"details_choice_text": "Autre"
|
"details_choice_text": "Autre"
|
||||||
},
|
},
|
||||||
|
|
||||||
"difficulty-before": {
|
"question-difficulty-before": {
|
||||||
"type": "question-single-choice",
|
"type": "question-single-choice",
|
||||||
"title": "Avez-vous déjà rencontré des difficultés particulières lors de votre utilisation de Steam ?",
|
"title": "Avez-vous déjà rencontré des difficultés particulières lors de votre utilisation de Steam ?",
|
||||||
"choices": {
|
"choices": {
|
||||||
|
@ -57,34 +63,92 @@
|
||||||
"mission-explanation": {
|
"mission-explanation": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"title": "Explication de l'Evaluation",
|
"title": "Explication de l'Evaluation",
|
||||||
"description": "Vous allez devoir naviguer dans steam ..."
|
"description": "Nous allons vous demander de naviguer dans Steam.\nUn message en haut vous indiquera une tâche à réaliser dans la plateforme.\n\nSi la tâche vous semble trop difficile, un bouton pour passer la tâche\ns'affichera au bout d'un certain temps en bas à droite.\n\nRappel : Votre clavier et votre souris sont enregistré.\nNe tapez aucune information personnel dans l'écran qui va suivre !"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
"mission-language": {
|
"mission-language": {
|
||||||
"type": "mission-web",
|
"type": "mission-web",
|
||||||
"title": "Changer la langue en français.",
|
"title": "Changer la langue en français.",
|
||||||
"url": "https://steampowered.com/",
|
"url": "https://store.steampowered.com/",
|
||||||
"check": "document.getElementsByTagName('html')[0].lang == 'fr'",
|
"check": "document.getElementsByTagName('html')[0].lang == 'fr'",
|
||||||
"skip_time": 60
|
"skip_time": 60
|
||||||
},
|
},
|
||||||
|
|
||||||
"question-experience": {
|
"mission-price": {
|
||||||
"type": "question-text",
|
"type": "mission-web",
|
||||||
"title": "Qu'avez vous pensé de l'interface de Steam ?"
|
"title": "Afficher tous les jeux coutant moins de 20€.",
|
||||||
|
"url": "https://store.steampowered.com/",
|
||||||
|
"check": "document.getElementById('maxprice_input').value == '20'",
|
||||||
|
"skip_time": 90
|
||||||
},
|
},
|
||||||
|
|
||||||
"difficulty-after": {
|
"mission-community-hub": {
|
||||||
"type": "question-single-choice",
|
"type": "mission-web",
|
||||||
"title": "Avez-vous rencontré des difficultés particulières lors de ce test ?",
|
"title": "Rendez-vous sur le Hub de la Communauté du jeu \",Stray\".",
|
||||||
"choices": {
|
"url": "https://store.steampowered.com/",
|
||||||
"no": "Non"
|
"check": "document.documentURI == 'https://steamcommunity.com/app/1332010'",
|
||||||
},
|
"skip_time": 90
|
||||||
"details_choice_enabled": true,
|
|
||||||
"details_choice_id": "yes",
|
|
||||||
"details_choice_text": "Oui"
|
|
||||||
},
|
},
|
||||||
|
|
||||||
"hardest-mission": {
|
"mission-game-page": {
|
||||||
|
"type": "mission-web",
|
||||||
|
"title": "Rendez-vous sur la page du jeu \"Outer Wilds\".",
|
||||||
|
"url": "https://store.steampowered.com/",
|
||||||
|
"check": "document.documentURI == 'https://store.steampowered.com/app/753640/Outer_Wilds/'",
|
||||||
|
"skip_time": 90
|
||||||
|
},
|
||||||
|
|
||||||
|
"mission-game-dlc": {
|
||||||
|
"type": "mission-web",
|
||||||
|
"title": "Rendez-vous sur la page du contenu additionnel \"Echoes of the Eye\" du jeu \"Outer Wilds\".",
|
||||||
|
"url": "https://store.steampowered.com/app/753640/Outer_Wilds/",
|
||||||
|
"check": "document.documentURI == 'https://store.steampowered.com/app/1622100/Outer_Wilds__Echoes_of_the_Eye/'",
|
||||||
|
"skip_time": 90
|
||||||
|
},
|
||||||
|
|
||||||
|
"mission-actuality-new": {
|
||||||
|
"type": "mission-web",
|
||||||
|
"title": "Aller sur la page des Actualités \"À la une\".",
|
||||||
|
"url": "https://store.steampowered.com/",
|
||||||
|
"check": "document.documentURI == 'https://store.steampowered.com/news/collection/featured/'",
|
||||||
|
"skip_time": 120
|
||||||
|
},
|
||||||
|
|
||||||
|
"mission-profile": {
|
||||||
|
"type": "mission-web",
|
||||||
|
"title": "Trouver la page de profil de \"Faraphel\".",
|
||||||
|
"url": "https://store.steampowered.com/",
|
||||||
|
"check": "document.documentURI == 'https://steamcommunity.com/id/Faraphel'",
|
||||||
|
"skip_time": 240
|
||||||
|
},
|
||||||
|
|
||||||
|
"mission-game-discussion": {
|
||||||
|
"type": "mission-web",
|
||||||
|
"title": "Trouver la page de Discussions du jeu \"Sid Meier's Civilization V\".",
|
||||||
|
"url": "https://store.steampowered.com/",
|
||||||
|
"check": "document.documentURI == 'https://steamcommunity.com/app/8930/discussions/'",
|
||||||
|
"skip_time": 180
|
||||||
|
},
|
||||||
|
|
||||||
|
"mission-gift-card": {
|
||||||
|
"type": "mission-web",
|
||||||
|
"title": "Trouver la page des cartes-cadeaux.",
|
||||||
|
"url": "https://store.steampowered.com/",
|
||||||
|
"check": "document.documentURI == 'https://store.steampowered.com/digitalgiftcards'",
|
||||||
|
"skip_time": 240
|
||||||
|
},
|
||||||
|
|
||||||
|
"mission-workshop": {
|
||||||
|
"type": "mission-web",
|
||||||
|
"title": "Trouver la page de communauté de la modification \"Animated Hair\" du jeu \"Terraria\" sur le Workshop.",
|
||||||
|
"url": "https://store.steampowered.com/",
|
||||||
|
"check": "publishedfileid == '2871109853'",
|
||||||
|
"skip_time": 240
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
"question-hardest-mission": {
|
||||||
"type": "question-single-choice",
|
"type": "question-single-choice",
|
||||||
"title": "Parmi les tâches, laquelle avez-vous trouvée la plus difficile ?",
|
"title": "Parmi les tâches, laquelle avez-vous trouvée la plus difficile ?",
|
||||||
"choices": {
|
"choices": {
|
||||||
|
@ -92,9 +156,31 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"comment": {
|
"question-experience": {
|
||||||
|
"type": "question-single-choice",
|
||||||
|
"title": "Avez-vous trouvé l'interface de Steam ergonomique ?",
|
||||||
|
"choices": {
|
||||||
|
"yes": "Oui",
|
||||||
|
"mixed": "Mitigé",
|
||||||
|
"no": "Non"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"question-experience-details": {
|
||||||
|
"type": "question-text",
|
||||||
|
"title": "Qu'avez-vous pensé de l'ergonomie de Steam ?"
|
||||||
|
},
|
||||||
|
|
||||||
|
"question-comment": {
|
||||||
"type": "question-text",
|
"type": "question-text",
|
||||||
"title": "Vous pouvez laisser un commentaire sur votre ressenti général (optionnel)"
|
"title": "Vous pouvez laisser un commentaire sur votre ressenti général (optionnel)"
|
||||||
|
},
|
||||||
|
|
||||||
|
"text-thanking": {
|
||||||
|
"type": "text",
|
||||||
|
"title": "Remerciement",
|
||||||
|
"description": "Nous vous remercions grandement pour votre contribution à notre questionnaire et pour votre temps.\n\nVos données collectées sont situés dans le dossier \"result\".",
|
||||||
|
"abandonable": true
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue