index.html 15.3 KB
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>互动编程</title>
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/responsive/css/bootstrap.min.css">
    <link href="css/validationEngine.jquery.css" rel="stylesheet">
    <link href="css/codemirror.css" rel="stylesheet">
    <link href="css/cm-theme/gbtags.css" rel="stylesheet">
    <link href="css/cm-theme/gbtags-dark.css" rel="stylesheet">
    <link href="css/font/iconfont.css" rel="stylesheet">
    <link href="css/font_all/iconfont.css" rel="stylesheet">
    <link href="css/layout.css" rel="stylesheet">
    <link href="css/main.css" rel="stylesheet">
    <link href="css/recording.css" rel="stylesheet">

    <script>
        var gxb_api = "https://restful1.gaoxiaobang.com";
        // var gxb_api = "https://restful1.gaoxiaobang.cn"

    </script>

    <script src="js/jquery-1.7.1.js"></script>
    <script src="js/bootstrap.js"></script>

    <script src="js/util/util.js"></script>

    <script src="js/spin.js"></script>
    <script src="js/ladda.js"></script>

    <script src="js/jquery-ui-1.8.20.custom.js"></script>
    <script src="js/codemirror.js"></script>
    <!-- <script src="js/handlebars-1.3.js"></script> -->
    <script src="js/emmet.js"></script>
    <script  src="js/jshint-2.6.min.js"></script>
    <script  src="js/jstorage.js"></script>
    


    <script src="js/05-util.js"></script>
    <script src="js/03-http.js"></script>
    <script src="js/jquery.iframe-transport.js"></script>
    <script src="js/jquery.ui.widget.js"></script>
    <script  src="js/jquery.fileupload.js"></script>

    <script  src="js/jquery.validationEngine.js"></script>
    <script  src="js/jquery.validationEngine-zh.js"></script>
    <script  src="js/jquery.isotope.js"></script>

    <script src="js/gbreplayer.js"></script>

    <script src="js/gbdebug/mode/xml/xml.js"></script>
    <script src="js/gbdebug/mode/javascript/javascript.js"></script>
    <script src="js/gbdebug/mode/css/css.js"></script>
    <script src="js/gbdebug/mode/htmlmixed/htmlmixed.js"></script> 

</head>
<body>
<!--     <div class="real-program-title">
        <div class="back">
            <i class="gxbrecording record-back" style="color: #1FB6FF"> 返回课程</i>
            <span>| 我的课程</span>
        </div>
        <div class="save-wrap">
            <div class="upload-tip" style="display: none;">
                <img src="img/upload_tip.png" alt="">
            </div>
            <input type="button" id="upload" class="upload-teach" style="display: ;" disabled="disabled" value="保存">
            <input type="button" id="savecorde" class="upload-stud" style="display: none;" disabled="disabled" value="保存">
            <input type="button" id="cancel" value="关闭">
        </div>
    </div> -->

    <div class="real-program-content recording-page">
        <div class="row">
            <div class="col-md-8" id="editorpanel">
            
                <div id="" class="recording-wrap">
                    <div class="recording-header">
                        <ul class="nav nav-tabs pull-left" id="recordertab">
                            <li class="active" style="margin-left: 34px;">
                                <a href="#recordzone" data-toggle="tab"><i class="icon iconfont icon-suspend"></i><p class="pull-right">&nbsp;课程录制区</p></a>
                            </li>
                            <li class="line"></li>
                            <li>
                                <a href="#replayzone" data-toggle="tab"><i class="icon iconfont icon-yulan"></i><p class="pull-right">&nbsp;课程预览区</p></a>
                            </li>
                        </ul>
                        <div id="editorwrapper">
                            <button type="button" class="lang btn btn-default btn-primary pull-right" id="htmlbutton" title="" data-editorname="html">HTML/CSS/JS</button>
                        </div>
                    </div>
                    
                    <div id="recordpanel" class="recording-content">
                        <div class="panel-body">
                            <input type="hidden" class="audio-url" value="">
                            <div class="tab-content" style="position:relative;">
                                <div class="tab-pane active" id="recordzone">
                                    <textarea id="HTMLeditor" title="HTML"></textarea>
                                    <textarea id="CSSeditor" title="CSS"></textarea>
                                    <textarea id="JSeditor" title="Javascript"></textarea>
                                </div>
                                <div class="tab-pane" id="replayzone">
                                    <textarea id="HTMLplayer"></textarea>
                                    <textarea id="CSSplayer"></textarea>
                                    <textarea id="JSplayer"></textarea>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>

            </div>
            <div class="col-md-4" id="previewpanel">
                <div id="resultpanel" class="panel panel-default">
                    <div class="panel-heading">
                        <div class="btn-group">
                            <button type="button" class="btn btn-success" id="play" data-status="0" title="" style="display: none;"><</button>
                            <!-- <button type="button" class="btn btn-success" id="replay" title="重新回放"><span class="glyphicon glyphicon-repeat"></span></button> -->
                            <p id="replay">预览录制</p>

                        </div>
                        <!-- 修改播放速度 -->
                        <div class="btn-group dropdown" id="playspeed" style="display: none;">
                            <button type="button" class="btn btn-default" title="播放速度">
                                <span class="glyphicon glyphicon-forward"></span><span id="selectedspeed" data-speed="1">x1</span>
                            </button>
                            <button type="button" id="preparespeed" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
                                <span class="caret"></span>
                                <span class="sr-only">Toggle Dropdown</span>
                            </button>
                            <ul class="dropdown-menu" role="menu" id="speedlist">
                                <li><a href="#" data-speed="1" title="缺省速度"><span class="glyphicon glyphicon-forward"></span>x1</a></li>
                                <li><a href="#" data-speed="2" title="速度x2"><span class="glyphicon glyphicon-forward"></span>x2</a></li>
                                <li><a href="#" data-speed="4" title="速度x4"><span class="glyphicon glyphicon-forward"></span>x4</a></li>
                            </ul>
                        </div>
                        <div class="btn-group pull-right" id="comprunbtngrp"></div>
                    </div>
                    <div class="panel-body hidden" id="cmprun-output">
                        <div id="resultoutput" style="overflow:auto;">
                            <!-- Nav tabs -->
                            <ul class="nav nav-tabs" role="tablist" id="cmprun-tabs">
                                <li class="active"><a href="#stdin" role="tab" data-toggle="tab" class="text-warning">标准输入</a></li>
                                <li><a href="#cmpinfo" role="tab" data-toggle="tab" class="text-warning">编译信息</a></li>
                                <li><a href="#stderr" role="tab" data-toggle="tab" class="text-danger">错误输出</a></li>
                                <li><a href="#output" role="tab" data-toggle="tab" class="text-success">运行结果</a></li>
                            </ul>
                            <!-- Tab panes -->
                            <div class="tab-content">
                                <div class="tab-pane active padall15" id="stdin">
                                    <input type="text" class="form-control" id="input" placeholder="标准输入">
                                </div>
                                <div class="tab-pane padall15" id="cmpinfo">...</div>
                                <div class="tab-pane padall15" id="stderr">...</div>
                                <div class="tab-pane padall15" id="output">...</div>
                            </div>
                        </div>
                    </div>
                    <div class="panel-body" id="ifrcontainer">
                        <iframe id="resultiframe" frameBorder="0" width="100%"></iframe>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- 录音控制条 -->
    <div class="recording-ctrl-bar">
        <button id="recording-btn" class="btn recording" type="button" data="1" title="正在录制"></button>
        <button class="btn new-recording" title="重新录制" style="display: none;"></button>
        <button class="audio-play hidden" title="播放预览" data="1">
            <i class="icon iconfont icon-play"></i>
        </button>
        <div class="recording-time" value="">00:00:00</div>
        <div class="audio-view">
            <audio id="audio" autoplay></audio>
        </div>
        <div class="save-wrap">
            <div class="upload-tip" style="display: none;">
                <img src="img/upload_tip.png" alt="">
            </div>
            <input type="button" id="upload" class="upload-teach" style="display: ;" disabled="disabled" value="保存">
            <input type="button" id="savecorde" class="upload-stud" style="display: none;" disabled="disabled" value="保存">
            <input type="button" id="cancel" value="关闭">
        </div>
    </div>

<!--     <div class="recording-audio recording">
        <button class="audio-finish" type="button" data="1" title="正在录音">
            <span class="stop"></span>
        </button>
        <button class="audio-play" title="正在录音" disable="false"></button>
        <div class="f1 audio-wrap" style="line-height: 60px;">
            <audio id="audio" autoplay></audio>
        </div>
        <div class="recording-time" value=""></div>
    </div> -->

    
    <div class="record-before">
        <div class="tip" style="display: none;">
            <a class="start-btn"></a>
        </div>
        <div class="error" style="display: none;">
            <a class="error-btn"></a>
        </div>
        <!-- 倒计时 -->
        <div id="countdown">
            <img src="" alt="">
        </div>
    </div>
    

    <script src="js/recorder/Myna.js"></script>
    <script src="js/recording/recording.js"></script>

    <script>
    var global_trigger_record = 1;
    var recorder;
    var startRec = $('#startRec');
    var stopRec = $('#stopRec');
    var playRec = $('#playRec');
    var submitRec = $('#submitRec');
    var _role = getQuery('role');
    var _chapterId = getQuery('chapterId');
    var userId = getQuery('userId');

    var audio = document.querySelector('audio');

    var saveAudio = document.getElementById("save");

    $('.recording').click(function(){
        $('.recording').hide();
        timer.stopTimer();  // 停止计时器

        $('#upload').removeClass('upload-teach').addClass('recording-finish').removeAttr('disabled').prop("disabled",false);
        $('#savecorde').removeClass('upload-teach').addClass('recording-finish').removeAttr('disabled').prop("disabled",false);
        $('#cancel').attr('disabled', 'disabled').prop("disabled", true);

        // $('.recording').hide();
        $('.new-recording').show();
        $('.audio-play').removeClass('hidden').addClass('show');

        if (_role == 0) {
            recorder.stop();
            $('#upload').show();

        }else if (_role == 1) {
            $('#savecorde').show();
        }


    })

    $('.new-recording').click(function(){
        $('.recording').show();
        $('.new-recording').hide();
        window.location.reload();
    })


    $('.audio-finish').click(function(){
        var data = $(this).attr('data');
        timer.stopTimer();

        $('#upload').removeClass('upload-teach').addClass('recording-finish').removeAttr('disabled').prop("disabled",false);
        $('#savecorde').removeClass('upload-teach').addClass('recording-finish').removeAttr('disabled').prop("disabled",false);
        $('#cancel').attr('disabled', 'disabled').prop("disabled", true);

        if (data == 1){
            if (_role == 0) {
                recorder.stop();
                console.log(recorder);
                $('#upload').show()
            }else if (_role == 1) {
                $('#savecorde').show()
            }
            submitRec.removeAttr('disabled').prop("disabled", false);
            $('#imgAudio').removeClass("microphone")
            $(this).attr('data', 0).attr('data-original-title', '重新录制');
            $(this).children('span').removeClass('stop').addClass('restart')
            $('.audio-play').css('background-color', '#7FDE94').attr('data', '1').attr('data-original-title', '播放录音')
        } else {
            window.location.reload();
        }
    })

    // 结束播放事件
    audio.addEventListener("ended", function() {
        timer.stopTimer();
        $('.audio-play').attr('data', '1')

    }, false);


    // 播放录音
    $("#startRec").click(function(){
        startRecording();
    })
    function startRecording(obj) {
        HZRecorder.get(function(rec) {
            var seconds = 0;
            var countdown = setInterval(function(){
                seconds += 1;
                document.getElementById('countdown').innerHTML = 4-seconds;
                if(seconds == 4){
                    clearInterval(countdown);
                    $("#countdown").css("display", "none");
                    recorder = rec;
                    recorder.start();
                }
            },1000);
            
            startRec.val('录音中...').attr('disabled', 'disabled').prop("disabled", true);
            playRec.attr('disabled', 'disabled').prop("disabled", true);
            submitRec.attr('disabled', 'disabled').prop("disabled", true);
        });
        $("#countdown").css("display", "block")
    }
    // 停止录音
    $("#stopRec").click(function(){
        stopRecording()
    })
    function stopRecording() {
        recorder.stop();
        startRec.val('重新录音').removeAttr('disabled').prop("disabled", false);
        stopRec.val('录制完成').attr('disabled', 'disabled').prop("disabled", true);
        playRec.removeAttr('disabled').prop("disabled", false);
        submitRec.removeAttr('disabled').prop("disabled", false);
    }

    // 播放录音
    $("#playRec").click(function(){
        playRecording()
    })
    function playRecording() {
        recorder.play(audio);
        playRec.val('正在播放...').attr('disabled', 'disabled').prop("disabled", true);
        setTimeout(function(){
            playRec.val('播放').removeAttr('disabled').prop("disabled", false);
        }, 2000);
    }

    // 下载录音文件
    function downloadAudio(saveAudio){
        recorder.download(saveAudio);
    }

    $('#upload').click(function(){
        uploadAudio()
    })

    function uploadAudio(ob) {
        $('.upload-tip').show();
        recorder.upload();
    }
    </script>
</body>
</html>