Auto Survey UIT

Tự động đánh giá môn học UIT (LimeSurvey)

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         Auto Survey UIT
// @namespace    http://tampermonkey.net/
// @version      1.0
 // @license MIT
// @description  Tự động đánh giá môn học UIT (LimeSurvey)
// @author       NaruZeno
// @match        *://survey.uit.edu.vn/*
// @grant        window.close
// ==/UserScript==

(function() {
    'use strict';

    // Đặt độ trễ 1 giây (1000ms) để đảm bảo trang và các script mặc định đã load xong
    setTimeout(function() {

        // Xác định xem có nút Next hay Submit trên trang không
        let nextBtn = document.getElementById('movenextbtn');
        let submitBtn = document.getElementById('movesubmitbtn');
        let groupNameEl = document.querySelector('.group-name');
        // KIỂM TRA TRANG HOÀN THÀNH
        // Nếu trang không có nút Tiếp theo, không có nút Gửi, và không có tiêu đề nhóm câu hỏi
        // -> Rất có thể đây là trang thông báo hoàn thành khảo sát
        if (!nextBtn && !submitBtn && !groupNameEl) {
            console.log('Đã hoàn thành khảo sát. Tự động đóng tab sau 2 giây...');
            setTimeout(() => {
                window.close(); // Đóng tab
            }, 1000); // Delay 2s để bạn kịp nhìn thấy thông báo thành công (có thể chỉnh xuống 0 nếu muốn đóng ngay)
            return;
        }
        // BƯỚC 1, 2, 3: Trang Welcome / Không có nhóm câu hỏi -> Chỉ ấn Next
        if (!groupNameEl) {
            if (nextBtn) {
                console.log('Đang ở trang chào mừng, tự động ấn Tiếp theo...');
                nextBtn.click();
            }
            return;
        }

        let groupName = groupNameEl.innerText.trim();

        // BƯỚC 4: Trang "THÔNG TIN CHUNG"
        if (groupName === 'THÔNG TIN CHUNG') {
            console.log('Đang ở bước 4: Chọn >80% và Trên 90%');

            // Tìm và click vào các label chứa text tương ứng
            let labels = document.querySelectorAll('label.answertext');
            labels.forEach(label => {
                if (label.innerText.includes('>80%') || label.innerText.includes('Trên 90%')) {
                    let inputId = label.getAttribute('for');
                    let input = document.getElementById(inputId);
                    if (input && !input.checked) {
                        input.click(); // Click để kích hoạt sự kiện checkconditions của LimeSurvey
                    }
                }
            });

            // Chờ 0.5s rồi ấn Tiếp theo
            if (nextBtn) setTimeout(() => nextBtn.click(), 500);
        }

        // BƯỚC 5: Trang "ĐÁNH GIÁ VỀ HOẠT ĐỘNG GIẢNG DẠY"
      else if (groupName === 'ĐÁNH GIÁ VỀ HOẠT ĐỘNG GIẢNG DẠY') {
            console.log('Đang ở bước 5: Random giữa mức 3 và 4');

            // Lấy từng hàng câu hỏi
            let rows = document.querySelectorAll('tr.answers-list');
            rows.forEach(row => {
                // Lọc ra các lựa chọn có title là "3" hoặc "4" trong hàng đó
                // Nếu form có 5 mức, bạn đổi "3", "4" thành "4", "5" ở dòng dưới
                let options = row.querySelectorAll('input[type="radio"][title="3"], input[type="radio"][title="4"]');

                if (options.length > 0) {
                    // Random 1 số nguyên từ 0 đến (số lượng option - 1)
                    let randomIndex = Math.floor(Math.random() * options.length);
                    let selectedOption = options[randomIndex];

                    if (!selectedOption.checked) {
                        selectedOption.click();
                    }
                }
            });

            if (nextBtn) setTimeout(() => nextBtn.click(), 500);
        }
        // BƯỚC 6: Trang "Ý KIẾN KHÁC"
        else if (groupName === 'Ý KIẾN KHÁC') {
            console.log('Đang ở bước 6: Tự động ấn Gửi');

            // Nếu có nút Gửi, tiến hành submit
            if (submitBtn) {
                setTimeout(() => submitBtn.click(), 500);
            }
        }

    }, 1000);
})();