amélioration interface borne

This commit is contained in:
Quentin Roussel
2023-03-23 00:01:03 +01:00
parent 7284494283
commit 82171ca6fc
8 changed files with 88 additions and 26 deletions

View File

@@ -68,8 +68,6 @@ class HandDetector():
thumbsUpCount = sum(map(lambda x : x == "thumbs_up", self.resultBuffer))
thumbsDownCount = sum(map(lambda x : x == "thumbs_down", self.resultBuffer))
print(thumbsUpCount,thumbsDownCount)
if(thumbsUpCount > self.DETECTION_THRESHOLD * self.BUFFER_LENGTH):
result = "thumbs_up"
elif(thumbsDownCount > self.DETECTION_THRESHOLD * self.BUFFER_LENGTH):

View File

@@ -2,6 +2,7 @@ from hand_detector import HandDetector
from network import WebsocketServer
import time
#Classe qui coordonne les différents modules et qui s'occupe de construire l'avis au fur et a mesure
class Manager():
def __init__(self):
self.state = 0
@@ -15,6 +16,7 @@ class Manager():
self.handDetector = HandDetector()
print("Backend ready")
#Boucle principale
def loop(self):
while(True):
if(self.state == 0):
@@ -24,12 +26,14 @@ class Manager():
time.sleep(0.01)
#Fonction qui est executée pendant que la borne est en veille, reveille la borne si une main est detectée
def sleep(self):
res = self.handDetector.detect()
if(res != False):
self.state = 1
self.server.sendMessage({"type": "state", "state": 1})
#Envoie la position de la main a l'écran et passe a l'étape suivante si une main est detectée pendant assez longtemps
def camera(self):
res = self.handDetector.detect()
if(res != False):

View File

@@ -70,8 +70,16 @@ services:
- ./interface_admin/out:/usr/local/apache2/htdocs/
container_name: interface_admin
ports:
- 80:80
- 800:80
#Formulaire de retour d'avis
Formulaire:
image: httpd:latest
volumes:
- ./Formulaire:/usr/local/apache2/htdocs/
container_name: Formulaire
ports:
- 80:80
# #Backend de la borne : scripts pythons de reconnaissances video et audio
# #Envoient les infos a l'interface de la borne par websocket pour mettre a jour l'interface rapidement
# #Met a jour les avis en faisant des requêtes a l'API

View File

@@ -1,3 +1,7 @@
* {
font-family: Arial, Helvetica, sans-serif;
}
html, body {
margin: 0;
height: 100%;
@@ -25,3 +29,23 @@ html, body {
#camera > canvas {
z-index: 1;
}
.instructions {
width: max-content;
height: 300px;
margin: auto;
background: #A6CC00;
padding: 20px;
border-radius: 10px;
border: 3px #6B8000 solid;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
text-align: center;
}
.instructions > .title {
border-bottom: 3px #6B8000 solid;
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -1,5 +1,5 @@
class WebsocketClient {
constructor(onNewEffects, onNewState) {
constructor(onNewEffects, onNewGrade, onNewState) {
this.socket = new WebSocket("ws://localhost:5000");
this.socket.addEventListener("open", (event) => {
this.socket.send("connected");

View File

@@ -25,8 +25,6 @@ class StateManager {
this._cameraPage.enabled = false;
this._audioPage.enabled = false;
this._thankYouPage.enabled = false;
//TODO: Remove qd implémenté dans le backend
document.getElementById("sleeping-page-continue").onclick = () => this.setState(STATE.video);
}
setState(newState) {

View File

@@ -14,28 +14,55 @@
</head>
<body>
<div id="sleeping-page" class="page">
<h1>Venez donner votre avis</h1>
<!-- Boutton pour test -->
<button id="sleeping-page-continue">Continuer</button>
<div id="sleeping-page" class="page">
<div class="instructions">
<div class="title">
<h1>Votre avis nous intéresse</h1>
</div>
<span>Faites un</span>
<img width=50 src="assets/img/thumbs_up.png">
<span>ou un</span>
<img width=50 src="assets/img/thumbs_down.png">
<span> avec votre main pour commencer</span>
</div>
<div id="camera">
<canvas id="overlay-canvas"></canvas>
<video id="camera-video"></video>
</div>
<div id="camera">
<canvas id="overlay-canvas"></canvas>
<video id="camera-video"></video>
</div>
<div id="audio">
<div class="instructions">
<div class="title">
<h1>Enregistrement audio blabal</h1>
</div>
<p>Prononcez à voix haute les notes correspondant aux critères suivants dans l'ordre</p>
<table>
<tr>
<th>Critère</td>
<th>Note / 10</td>
</tr>
<tr>
<td>Calme</td>
<td> /10</td>
</tr>
</table>
</div>
<div id="audio">
<h1>Enregistrement audio blabal</h1>
</div>
<div id="thank-you">
<div class="instructions">
<div class="title">
<h1>Merci pour votre avis</h1>
</div>
<span>Nous esperons vous revoir bientôt</span>
</div>
<div id="thank-you">
<h1>Merci pour votre avis !!!!!!!!!!</h1>
</div>
<script src="assets/js/camera_page.js"></script>
<script src="assets/js/network.js"></script>
<script src="assets/js/thank_you_page.js"></script>
<script src="assets/js/audio_page.js"></script>
<script src="assets/js/sleeping_page.js"></script>
<script src="assets/js/state_manager.js"></script>
<script src="assets/js/main.js"></script>
</div>
<script src="assets/js/camera_page.js"></script>
<script src="assets/js/network.js"></script>
<script src="assets/js/thank_you_page.js"></script>
<script src="assets/js/audio_page.js"></script>
<script src="assets/js/sleeping_page.js"></script>
<script src="assets/js/state_manager.js"></script>
<script src="assets/js/main.js"></script>
</body>
</html>