From c3c34392f76f2d9719b5fbe6cac528412a03f923 Mon Sep 17 00:00:00 2001
From: v4nkor <vanknpix@gmail.com>
Date: Mon, 15 May 2023 15:27:07 +0200
Subject: [PATCH] Added WIP scrolling + working random recipe

---
 js/voice.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 71 insertions(+), 3 deletions(-)

diff --git a/js/voice.js b/js/voice.js
index 28159dc..8232b1a 100644
--- a/js/voice.js
+++ b/js/voice.js
@@ -89,7 +89,7 @@ function listenForCristo(){
         console.log('Listened');
         var speechResult = event.results[0][0].transcript.toLowerCase();
         console.log(speechResult);
-        heardSpan.innerText += " A entendu = " + speechResult;
+        heardSpan.innerText = " A entendu = " + speechResult;
         heardSpan.style.display = "";
         voiceSpan.style.display = "none";
         console.log('Confidence: ' + event.results[0][0].confidence);
@@ -112,7 +112,7 @@ function listenForCristo(){
         voiceBtn.textContent = 'Ecouter a nouveau';
         diagnosticPara.textContent = 'Error occurred in recognition: ' + event.error;
         voiceSpan.style.display = "none";
-        heardSpan.innerText += " Erreur ";
+        heardSpan.innerText = " Erreur ";
         heardSpan.style.display = "";
     }
     recognition.onaudiostart = function(event) {
@@ -166,15 +166,17 @@ function listenForCommand(){
         console.log('Listened');
         var speechResult = event.results[0][0].transcript.toLowerCase();
         console.log(speechResult);
-        heardSpan.innerText += " A entendu = " + speechResult;
+        heardSpan.innerText = " A entendu = " + speechResult;
         heardSpan.style.display = "";
         voiceSpan.style.display = "none";
         console.log('Confidence: ' + event.results[0][0].confidence);
         if(speechResult.toLowerCase().includes("descend")){
             speak("Je vais descendre dans la page");
+            pageScrollDown();
         }
         else if(speechResult.toLowerCase().includes("monte")){
             speak("Je vais monter dans la page");
+            pageScrollUp();
         }
         else if(speechResult.toLowerCase().includes("recette")){
             if(speechResult.toLowerCase().includes("précédente")){
@@ -185,6 +187,7 @@ function listenForCommand(){
             }
             else if(speechResult.toLowerCase().includes("aléatoire")){
                 speak("Voici une recette aleatoire");
+                recetteAleatoire();
             }
         }
         else {
@@ -238,6 +241,39 @@ function listenForCommand(){
     }
 }
 
+function listenForStop(){
+    var grammar = '#JSGF V1.0; grammar phrase; public <phrase> = stop | arrete;';
+    var recognition = new SpeechRecognition();
+    var speechRecognitionList = new SpeechGrammarList();
+    speechRecognitionList.addFromString(grammar, 1);
+    recognition.grammars = speechRecognitionList;
+    recognition.lang = 'fr-FR';
+    recognition.interimResults = false;
+    recognition.maxAlternatives = 1;
+    recognition.start();
+    console.log('Started first listening');
+    recognition.onresult = function(event) {
+        console.log('Listened');
+        var speechResult = event.results[0][0].transcript.toLowerCase();
+        console.log(speechResult);
+        heardSpan.innerText += " A entendu = " + speechResult;
+        heardSpan.style.display = "";
+        voiceSpan.style.display = "none";
+        console.log('Confidence: ' + event.results[0][0].confidence);
+        if(speechResult.toLowerCase().includes("stop")){
+            speak("Je vais arreter de descendre dans la page");
+            return true;
+        }
+        else if(speechResult.toLowerCase().includes("arrete")){
+            speak("Je vais arreter de descendre dans la page");
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
+}
+
 function speak(text){
     if (synth.speaking) {
         console.error("speechSynthesis.speaking");
@@ -271,6 +307,38 @@ function enableBtn(){
     voiceSpan.style.display = "none";
 }
 
+function pageScrollDown() {
+    window.scrollBy(0,1);
+    if ((window.innerHeight + Math.round(window.scrollY)) >= document.body.offsetHeight) {
+        speak("Bas de page atteind, j'arrete de descendre");
+    }
+    else{
+        scrolldelay = setTimeout(pageScrollDown,5);
+    }
+}
+
+function pageScrollUp() {
+    window.scrollBy(0,-1);
+    if ((window.innerHeight + Math.round(window.scrollY)) <= document.body.offsetHeight) {
+        speak("Haut de page atteind, j'arrete de monter");
+    }
+    else{
+        scrolldelay = setTimeout(pageScrollUp,5);
+    }
+}
+
+function getRandomInt(max) {
+    return Math.floor(Math.random() * max);
+  }
+
+function recetteAleatoire(){
+    let recettes = ["cookie-au-chocolat", "soupe-au-potiron", "pain-perdu", "quiche-lorraine"]
+    let number = getRandomInt(recettes.length);
+    url = window.location;
+    window.location.href = url.origin+'/recette/'+recettes[number];
+
+}
+
 function scrollDown(){
     
 }
-- 
GitLab