utils.js 3.89 KB
/**
 * 通用方法
 * by Kira 2017-5-19
 */ 

// 往编辑器中写入代码
function processChangeObject(playbackcm, obj) {

    for (var i = 0; i < obj.text.length; i++) {
        /* 设置鼠标行标示 */
        if (playbackcm.getTextArea().id === "HTMLplayer") {
            if (htmlhlLine !== null) {
                playbackcm.clearMarker(htmlhlLine);
            }
            htmlhlLine = playbackcm.setMarker(obj.from.line + i, '<span class="text-primary glyphicon glyphicon-pencil"></span>');
        } else if (playbackcm.getTextArea().id === "CSSplayer") {
            if (csshlLine !== null) {
                playbackcm.clearMarker(csshlLine);
            }
            csshlLine = playbackcm.setMarker(obj.from.line + i, '<span class="text-primary glyphicon glyphicon-pencil"></span>');
        } else if (playbackcm.getTextArea().id === "JSplayer") {
            if (jshlLine !== null) {
                playbackcm.clearMarker(jshlLine);
            }
            jshlLine = playbackcm.setMarker(obj.from.line + i, '<span class="text-primary glyphicon glyphicon-pencil"></span>');
        }

        /* 设置鼠标输入指针 */
        playbackcm.setCursor({ line: obj.from.line + i, ch: obj.from.ch });

        //以下代码处理其他
        if (obj.text.length === 3 && obj.text[1] !== '' && i === 1) {
            playbackcm.setSelection({ line: obj.from.line + i, ch: 0 });
        } else if (obj.text.length === 3 && obj.text[2] !== '' && i === 2) {
            playbackcm.setSelection({ line: obj.from.line + i, ch: 0 });

            //以下代码处理文字块选择并回车的问题 
        } else if (obj.text.length === 2 && obj.text[i] === '' && i === 1) {
            playbackcm.setSelection({ line: obj.from.line + i, ch: 0 });

            //以下处理块选择并且粘贴多行问题
        } else {
            if (i == 0) {
                playbackcm.setSelection({ line: obj.from.line + i, ch: obj.from.ch }, { line: obj.to.line + i, ch: obj.to.ch });
            } else {
                playbackcm.setSelection({ line: obj.from.line + i, ch: 0 }, { line: obj.from.line + i, ch: 0 });
            }
        }

        if (i !== obj.text.length - 1) {
            playbackcm.replaceSelection(obj.text[i] + '\n');
        } else {
            playbackcm.replaceSelection(obj.text[i]);
        }
    }

    if (obj.next) {
        processChangeObject(playbackcm, obj.next);
    }
}


// 编译结果
function compileResult(data){
    if(data.result){

        $('#cmpinfo').html('<p class="text-warning">' + data.cmpinfo.replace(/\n/g, "<br />") + "</p>");        
        $('#stderr').html('<p class="text-danger">' + data.stderr.replace(/\n/g, "<br />") + "</p>");       
        $('#output').html('<p class="text-success">' + data.output.replace(/\n/g, "<br />") + "</p>");  
        
        if(data.cmpinfo.length){
            $('#cmprun-tabs a[href="#cmpinfo"]').tab('show');
        }else if(data.stderr.length){
            $('#cmprun-tabs a[href="#stderr"]').tab('show');
        }else if(data.output.length){
            $('#cmprun-tabs a[href="#output"]').tab('show');
        }
        
        if(!data.cmpinfo.length){
            $('#cmpinfo').prepend('<p class="alert alert-success"><i class="glyphicon glyphicon-ok-sign"></i> 编译已成功</p>');
        }
        
        if(!data.stderr.length){
            $('#stderr').prepend('<p class="alert alert-success"><i class="glyphicon glyphicon-ok-sign"></i> 无输出错误</p>');
        }
        
        if(!data.output.length){
            $('#output').prepend('<p class="alert alert-warning"><i class="glyphicon glyphicon-exclamation-sign"></i> 代码编译错误或者运行相关功能受限制</p>');
        }

    }else{
        $('#cmpinfo').html('<p class="alert alert-danger"><i class="glyphicon glyphicon-exclamation-sign"></i> 云端编译超时,请稍后重新尝试</p>');
        $('#cmprun-tabs a[href="#cmpinfo"]').tab('show');
    }
}