'use strict' var pmod_test = function(proid,pro_node){ var that = this; var j_index_page = $('#index_page'); var manage_node = new vus.node('manage'); var callpath = 'pro/' + proid + '/'; pro_node.url_chg = function(direct,url_upart,url_dpart,param){ if(direct == 'in'){ pro_node.child_set(manage_node); if(url_dpart.length > 0){ return 'cont'; } com.loadpage('/toj/pmod/pmod_test/html/view.html','/toj/pmod/pmod_test/css/view.css').done(function(){ var j_submit; j_submit = j_index_page.find('div.submit'); com.call_backend(callpath,'view',function(result){ var data = result.data; var j_info; if(com.is_callerr(result)){ index.add_alert('alert-error','錯誤','讀取題目失敗'); }else{ j_info = j_index_page.find('div.info'); j_info.find('table.limit td.timelimit').text(data.timelimit + ' ms'); j_info.find('table.limit td.memlimit').text(data.memlimit + ' KB'); j_info.find('button.submit').on('click',function(e){ j_submit.modal('show'); }); j_index_page.find('div.content').html(data.content); } }); }); }else if(direct == 'out'){ pro_node.child_del(manage_node); } return 'cont'; }; that.unload = function(){ }; manage_node.url_chg = function(direct,url_upart,url_dpart,param){ var j_create_mode; var j_set_mode; var j_create_testmode; var j_set_testmode; var j_mode_list; var j_testmode_list; var set_mode_id = null; var set_testmode_id = null; var set_testdata_id = null; var testmode_idmap; function _mode_set(j_item,modeid,testmodeid){ j_item.find('td.id').text(modeid); j_item.find('td.testmode').text(testmode_idmap[testmodeid]); j_item.find('button.set').off('click').on('click',function(e){ set_mode_id = modeid; j_set_mode.modal('show'); }); if(modeid == 1){ j_item.find('button.del').remove(); }else{ j_item.find('button.del').off('click').on('click',function(e){ com.call_backend(callpath,'del_mode',function(result){ if(com.is_callerr(result)){ index.add_alert('','警告','管理發生錯誤'); }else{ _update(); } },modeid); }); } } function _mode_create(modeid,testmodeid){ var j_item = $('
') _mode_set(j_item,modeid,testmodeid); return j_item; } function _mode_update(testmode_list){ com.call_backend(callpath,'list_mode',function(result){ var i; var data = result.data; var j_testmode; var j_option; var modeo; var j_item; if(com.is_callerr(result)){ index.add_alert('','警告','管理發生錯誤'); }else{ j_testmode = j_create_mode.find('[name="testmode"]'); j_testmode.empty(); for(i = 0;i < testmode_list.length;i++){ j_option = $(''); j_option.text(testmode_list[i].testmodename); j_option.attr('value',testmode_list[i].testmodeid); j_testmode.append(j_option); } j_option = $(''); j_option.text('未設定'); j_option.attr('value',0); j_testmode.append(j_option); j_testmode = j_set_mode.find('[name="testmode"]'); j_testmode.empty(); for(i = 0;i < testmode_list.length;i++){ j_option = $(''); j_option.text(testmode_list[i].testmodename); j_option.attr('value',testmode_list[i].testmodeid); j_testmode.append(j_option); } j_option = $(''); j_option.text('未設定'); j_option.attr('value',0); j_testmode.append(j_option); j_mode_list.empty(); for(i = 0;i < data.length;i++){ modeo = data[i]; j_item = _mode_create(modeo.modeid,modeo.testmodeid); j_mode_list.append(j_item); } } }); } function _testmode_set(j_item,testmodeid,testmodename){ j_item.find('td.id').text(testmodeid); j_item.find('td.name').text(testmodename); j_item.find('button.set').off('click').on('click',function(e){ set_testmode_id = testmodeid; j_set_testmode.modal('show'); }); j_item.find('button.del').off('click').on('click',function(e){ com.call_backend(callpath,'del_testmode',function(result){ if(com.is_callerr(result)){ index.add_alert('','警告','管理發生錯誤'); }else{ _update(); } },testmodeid); }); } function _testmode_create(testmodeid,testmodename){ var j_item = $('
') _testmode_set(j_item,testmodeid,testmodename); return j_item; } function _testmode_update(){ var defer = $.Deferred(); com.call_backend(callpath,'list_testmode',function(result){ var i; var data = result.data; var testmodeo; var j_item; if(com.is_callerr(result)){ index.add_alert('','警告','管理發生錯誤'); }else{ testmode_idmap = new Object(); j_testmode_list.empty(); for(i = 0;i < data.length;i++){ testmodeo = data[i]; testmode_idmap[testmodeo.testmodeid] = testmodeo.testmodename; j_item = _testmode_create(testmodeo.testmodeid,testmodeo.testmodename); j_testmode_list.append(j_item); } defer.resolve(data); } }); return defer.promise(); } function _update(){ _testmode_update().done(_mode_update); } if(direct == 'in'){ com.loadpage('/toj/pmod/pmod_test/html/manage.html').done(function(){ j_mode_list = j_index_page.find('table.mode > tbody'); j_testmode_list = j_index_page.find('table.testmode > tbody'); j_create_mode = j_index_page.find('div.create_mode'); com.create_codebox(j_create_mode.find('div.content'),'text/html'); j_create_mode.on('shown',function(e){ j_create_mode.find('div.content').data('codebox').refresh(); }); j_create_mode.on('hide',function(e){ j_create_mode.find('div.content').data('codebox').setValue(''); }); j_create_mode.find('button.submit').on('click',function(e){ var content = j_create_mode.find('div.content').data('codebox').getValue(); var testmodeid = parseInt(j_create_mode.find('[name="testmode"]').val()); com.call_backend(callpath,'add_mode',function(result){ if(com.is_callerr(result)){ index.add_alert('','警告','管理發生錯誤'); }else{ index.add_alert('alert-success','成功','模式已建立'); j_create_mode.modal('hide'); _update(); } },content,testmodeid); }); j_create_mode.find('button.cancel').on('click',function(e){ j_create_mode.modal('hide'); }); j_index_page.find('button.create_mode').on('click',function(e){ j_create_mode.modal('show'); }); j_set_mode = j_index_page.find('div.set_mode'); com.create_codebox(j_set_mode.find('div.content'),'text/html'); j_set_mode.on('show',function(e){ com.call_backend(callpath,'get_mode',function(result){ var data = result.data; if(com.is_callerr(result)){ index.add_alert('','警告','管理發生錯誤'); }else{ j_set_mode.find('div.content').data('codebox').setValue(data.content); if(data.testmodeid == null){ j_set_mode.find('[name="testmode"]').val(0); }else{ j_set_mode.find('[name="testmode"]').val(data.testmodeid); } } },set_mode_id); }); j_set_mode.on('shown',function(e){ j_set_mode.find('div.content').data('codebox').refresh(); }); j_set_mode.on('hide',function(e){ set_mode_id = null; j_set_mode.find('div.content').data('codebox').setValue(''); }); j_set_mode.find('button.submit').on('click',function(e){ var content = j_set_mode.find('div.content').data('codebox').getValue(); var testmodeid = parseInt(j_set_mode.find('[name="testmode"]').val()); if(testmodeid == 0){ testmodeid = null; } com.call_backend(callpath,'set_mode',function(result){ if(com.is_callerr(result)){ index.add_alert('','警告','管理發生錯誤'); }else{ index.add_alert('alert-success','成功','模式已設定'); j_set_mode.modal('hide'); _update(); } },set_mode_id,content,testmodeid); }); j_set_mode.find('button.cancel').on('click',function(e){ j_set_mode.modal('hide'); }); j_create_testmode = j_index_page.find('div.create_testmode'); j_create_testmode.on('hide',function(e){ j_create_testmode.find('input').val(''); }); j_create_testmode.find('button.submit').on('click',function(e){ var name = j_create_testmode.find('[name="name"]').val(); var timelimit = parseInt(j_create_testmode.find('[name="timelimit"]').val()); var memlimit = parseInt(j_create_testmode.find('[name="memlimit"]').val()); com.call_backend(callpath,'add_testmode',function(result){ if(com.is_callerr(result)){ index.add_alert('','警告','管理發生錯誤'); }else{ index.add_alert('alert-success','成功','測試已建立'); j_create_testmode.modal('hide'); _update(); } },name,timelimit,memlimit); }); j_create_testmode.find('button.cancel').on('click',function(e){ j_create_testmode.modal('hide'); }); j_set_testmode = j_index_page.find('div.set_testmode'); j_set_testmode.on('show',function(e){ com.call_backend(callpath,'get_testmode',function(result){ var data = result.data; if(com.is_callerr(result)){ index.add_alert('','警告','管理發生錯誤'); }else{ j_set_testmode.find('[name="name"]').val(data.testmodename); j_set_testmode.find('[name="timelimit"]').val(data.timelimit); j_set_testmode.find('[name="memlimit"]').val(data.memlimit); } },set_testmode_id); }); j_set_testmode.on('hide',function(e){ set_testmode_id = null; }); j_set_testmode.find('button.submit').on('click',function(e){ var name = j_set_testmode.find('[name="name"]').val(); var timelimit = parseInt(j_set_testmode.find('[name="timelimit"]').val()); var memlimit = parseInt(j_set_testmode.find('[name="memlimit"]').val()); com.call_backend(callpath,'set_testmode',function(result){ var data = result.data; if(com.is_callerr(result)){ index.add_alert('','警告','管理發生錯誤'); }else{ index.add_alert('alert-success','成功','測試已設定'); j_set_testmode.modal('hide'); } },set_testmode_id,name,timelimit,memlimit); }); j_set_testmode.find('button.cancel').on('click',function(e){ j_set_testmode.modal('hide'); }); j_index_page.find('button.create_testmode').on('click',function(e){ j_create_testmode.modal('show'); }); _update(); }); } return 'cont'; }; };