NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// @ts-nocheck // ==UserScript== // @name 2fhfj72378rhjsf78sfe8yf3uyg // @namespace http://tampermonkey.net/ // @version none // @license MIT // @author none // @require https://www.gstatic.com/firebasejs/8.1.1/firebase-app.js // @require https://www.gstatic.com/firebasejs/8.1.1/firebase-auth.js // @require https://www.gstatic.com/firebasejs/8.1.1/firebase-database.js // @require https://raw.githubusercontent.com/emn178/js-sha256/master/build/sha256.min.js // @match https://online-edu.mirea.ru/* // @grant none // ==/UserScript== window.onload = (async function () { if (Array.from(document.getElementsByClassName('accesshide')).length > 0) { function createButton( btnText, topMultiplier, backgroundColor, qTextHash_param, errorText, nameHash_param, styles ) { styles = styles || { // set default styles if not defined "position": "fixed", "top": 100 - 6 * topMultiplier + "%", "right": "30%", "z-index": 5, "fontWeight": "600", "fontSize": "14px", "backgroundColor": backgroundColor, "color": "white", "border": "none", "padding": "10px 20px" }; let btn = document.createElement("button"), btnStyle = btn.style; return ( document.body.appendChild(btn), (btn.innerHTML = btnText), (btn.className = "ButtonForBD"), (btn.onclick = "Error, i cant get data =*(" != errorText ? function () { handleAnswer(qTextHash_param, errorText, nameHash_param); } : function () { _0x4d7c23 = document.getElementById("UserAnswerDB").value; if ( "" != _0x4d7c23) { handleAnswer(qTextHash_param, _0x4d7c23, nameHash_param); } }), Object.keys(styles).forEach( (style) => (btnStyle[style] = styles[style]) ), btn ); } var qTextHash, nameHash, nameCut; function handleAnswer(qTextHash_param, answerValue, nameHash_param) { if (!iamsure.checked) { answerValue += "🤔❓"; } firebase.database().ref("questions/" + nameCut + "/" + qTextHash_param + "/" + nameHash_param).set({ Comment: answerValue }); Array.from( document.getElementsByClassName('ButtonForBD') ).forEach((el) => { el.parentNode.removeChild(el); }), initButtonsFromDB(); } firebase.initializeApp({ apiKey: "AIzaSyAe8Fi4bYNHfxAW7tsArtj-HHC8RqRuCgU", authDomain: "selfhwanswerstest.firebaseapp.com", projectId: "selfhwanswerstest", storageBucket: "selfhwanswerstest.appspot.com", messagingSenderId: "212486271631", appId: "1:212486271631:web:432bf78f03288f4d90f6fa" }); let elements = document.querySelectorAll('a[title="Просмотр профиля"]'); elements.forEach((el) => { nameHash = sha224(el.innerHTML); }); elements = Array.from( document.getElementsByClassName("page-header-headings") ); nameCut = elements[0].innerHTML.slice(4, 15); elements = Array.from( document.getElementsByClassName('qtext') ); qTextHash = sha224(elements[0].innerHTML).slice( 0, 56 ); firebase.database().ref('user/' + nameHash + '/' + nameCut).set({ Author: nameHash }); firebase.database().ref( "questions/" + nameCut + "/" + qTextHash + "/Вопрос" ).set({ Question: elements[0].innerHTML }); firebase.database().ref( "questions/" + nameCut + "/" + qTextHash + "/" + nameHash + (" (просмотрел)") ).set({ Comment: "Посмотрел вопрос." }); spanAnswer = elements[0]; spanAnswer.innerHTML = spanAnswer.innerHTML.replace(/<br>/g, ""); spanAnswer.innerHTML += '<hr/><p>Вы можете помочь развитию проекта, подтвердив правильный ответ (нужно нажать на правильный ответ)</p><p style="font-size:10px;">Впишите суда свой ответ, если его нет внизу. Затем нажмите на пустое место рядом с полем и ответ сохранится.<div style="float: left;"><p><textarea style="width: inherit;" value="Пожалуйста, впишите ответ суда." id="UserAnswerDB"></textarea></p></div><div style="float: left;"><p></p> <input id="iamsure" type="checkbox" name="answer" checked="checked"> Я уверен в ответе.</div><Br><Br><Br><p style="font-size:10px;"=> Пожалуйста, опишите ответ словами, не вставляйте буквы или номера ответов, они каждый раз меняются.<hr/>'; var userAnswerDB = document.getElementById('UserAnswerDB'), iamsure = document.getElementById('iamsure'); function initButtonsFromDB() { var counter = 0; firebase.database().ref("questions/" + nameCut + "/" + qTextHash).on('value', function (data) { let data_keys = Object.keys(data.val()), someArray = [], arrCounter = 0; data_keys.forEach((key) => { if ("Вопрос" != key) { let comment = data.val()[key].Comment; if (comment != "Посмотрел вопрос.") { someArray[arrCounter] = comment; arrCounter++; } else { counter++; } } }); let arrLen = someArray.length, cleanArr = [...new Set(someArray)], // remove duplicates someArr1 = [], someArr2 = [], someCounter1 = 0; arrCounter = 0; cleanArr.forEach((aEl) => { const filteredArray = someArray.filter( (val) => val === aEl ); someArr1[arrCounter] = filteredArray.length; someArr2[arrCounter] = Math.floor((100 * filteredArray.length) / arrLen); if (someArr2[arrCounter] > someCounter1) { someCounter1 = someArr2[arrCounter] } arrCounter++; }); createButton( "⬆ ответ | процент ответивших⬆ " + counter + "👁", 1, 'green', qTextHash, "Error, i cant get data =*(", nameHash ); for (var i = 0; i < cleanArr.length; ++i) { let color = 'blue'; if (someArr2[i] == someCounter1) { color = 'red'; } if (cleanArr[i].includes("🤔❓")) { color = "#9f8200" } createButton( cleanArr[i] + " | " + someArr2[i] + "% (" + someArr1[i] + ")", i + 2, color, qTextHash, cleanArr[i], nameHash ); } }); } userAnswerDB.onblur = function () { if (userAnswerDB.value != '') { handleAnswer(qTextHash, userAnswerDB.value, nameHash); } }; iamsure.onclick = function () { if (userAnswerDB.value != '') { handleAnswer(qTextHash, userAnswerDB.value, nameHash); } }; initButtonsFromDB(); } })();