1"use strict"; 2 3var audioStop = function audioStop(select = "") { 4 // select ? select : select = ".audiotest__item:not(.active_step) audio"; 5 // var audioList = document.querySelectorAll(select); 6 // if(audioList && audioList.length) { 7 // for (var i = 0; i < audioList.length; i++) { 8 // audioList[i].pause(); 9 // // audioList[i].currentTime = 0; 10 // audioList[i].seek(0); 11 // } 12 // } 13 14 if(audio_noise) { 15 audio_noise.pause(); 16 audio_noise.seek(0); 17 } 18 19 if(audio_volume) { 20 audio_volume.pause(); 21 audio_volume.seek(0); 22 } 23} 24 25var audioPlay = function audioPlay(audioID, type = '') { 26 // var audio = document.getElementById(audioID); 27 var audio = new Howl({ 28 src: [ 29 './sounds/'+audioID+'.webm', 30 './sounds/'+audioID+'.mp3' 31 ], 32 volume: volume, 33 loop: true 34 }); 35 36 switch (type) { 37 case "speech": 38 audio_noise = audio; 39 repeatSpeechTest(true); 40 break; 41 case "volume": 42 // var tone_volume = +document.querySelector('.audiotest__item.active_step [data-role="tone-volume"]').textContent; 43 // audio.volume = volume / 100 * tone_volume; 44 audio_volume = audio; 45 break; 46 default: 47 // audio.volume = volume; 48 // audio.volume(volume); 49 break; 50 } 51 audio.play(); 52} 53 54// Ïåðåêëþ÷åíèå ñëàéäîâ 55var nextTest = function nextTest() { 56 var stepLength = audiotestItemList[0].clientWidth; 57 position += stepLength; 58 audiotestItemList[step].classList.remove('active_step'); 59 audiotestItemList[++step].classList.add('active_step'); 60 audioStop(); 61 $audiotest.style.transform = "translateX(-".concat(position, "px)"); 62}; 63 64// Íà÷àëî òåñòà 65var testStart = function testStart() { 66 nextTest(); 67 $audiotestExitButton.classList.remove("fade"); 68}; 69 70// Çàáûë ïåðåèìåíîâàòü, ìåíÿåò êîíòåíò âíóòðè ñëàéäåðà 71var questionNext = function questionNext(btn) { 72 var $parent = btn.closest(".audiotest__content"); 73 $parent.classList.add("fade"); 74 setTimeout(function () { 75 $parent.classList.remove("active"); 76 $parent.nextElementSibling.classList.add("active"); 77 $parent.nextElementSibling.classList.remove("fade"); 78 }, 300); 79}; 80 81var volumeMinus = function volumeMinus(btn) { 82 var plusBtn = btn 83 .closest(".audiotest__volume") 84 .querySelector('[data-role="volume-plus"]'); 85 var volumeActiveList = document.querySelectorAll(".volume__level.active"); 86 plusBtn.disabled = plusBtn.disabled && false; 87 volumeActiveList[volumeActiveList.length - 1].classList.remove("active"); 88 btn.disabled = volumeActiveList.length < 2 && true; 89 90 volume = volumeStep * (volumeActiveList.length - 1); 91 // audio_volume.volume = volume; 92 audio_volume.volume(volume); 93 btn.closest(".audiotest__content") 94 .querySelector('[data-role="test-next"]') 95 .disabled = btn.disabled; 96}; 97 98var volumePlus = function volumePlus(btn) { 99 var minusBtn = btn 100 .closest(".audiotest__volume") 101 .querySelector('[data-role="volume-minus"]'); 102 var volumeList = document.querySelectorAll(".volume__level"); 103 var volumeActiveList = document.querySelectorAll(".volume__level.active"); 104 volumeList[volumeActiveList.length].classList.add("active");
105 minusBtn.disabled = minusBtn.disabled && false; 106 btn.disabled = volumeActiveList.length + 1 === volumeList.length && true; 107 108 volume = volumeStep * (volumeActiveList.length + 1); 109 // audio_volume.volume = volume; 110 audio_volume.volume(volume); 111 btn.closest(".audiotest__content") 112 .querySelector('[data-role="test-next"]') 113 .disabled = false; 114}; 115 116// ãåíåðèðóåò òðè ñëó÷àéíûõ îòâåòà 117var generateNum = function generateNum() { 118 var num1, num2, num3; 119 120 // 1. Ñáðîñèòü ìàññèâ 121 speechNumKey = []; 122 123 // 2. Âû÷èñëèòü 3 ñëó÷àéíûõ ÷èñëà 124 num1 = Math.round(Math.random() * (speechMaxNum - speechMinNum) + speechMinNum); 125 num2 = Math.round(Math.random() * (speechMaxNum - speechMinNum) + speechMinNum); 126 num3 = Math.round(Math.random() * (speechMaxNum - speechMinNum) + speechMinNum); 127 128 // 2. Óñòðàíåíèå / óäàëåíèå äóáëèêàòîâ â òðåõ ÷èñëàõ 129 while(num1 === num2 || num2 === num3 || num1 === num3) { 130 num2 = Math.round(Math.random() * (speechMaxNum - speechMinNum) + speechMinNum); 131 num3 = Math.round(Math.random() * (speechMaxNum - speechMinNum) + speechMinNum); 132 } 133 134 // 3. Îòïðàâêà îòâåòîâ â ìàññèâ answerStrings 135 // Èñïîëüçóåò ñëó÷àéíûå ÷èñëà, óêàçàííûå âûøå, äëÿ ïîëó÷åíèÿ ñëó÷àéíûõ îòâåòîâ èç answerKey 136 speechNumKey.push(num1); 137 speechNumKey.push(num2); 138 speechNumKey.push(num3); 139} 140// Ñðàâíèâàåì ââåäåííûå îòâåòû ñ êëþ÷îì îòâåòà 141var evalNum = function evalNum() { 142 var input_nums = document.querySelectorAll('.speech-test-output span'); 143 if(input_nums.length == speechTestInput) { 144 for (var i = 0; i < speechTestInput; i++) { 145 if (parseInt(input_nums[i].innerHTML) !== speechNumKey[i]) { 146 console.log(input_nums[i].innerHTML + " vs " + speechNumKey[i]); 147 testResultNegative(); 148 } 149 } 150 } 151} 152// Âîñïðîèçâåäåíèå àóäèîôàéëîâ, ñîîòâåòñòâóþùèõ ñãåíåðèðîâàííûì îòâåòàì 153var playNumAudio = function playNumAudio() { 154 155 // èíèöèàëèçèðóåì ïóñòîé ìàññèâ 156 tempAudio = []; 157 158 for(var i=0; i < speechTestInput; i++){ 159 160 // Îòïðàâëÿåì ïóòè ê àóäèîôàéëó, êîòîðûé ñîîòâåòñòâóåò öèêëó îòâåòîâ 161 // tempAudio.push(new Audio('./sounds/speech/Speech_' + speechNumKey[i] + '.mp3')); 162 tempAudio.push(new Howl({ 163 src: [ 164 './sounds/speech/Speech_' + speechNumKey[i] + '.webm', 165 './sounds/speech/Speech_' + speechNumKey[i] + '.mp3' 166 ], 167 volume: volume 168 })); 169 } 170 171 // ïðîèãðûâàåì ïåðâîå àóäèî 172 // tempAudio[0].volume = volume; 173 // tempAudio[0].volume(volume); 174 tempAudio[0].play(); 175 176 // âîñïðîèçâåäåíèå ñëåäóþùåãî çâóêà èç setTimeout äëÿ çàäåðæêè 177 timeout_id = setTimeout(function(){ 178 179 // tempAudio[1].volume = volume; 180 // tempAudio[1].volume(volume); 181 tempAudio[1].play(); 182 183 // âîñïðîèçâåäåíèå òðåòüåãî çâóêà èç setTimeout 184 timeout_id = setTimeout(function(){ 185 // tempAudio[2].volume = volume; 186 // tempAudio[2].volume(volume); 187 tempAudio[2].play(); 188 189 // ïîñëå çàäåðæêè âêëþ÷èòü ââîä êíîïêè îòâåòà 190 //setTimeout(function(){ 191 192 // âêëþ÷èòü ââîä êíîïêè îòâåòà 193 // document.querySelectorAll('.speech__btn').forEach(function (item) { 194 // return (item.disabled = false); 195 // }); 196 // var buttonNextList = document.querySelectorAll( 197 // '[data-role="speech-test-next"]' 198 // ); 199 // buttonNextList.forEach(function (item) { 200 // return (item.disabled = item.textContent === "Äàëåå" && true); 201 // }); 202 // document.querySelector('.speech-test-numbers').classList.remove('disabled'); 203 //}, speechDelayTime); 204 }, speechDelayTime) 205 }, speechDelayTime); 206 207} 208 209var setSpeechNumber = function setSpeechNumber(btn, role) { 210 $speechTestOutput.innerHTML = "\n " 211 .concat($speechTestOutput.innerHTML, "\n <span>") 212 .concat(btn.textContent, "</span>\n "); 213 214 if ($speechTestOutput.querySelectorAll("span").length === speechTestInput) { 215 var numberButtonList = document.querySelectorAll( 216 '[data-role="'.concat(role, '"]') 217 ); 218 var buttonNextList = document.querySelectorAll( 219 '[data-role="speech-test-next"]' 220 ); 221 numberButtonList.forEach(function (item) { 222 return (item.disabled = true); 223 }); 224 buttonNextList.forEach(function (item) { 225 return (item.disabled = false); 226 }); 227 } 228}; 229 230var repeatSpeechTest = function repeatSpeechTest(first = false, repeat = false) { 231 $speechTestOutput.innerHTML = ""; 232 233 var numberButtonList = document.querySelectorAll('.speech-test-numbers [data-role="speech-test-number"]'); 234 numberButtonList.forEach(function (item) { 235 return (item.disabled = false); 236 }); 237 238 var buttonNextList = document.querySelectorAll('.speech-test-numbers [data-role="speech-test-next"]'); 239 buttonNextList.forEach(function (item) { 240 return (item.disabled = item.textContent === "Äàëåå" && true); 241 }); 242 243 audio_noise_volume = volume / speechStepMax / 2; 244 audio_noise_step_volume = (audio_noise_volume / 4) * (speechStep + 1); 245 246 if (first === true) { 247 // audio_noise.volume = audio_noise_volume; 248 audio_noise.volume(audio_noise_volume); 249 } 250 else if(repeat === false) { 251 // audio_noise.volume += audio_noise_step_volume; 252 audio_noise.volume(audio_noise.volume() + audio_noise_step_volume); 253 } 254 255 // document.querySelectorAll('.speech__btn').forEach(function (item) { 256 // return (item.disabled = true); 257 // }); 258 259 repeat === false && generateNum(); 260 playNumAudio(); 261}; 262
263var nextSpeechNext = function nextSpeechNext() { 264 evalNum(); 265 speechStep++; 266 if(tempAudio && tempAudio.length) { 267 clearTimeout(timeout_id); 268 for (var i = 0; i < tempAudio.length; i++) { 269 tempAudio[i].pause(); 270 // tempAudio[i].currentTime = 0; 271 tempAudio[i].seek(0); 272 } 273 } 274 speechStep < speechStepMax ? repeatSpeechTest() : nextTest(); 275}; 276 277// update 278var nextTone = function nextTone(btn) { 279 //audioStop('.audiotest__item.active_step audio'); 280 toneAudio[toneStep].pause(); 281 // toneAudio[toneStep].currentTime = 0; 282 toneAudio[toneStep].seek(0); 283 284 // var toneAudioList = document.querySelectorAll(".audiotest__item.active_step audio"); 285 286 var repeatToneTest = function repeatToneTest() { 287 var toneStepList = document.querySelectorAll('.audiotest__item.active_step .audiotest__content'); 288 for(var i=1; i < toneStepList.length; i++) { 289 toneStepList[i].querySelector('[data-role="tone-volume"]').textContent = toneAudioVolumeDefault; 290 } 291 292 var toneEarTextList = document.querySelectorAll('.tone_headphones_ear'); 293 294 var $parent = btn.closest(".audiotest__content"); 295 var $first_tone = document.querySelectorAll('.audiotest__item.active_step .audiotest__content')[1]; 296 $parent.classList.add("fade"); 297 setTimeout(function () { 298 $parent.classList.remove("active"); 299 $first_tone.classList.add("active"); 300 $first_tone.classList.remove("fade"); 301 302 for(var i = 0; i < toneEarTextList.length; i++) { 303 toneEarTextList[i].querySelector('.tone_headphones_ear__left').hidden = true; 304 toneEarTextList[i].querySelector('.tone_headphones_ear__right').hidden = false; 305 } 306 }, 300); 307 308 toneContentNext(true); 309 }; 310 311 var toneContentNext = function toneContentNext(repeat = false) { 312 var tone_volume = toneAudioVolumeDefault; 313 !repeat && questionNext(btn); 314 toneStep++; 315 // toneAudio[toneStep].volume = volume / 100 * tone_volume; 316 toneAudio[toneStep].volume(volume / 100 * tone_volume); 317 toneAudio[toneStep].play(); 318 toneClickPositiveStep = 0; 319 toneClickNegativeStep = 0; 320 }; 321 322 var $currentToneVolume = btn 323 .closest(".audiotest__content") 324 .querySelector('[data-role="tone-volume"]'); 325 var btnValue = +btn.dataset.value; 326 var tone_volume = +$currentToneVolume.textContent; 327 328 if (btnValue === 1) { 329 if (tone_volume <= 10 || (toneClickPositiveStep > 0 && toneClickNegativeStep > 0)) { 330 if(headphones && toneStep == (toneStepMax/2 - 1)) { 331 repeatToneTest(); 332 return false; 333 } 334 toneStep < (toneStepMax - 1) ? toneContentNext() : nextTest(); 335 return false; 336 } 337 338 tone_volume -= 10; 339 $currentToneVolume.textContent = tone_volume; 340 toneClickPositiveStep++; 341 342 // toneAudio[toneStep].volume = volume / 100 * tone_volume; 343 toneAudio[toneStep].volume(volume / 100 * tone_volume); 344 toneAudio[toneStep].play(); 345 } 346 347 if (btnValue === 0) { 348 if (tone_volume >= 70 || (toneClickPositiveStep > 0 && toneClickNegativeStep > 0)) { 349 if(headphones && toneStep == (toneStepMax/2 - 1)) { 350 repeatToneTest(); 351 return false; 352 } 353 toneStep < (toneStepMax - 1) ? toneContentNext() : nextTest(); 354 return false; 355 } 356
357 tone_volume += 5; 358 $currentToneVolume.textContent = tone_volume; 359 toneClickNegativeStep++; 360 361 // toneAudio[toneStep].volume = volume / 100 * tone_volume; 362 toneAudio[toneStep].volume(volume / 100 * tone_volume); 363 toneAudio[toneStep].play(); 364 } 365}; 366// end update 367 368var testHeadphones = function testHeadphones() { 369 headphones = true; 370 toneStepMax *= 2; 371 372 var toneEarTextList = document.querySelectorAll('.tone_headphones_ear'); 373 for(var i = 0; i < toneEarTextList.length; i++) { 374 toneEarTextList[i].hidden = false; 375 } 376} 377 378var toneTestStart = function toneTestStart() { 379 var tone_volume = +document.querySelector('.audiotest__item.active_step [data-role="tone-volume"]').textContent; 380 381 for(var i=0; i < toneAudioValue.length; i++){ 382 if(headphones) { 383 // toneAudio[i] = new Audio('./sounds/tone/' + toneAudioValue[i] + '_l.mp3'); 384 // toneAudio[i].loop = true; 385 toneAudio[i] = new Howl({ 386 src: [ 387 './sounds/tone/' + toneAudioValue[i] + '_l.webm', 388 './sounds/tone/' + toneAudioValue[i] + '_l.mp3' 389 ], 390 volume: volume / 100 * tone_volume, 391 loop: true 392 }); 393 394 // toneAudio[toneAudioValue.length+i] = new Audio('./sounds/tone/' + toneAudioValue[i] + '_r.mp3'); 395 // toneAudio[toneAudioValue.length+i].loop = true; 396 toneAudio[toneAudioValue.length+i] = new Howl({ 397 src: [ 398 './sounds/tone/' + toneAudioValue[i] + '_r.webm', 399 './sounds/tone/' + toneAudioValue[i] + '_r.mp3' 400 ], 401 volume: volume / 100 * tone_volume, 402 loop: true 403 }); 404 } 405 else { 406 407 // toneAudio[i] = new Audio('./sounds/tone/' + toneAudioValue[i] + '.mp3'); 408 // toneAudio[i].loop = true; 409 toneAudio[i] = new Howl({ 410 src: [ 411 './sounds/tone/' + toneAudioValue[i] + '.webm', 412 './sounds/tone/' + toneAudioValue[i] + '.mp3' 413 ], 414 volume: volume / 100 * tone_volume, 415 loop: true 416 }); 417 } 418 } 419 420 // var tone_volume = +document.querySelector('.audiotest__item.active_step [data-role="tone-volume"]').textContent; 421 // toneAudio[0].volume = volume / 100 * tone_volume; 422 // toneAudio[0].volume(volume / 100 * tone_volume); 423 toneAudio[0].play(); 424} 425 426var audiotestTrigger = function audiotestTrigger(event) { 427 var result = event.target.dataset.result; 428 test_result && result && result === "negative" && testResultNegative(); 429 430 var role = event.target.dataset.role; 431 role === "test-start" && testStart(); 432 role === "next-question" && questionNext(event.target); 433 role === "test-next" && nextTest(); 434 role === "volume-minus" && volumeMinus(event.target); 435 role === "volume-plus" && volumePlus(event.target); 436 role === "speech-test-number" && setSpeechNumber(event.target, role); 437 role === "speech-test-repeat" && repeatSpeechTest(false, true); 438 role === "speech-test-next" && nextSpeechNext(); 439 role === "tone-next" && nextTone(event.target); // update 440 441 var audio_input = event.target.dataset.input; 442 audio_input === "headphones" && testHeadphones(); 443 444 var test = event.target.dataset.test; 445 test === "tone" && toneTestStart(); 446 447 var audio = event.target.dataset.audio; 448 if(audio) { 449 switch (audio) { 450 case "BackgroundNoise": 451 audioPlay(audio, 'speech'); 452 break; 453 case "noise": 454 audioPlay(audio, 'volume'); 455 break; 456 default: 457 audioPlay(audio); 458 break; 459 } 460 } 461}; 462 463var testResultNegative = function testResultNegative() { 464 test_result = false;
465 result_positive.hidden = true; 466 result_negative.hidden = false; 467}; 468 469var exitTest = function exitTest() { 470 location.reload(); 471}; 472 473var $audiotest = document.querySelector(".audiotest"); 474var $audiotestExitButton = document.querySelector(".audiotest__exit"); 475var $audiotestReloadButton = document.querySelector(".audiotest__reload"); 476var $speechTestOutput = document.querySelector(".speech-test-output"); 477var audiotestItemList = document.querySelectorAll(".audiotest__item"); 478var audiotestToneList = document.querySelectorAll(".tone__item"); 479 480// new 481var $volumeValue = document.querySelectorAll('[data-role="tone-value"]'); 482var volumeValueDefault = +$volumeValue[0].textContent; 483// end new 484 485var tempAudio; 486var timeout_id; 487 488var headphones = false; 489var toneAudioVolumeDefault = 40; 490var toneAudioValue = ['500', '1000', '2000', '4000']; 491var toneAudio = []; 492 493var position = 0; 494var step = 0; 495var speechTestInput = 3; 496var speechStep = 0; 497var speechStepMax = 5; 498var speechMinNum = 1; 499var speechMaxNum = 8; 500var speechNumKey = []; 501var speechDelayTime = 1200; 502var toneStep = 0; 503var toneStepMax = 4; 504var toneClickPositiveStep = 0; // new 505var toneClickNegativeStep = 0; // new 506var volumeLength = document.querySelectorAll(".volume__level").length; 507var volumeActiveLength = document.querySelectorAll(".volume__level.active").length; 508var volumeStep = Math.round(100 / volumeLength) / 100; 509var volume = volumeStep*volumeActiveLength; 510// var audio_volume = document.getElementById('noise');
511// var audio_noise = document.getElementById('BackgroundNoise'); 512var audio_volume; 513var audio_noise; 514var audio_noise_volume = 0; 515var audio_noise_step_volume = 0; 516var test_result = true; 517var result_negative = document.querySelector(".result__negative"); 518var result_positive = document.querySelector(".result__positive"); 519$audiotestExitButton && 520 $audiotestExitButton.addEventListener("click", exitTest); 521$audiotestReloadButton && 522 $audiotestReloadButton.addEventListener("click", exitTest); 523$audiotest 524 ? $audiotest.addEventListener("click", audiotestTrigger) 525 : (position = speechStep = toneStep = toneClickPositiveStep = toneClickNegativeStep = null); //update
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.