student.js 4.24 KB
$(function() {
    var teacherId = document.getElementById('teacher');
    var studentId = document.getElementById('student');
    var socket = io('https://live-api.gaoxiaobang.com');
    // var socket = io('http://localhost:5000');

    var teacher = CodeMirror.fromTextArea(teacherId, {
      value: '输入HTML代码',
      mode:  'text/x-java',
      readOnly: true,
      lineNumbers: true,
      smartIndent: false
    });

    var student = CodeMirror.fromTextArea(studentId, {
      value: '输入HTML代码',
      mode:  'text/x-java',
      lineNumbers: true,
      smartIndent: false
    });

    // 标准输入
    socket.on('start.live', function(msg) {
        console.log('start.live ---- ' + msg);
        var seconds = 2;
        $('.countdown').show();
        var countdown = setInterval(function() {
            $(".countdown h1").html(seconds);
            seconds = seconds - 1;
            if (seconds == -1) {
                $(".countdown").hide();
                clearInterval(countdown);

                // 
                socket.on('teacher.programming', function(msg) {
                    console.log(msg);
                    var msgObj = JSON.parse(msg)
                    // student.setValue(msg)
                    processChangeObject(teacher, msgObj);

                    $('#messages').append($('<li>').text(msg));
                    window.scrollTo(0, document.body.scrollHeight);
                });
            }
        }, 1000);
    });



    // 同步代码内容
    socket.on('programming.content', function(msg) {
        teacher.setValue(msg);
    });
    

    

    // 选中 input
    socket.on('select.menu', function(msg) {
        console.log('select.menu ---- ' + msg);
        $('#runtimeArgus').addClass('effect-2');
    });

    // 标准输入
    socket.on('stdin.value', function(msg) {
        console.log('stdin.value ---- ' + msg);
        $('#runtimeArgus').val(msg)
    });

    // 切换 tab 
    socket.on('check.tab', function(msg) {
        console.log('check.tab ---- ' + msg);
        if(msg === 0){
            $('#cmprun-tabs a[href="#stdin"]').tab('show');
        }else if(msg === 1){
            $('#cmprun-tabs a[href="#cmpinfo"]').tab('show');
        }else if(msg === 2){
            $('#cmprun-tabs a[href="#stderr"]').tab('show');
        }else if(msg === 3){
            $('#cmprun-tabs a[href="#output"]').tab('show');
        }
        // $('#runtimeArgus').val(msg)
    });





    socket.on('programming.compile', function(msg) {
        console.log('-------------');
        console.log(msg);
        // $('#CompileBtn').trigger('click');
        console.log('编译' + teacher.getValue());
        var el = document.querySelector('#CompileBtn')
        var l = Ladda.create(el);
        l.start();

        var input = $('#input').val() || '';
        var code = teacher.getValue();
        var compileData = {
            code: code,
            langid: 10,
            input: input
        }
        $.ajax({
            type: "post",
            url: gxb_api + "/submit/submitCode/api",
            data: JSON.stringify(compileData),
            dataType: "json",
            contentType: "application/json",
            success: function(data) {
               console.log(data);
               l.remove();
               compileResult(data);
            },
            error: function(){
                l.stop();
                alert('错误');
            }
        });
    });







    $('#studCompile').on('click', function(){

        var el = document.querySelector('#studCompile')
        var l = Ladda.create(el);
        l.start();

        var input = $('#input').val() || '';
        var code = student.getValue();
        var compileData = {
            code: code,
            langid: 10,
            input: input
        }

        $.ajax({
            type: "post",
            url: gxb_api + "/submit/submitCode/api",
            data: JSON.stringify(compileData),
            dataType: "json",
            contentType: "application/json",
            success: function(data) {
               console.log(data);
               l.remove();
               studCompileResult(data);
            },
            error: function(){
                l.stop();
                alert('错误');
            }
        });
    })


});