Auto Survey UIT

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

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==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);
})();