# timOhjeet
const inRowTranslations = {
  fi: {
      onlyNewText: "Vain uudet tehtävät lasketaan",
      taskReadyText: "Tehtävä on valmis muita vastauksia ei enää lasketa!",
      greatText: "Hienoa! Sait tehtävän suoritettua.",
      oneMoreNeededText: "Vielä tarvitaan yksi oikea vastaus tähän perään.",
      moreNeededText: "Vielä tarvitaan {stillNeeded} oikeata vastausta tähän perään.",
      pressNewRoundText: "Paina 'Uusi kierros' painiketta.",
      correctText: "Oikein!",
      wrongText: "Pieleen meni!",
      totallyNeededText: "Tarvitset {needed} oikeata vastausta peräkkäin.",
  },
  en: {
      onlyNewText: "Only new tasks will be counted",
      taskReadyText: "The task is complete, no other answers will be counted!",
      greatText: "Great! You've completed the task.",
      oneMoreNeededText: "One more correct answer is needed to follow this up.",
      moreNeededText: "Still need {stillNeeded} correct answer after this one.",
      pressNewRoundText: "Press the 'New round' button.",
      correctText: "Correct!",
      wrongText: "Not so good!",
      totallyNeededText: "You need {needed} correct answers in a row."
  },
  
}

function rep(text, params) {
    for (const [param, value] of Object.entries(params)) {
        text = text.replace(`{${param}}`, value);
    }
    return text;
}


// Check if user has needed number of correct answers in row.
// correct is if current answer is correct
// If has, then give points nr of points.  Else give 0 points.
// This function is called from TIM plugins postprogram and it changes values in data.
function checkCorrectAnswersInRow(data, correct, needed, points, lang, lf="<br>") {
    let s = inRowTranslations[lang];
    if (!s) s = inRowTranslations["en"];
  
    const state = data.answer_call_data.state;
    const info = data.answer_call_data.info;
    
    let attempts = 0;
    const askNew = info.askNew;
    let ready = false;
 
    if (state) {
        let previousAttempts = state.attempts || state.yrityksia;
        if (previousAttempts) attempts += previousAttempts;
        ready = state.ready || state.valmis;
    }     
    if (!askNew) { 
        print(lf + s.onlyNewText); 
        return data; 
    }
    if (ready) {
        data.points = points; // pidetään pisteet samana tuli mitä tuli
        data.save_object.ready = true; // muistetaan että oltiin valmiina
        data.save_object.attempts = attempts; // ja päivitetään yritysmäärä
        print(lf + s.taskReadyText);
        return data;
    }
    if (correct) {
        attempts++;
        if (attempts >= needed) {
            data.save_object.ready = true;
            data.save_object.attempts = attempts;
            data.points = points;
            print(lf + s.greatText);
            return data;
        }
        const stillNeeded = needed - attempts;
        let neededText = s.oneMoreNeededText;
        if (stillNeeded > 1) neededText = rep(s.moreNeededText, {stillNeeded: stillNeeded});
        print(` ${s.correctText}${lf}  ${neededText} ${s.pressNewRoundText}`);
        data.save_object.attempts = attempts;
        data.points = 0;
        return data;
    }
    const totallyNeededText = rep(s.totallyNeededText, {needed: needed});
    print(` ${s.wrongText}${lf} ${totallyNeededText} ${s.pressNewRoundText}`);
    data.save_object.attempts = 0;
    data.points = 0;

    return data;
}

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.