diff --git a/app/controllers/managements/schools_controller.rb b/app/controllers/managements/schools_controller.rb index a5c789ff..4e9b41ed 100644 --- a/app/controllers/managements/schools_controller.rb +++ b/app/controllers/managements/schools_controller.rb @@ -78,5 +78,7 @@ class Managements::SchoolsController < Managements::BaseController @active_course_total = Course.where(is_end: false).count @shixun_homework_total = HomeworkCommon.where(homework_type: 4).count @other_homework_total = HomeworkCommon.where(homework_type: [1, 3]).count + @shixun_total = Shixun.count + @shixun_evaluate_total = Game.sum(:evaluate_count) end end diff --git a/app/controllers/myshixuns_controller.rb b/app/controllers/myshixuns_controller.rb index 802bb8b9..96f45d3a 100644 --- a/app/controllers/myshixuns_controller.rb +++ b/app/controllers/myshixuns_controller.rb @@ -10,6 +10,10 @@ class MyshixunsController < ApplicationController include ApplicationHelper + def archive + + end + def forbidden render_403 return diff --git a/app/models/myshixun.rb b/app/models/myshixun.rb index 774caad9..b5e9df62 100644 --- a/app/models/myshixun.rb +++ b/app/models/myshixun.rb @@ -15,7 +15,8 @@ class Myshixun < ActiveRecord::Base belongs_to :user validates_uniqueness_of :shixun_id, :scope => :user_id, :message => "error" # validates :shixun_id, :uniqueness => {:scope => :user_id, :message => "不能被重复开启"} - scope :min, lambda { select([:id, :shixun_id, :identifier, :gpid, :status, :user_id, :commit_id, :modify_time, :reset_time, :system_tip]) } + scope :min, lambda { select([:id, :shixun_id, :identifier, :gpid, :status, :user_id, :commit_id, :modify_time, :reset_time, + :system_tip, :gpid]) } scope :finished, lambda{where(status: 1)} def output_times diff --git a/app/services/games_service.rb b/app/services/games_service.rb index a53ee086..d293b0f2 100644 --- a/app/services/games_service.rb +++ b/app/services/games_service.rb @@ -45,7 +45,7 @@ class GamesService # 高性能取上一关、下一关 prev_game = Game.prev_identifier(shixun.id, game.myshixun_id, game_challenge.position) - next_game = if current_user.is_certification_teacher || shixun_manager(shixun, current_user) || game.status || shixun.task_pass + next_game = if shixun.vnc || current_user.is_certification_teacher || shixun_manager(shixun, current_user) || game.status || shixun.task_pass Game.next_game(shixun.id, game.myshixun_id, game_challenge.position).try(:identifier) end @@ -75,8 +75,30 @@ class GamesService :challenge => game_challenge.try(:attributes), :game => game.try(:attributes), :shixun => shixun.try(:attributes), :record => record, :grade => grade, :prev_game => prev_game, :next_game => next_game, :username => username, :image_url => image_url, :user_url => user_url, :praise_count => praise_count, :user_praise => user_praise, :time_limit => time_limit, - :tomcat_url => Redmine::Configuration['tomcat_php'], :is_teacher => is_teacher, :power => power, :myshixun_manager => myshixun_manager, - :vnc => shixun.vnc} + :tomcat_url => Redmine::Configuration['tomcat_php'], :is_teacher => is_teacher, :power => power, :myshixun_manager => myshixun_manager} + if shixun.vnc + begin + shixun_tomcat = Redmine::Configuration['shixun_tomcat'] + service_host = Redmine::Configuration['tomcat_php'] + uri = "#{shixun_tomcat}/bridge/vnc/getvnc" + params = {tpiID: myshixun.id, :containers => "#{Base64.urlsafe_encode64(container_limit(shixun.mirror_repositories))}"} + res = uri_exec uri, params + if res && res['code'].to_i != 0 + raise("实训云平台繁忙(繁忙等级:99)") + end + url = service_host +":#{res['port']}/vnc_lite.html?password=headless" + Rails.logger.info("66666666sssssss#{url}") + container = container.merge(:vnc_url => url) + Rails.logger.info("777777666sssssss#{container}") + rescue Exception => e + Rails.logger.error(e.message) + end + end + + if st == 0 && shixun.status == 2 && myshixun_manager + zip_path = Gitlab.endpoint.to_s + "/projects/" + myshixun.gpid.to_s + "/repository/archive?&private_token=" + Gitlab.private_token.to_s + container = container.merge(:zip_path => zip_path) + end # 区分选择题和编程题,st:0编程题; if st == 0 @@ -506,11 +528,12 @@ class GamesService # 三类实训只取基础部分数据 game = Game.select([:myshixun_id, :status, :challenge_id, :id, :evaluate_count]).find_by_identifier(params[:identifier]) myshixun = Myshixun.select([:updated_at, :gpid, :id, :shixun_id]).find(game.myshixun_id) - shixun = Shixun.select([:id, :evaluate_script, :webssh, :exec_time, :sigle_training, :identifier, :status]).find(myshixun.shixun_id) + shixun = Shixun.select([:id, :evaluate_script, :webssh, :exec_time, :sigle_training, :identifier, :status, :evaluate_count]).find(myshixun.shixun_id) game_challenge = Challenge.select([:id, :position, :picture_path]).find(game.challenge_id) # 更新评测次数 game.update_column(:evaluate_count, (game.evaluate_count.to_i + 1)) + # shixun.increment!(:evaluate_count) # 清空代码评测信息 msg = game.run_code_message msg.update_attributes(:status => 0, :message => nil) if msg.present? @@ -671,6 +694,7 @@ class GamesService :evaluate_count]).find_by_identifier(params[:identifier]) # 更新评测次数 game.update_column(:evaluate_count, (game.evaluate_count.to_i + 1)) + # game.challenge.shixun.increment!(:evaluate_count) # 选择题如果通关了,则不让再评测 if game.status == 2 diff --git a/app/services/management/school_report_service.rb b/app/services/management/school_report_service.rb index 2b18950d..b102c01a 100644 --- a/app/services/management/school_report_service.rb +++ b/app/services/management/school_report_service.rb @@ -4,7 +4,7 @@ class Management::SchoolReportService attr_reader :params sort_columns :student_count, :teacher_count, :homework_count, :other_homework_count, - :course_count, :active_course_count, :nearly_course_time, + :course_count, :active_course_count, :nearly_course_time, :shixun_count, :shixun_evaluate_count, default_by: :teacher_count, default_direction: :desc def initialize(params) @@ -47,6 +47,11 @@ class Management::SchoolReportService nearly_course_time_map = courses.joins(:course_activities).maximum('course_activities.updated_at') active_course_map = courses.where(is_end: false).count + shixun_map = Shixun.joins(creator: :user_extensions).where(user_extensions: { identity: User::TEACHER, school_id: ids }) + .group('school_id').count + evaluate_count_map = Shixun.joins(creator: :user_extensions).where(user_extensions: { identity: User::TEACHER, school_id: ids }) + .group('school_id').sum(:evaluate_count) + schools.map do |school| { id: school.id, @@ -58,6 +63,8 @@ class Management::SchoolReportService course_count: course_map[school.id], nearly_course_time: nearly_course_time_map[school.id], active_course_count: active_course_map[school.id], + shixun_count: shixun_map.fetch(school.id, 0), + shixun_evaluate_count: evaluate_count_map.fetch(school.id, 0) } end end @@ -78,6 +85,12 @@ class Management::SchoolReportService when 'course_count' then schools.joins('LEFT JOIN courses cs ON cs.school_id = schools.id AND cs.is_delete = 0') .select("#{base_query_column}, COUNT(*) course_count") + when 'shixun_count' then + schools.joins(teacher_extensions: :user).joins('INNER JOIN shixuns sx ON sx.user_id = users.id') + .select("#{base_query_column}, COUNT(*) shixun_count") + when 'shixun_evaluate_count' then + schools.joins(teacher_extensions: :user).joins('INNER JOIN shixuns sx ON sx.user_id = users.id') + .select("#{base_query_column}, SUM(sx.evaluate_count) shixun_evaluate_count") when 'nearly_course_time' then schools.joins('LEFT JOIN courses cs ON cs.school_id = schools.id AND cs.is_delete = 0') .joins('LEFT JOIN course_activities acs ON acs.course_id = cs.id') diff --git a/app/views/common/index.html.erb b/app/views/common/index.html.erb index df334ea8..35c63ca6 100644 --- a/app/views/common/index.html.erb +++ b/app/views/common/index.html.erb @@ -1 +1 @@ -Educoder
\ No newline at end of file +Educoder
\ No newline at end of file diff --git a/app/views/managements/schools/_contrast_search_form.html.erb b/app/views/managements/schools/_contrast_search_form.html.erb index 9597a9c7..b77f2dbb 100644 --- a/app/views/managements/schools/_contrast_search_form.html.erb +++ b/app/views/managements/schools/_contrast_search_form.html.erb @@ -12,7 +12,7 @@
<%= text_field_tag :grow_date_input, params[:grow_date_input], - class: 'grow-date-input winput-220-30', placeholder: '请选择时间段', + class: 'grow-date-input winput-220-30', placeholder: '请选择时间段(具体从当日5:00开始计算)', style: 'width: 400px;' %>
diff --git a/app/views/managements/schools/_statistics_list.html.erb b/app/views/managements/schools/_statistics_list.html.erb index 53c13ed8..0a0cb75d 100644 --- a/app/views/managements/schools/_statistics_list.html.erb +++ b/app/views/managements/schools/_statistics_list.html.erb @@ -9,6 +9,8 @@ <%= sort_tag('学生总人数', name: 'student_count', path: school_report_managements_path) %> <%= sort_tag('课堂总数', name: 'course_count', path: school_report_managements_path) %> <%= sort_tag('正在进行课堂数', name: 'active_course_count', path: school_report_managements_path) %> + <%= sort_tag('创建实训数', name: 'shixun_count', path: school_report_managements_path) %> + <%= sort_tag('评测次数', name: 'shixun_evaluate_count', path: school_report_managements_path) %> <%= sort_tag('实训作业总数', name: 'homework_count', path: school_report_managements_path) %> <%= sort_tag('其它作业总数', name: 'other_homework_count', path: school_report_managements_path) %> <%= sort_tag('动态时间', name: 'nearly_course_time', path: school_report_managements_path) %> @@ -24,6 +26,8 @@ <%= school[:student_count].to_i %> <%= school[:course_count].to_i %> <%= school[:active_course_count].to_i %> + <%= school[:shixun_count].to_i %> + <%= school[:shixun_evaluate_count].to_i %> <%= school[:homework_count].to_i %> <%= school[:other_homework_count].to_i %> <%= format_time school[:nearly_course_time] %> diff --git a/app/views/managements/schools/statistics.html.erb b/app/views/managements/schools/statistics.html.erb index 3aba8ab1..d4eff134 100644 --- a/app/views/managements/schools/statistics.html.erb +++ b/app/views/managements/schools/statistics.html.erb @@ -21,6 +21,8 @@ 学生总人数<%= @student_total %>人, 课堂总数<%= @course_total %>个, 正在进行课堂总数<%= @active_course_total %>个, + 创建实训数<%= @shixun_total %>个, + 评测次数<%= @shixun_evaluate_total %>个, 实训作业总数<%= @shixun_homework_total %>个, 其它作业总数<%= @other_homework_total %>个,
diff --git a/db/migrate/20190530055732_add_evaluate_count_to_shixuns.rb b/db/migrate/20190530055732_add_evaluate_count_to_shixuns.rb new file mode 100644 index 00000000..7bd6dcd1 --- /dev/null +++ b/db/migrate/20190530055732_add_evaluate_count_to_shixuns.rb @@ -0,0 +1,24 @@ +class AddEvaluateCountToShixuns < ActiveRecord::Migration + def up + add_column :shixuns, :evaluate_count, :integer, default: 0 + + # limit = 100 + # total = Shixun.count + # + # ((total / 100) + 1).times do |index| + # shixun_ids = Shixun.order(:id).limit(limit).offset(index * limit).pluck(:id) + # return if shixun_ids.blank? + # + # count_map = Game.joins(:challenge).where(challenges: { shixun_id: shixun_ids }).group('shixun_id').sum(:evaluate_count) + # + # id_str = count_map.keys.join(',') + # str = count_map.map { |shixun_id, count| "WHEN #{shixun_id} THEN #{count}" }.join(' ') + # + # execute "UPDATE shixuns SET evaluate_count = CASE id #{str} END WHERE id IN (#{id_str})" + # end + end + + def down + remove_column :shixuns, :evaluate_count + end +end diff --git a/public/assets/iconfont/demo_index.html b/public/assets/iconfont/demo_index.html index ae1000a0..1ef8180e 100644 --- a/public/assets/iconfont/demo_index.html +++ b/public/assets/iconfont/demo_index.html @@ -48,12 +48,6 @@
&#xe6d8;
-
  • - -
    章节
    -
    &#xe60f;
    -
  • -
  • css3
    @@ -72,6 +66,12 @@
    &#xe6b2;
  • +
  • + +
    章节
    +
    &#xe68e;
    +
  • +
  • 关闭
    @@ -90,6 +90,12 @@
    &#xe671;
  • +
  • + +
    pdf
    +
    &#xe740;
    +
  • +
  • 时间
    @@ -168,6 +174,12 @@
    &#xe639;
  • +
  • + +
    复制
    +
    &#xe68f;
    +
  • +
  • 点赞1
    @@ -216,12 +228,24 @@
    &#xe727;
  • +
  • + +
    提示
    +
    &#xe690;
    +
  • +
  • net
    &#xe607;
  • +
  • + +
    edit
    +
    &#xe691;
    +
  • +
  • @@ -234,6 +258,12 @@
    &#xe67f;
  • +
  • + +
    下载
    +
    &#xe6ac;
    +
  • +
  • 撤销
    @@ -246,6 +276,12 @@
    &#xe687;
  • +
  • + +
    标签
    +
    &#xe74f;
    +
  • +
  • 大数据存储
    @@ -258,6 +294,12 @@
    &#xe686;
  • +
  • + +
    添加成员
    +
    &#xe69a;
    +
  • +
  • 三角形
    @@ -306,6 +348,12 @@
    &#xe68b;
  • +
  • + +
    三点
    +
    &#xe6f8;
    +
  • +
  • base
    @@ -396,6 +444,12 @@
    &#xe68d;
  • +
  • + +
    上传图片
    +
    &#xe7fd;
    +
  • +
  • 登录Ip监控
    @@ -996,6 +1050,12 @@
    &#xe68c;
  • +
  • + +
    添加导航
    +
    &#xe604;
    +
  • +

    Unicode 引用

    @@ -1073,15 +1133,6 @@
    -
  • - -
    - 章节 -
    -
    .icon-zhangjie -
    -
  • -
  • @@ -1109,6 +1160,15 @@
  • +
  • + +
    + 章节 +
    +
    .icon-zhangjie1 +
    +
  • +
  • @@ -1136,6 +1196,15 @@
  • +
  • + +
    + pdf +
    +
    .icon-pdf +
    +
  • +
  • @@ -1253,6 +1322,15 @@
  • +
  • + +
    + 复制 +
    +
    .icon-fuzhi +
    +
  • +
  • @@ -1325,6 +1403,15 @@
  • +
  • + +
    + 提示 +
    +
    .icon-tishi1 +
    +
  • +
  • @@ -1334,6 +1421,15 @@
  • +
  • + +
    + edit +
    +
    .icon-edit +
    +
  • +
  • @@ -1352,6 +1448,15 @@
  • +
  • + +
    + 下载 +
    +
    .icon-xiazai1 +
    +
  • +
  • @@ -1370,6 +1475,15 @@
  • +
  • + +
    + 标签 +
    +
    .icon-biaoqian +
    +
  • +
  • @@ -1388,6 +1502,15 @@
  • +
  • + +
    + 添加成员 +
    +
    .icon-tianjiachengyuan +
    +
  • +
  • @@ -1460,6 +1583,15 @@
  • +
  • + +
    + 三点 +
    +
    .icon-sandian +
    +
  • +
  • @@ -1595,6 +1727,15 @@
  • +
  • + +
    + 上传图片 +
    +
    .icon-shangchuantupian1 +
    +
  • +
  • @@ -2495,6 +2636,15 @@
  • +
  • + +
    + 添加导航 +
    +
    .icon-tianjiadaohang +
    +
  • +

    font-class 引用

    @@ -2513,7 +2663,7 @@
    <link rel="stylesheet" href="./iconfont.css">
     

    第二步:挑选相应图标并获取类名,应用于页面:

    -
    <span class="iconfont icon--xxx"></span>
    +
    <span class="iconfont icon-xxx"></span>
     

    " @@ -2548,14 +2698,6 @@

    #icon-roundaddfill
    -
  • - -
    章节
    -
    #icon-zhangjie
    -
  • -
  • #icon-31
  • +
  • + +
    章节
    +
    #icon-zhangjie1
    +
  • +
  • #icon-weibiaoti12
  • +
  • + +
    pdf
    +
    #icon-pdf
    +
  • +
  • #icon-dianzan1
  • +
  • + +
    复制
    +
    #icon-fuzhi
    +
  • +
  • #icon-daimapeizhir
  • +
  • + +
    提示
    +
    #icon-tishi1
    +
  • +
  • #icon-net
  • +
  • + +
    edit
    +
    #icon-edit
    +
  • +
  • #icon-default
  • +
  • + +
    下载
    +
    #icon-xiazai1
    +
  • +
  • #icon-qq
  • +
  • + +
    标签
    +
    #icon-biaoqian
    +
  • +
  • #icon-mstest
  • +
  • + +
    添加成员
    +
    #icon-tianjiachengyuan
    +
  • +
  • #icon-chenggong
  • +
  • + +
    三点
    +
    #icon-sandian
    +
  • +
  • #icon-zhiliangfenxi
  • +
  • + +
    上传图片
    +
    #icon-shangchuantupian1
    +
  • +
  • #icon-shixundaibeijing
  • +
  • + +
    添加导航
    +
    #icon-tianjiadaohang
    +
  • +

    Symbol 引用

    diff --git a/public/assets/iconfont/iconfont.css b/public/assets/iconfont/iconfont.css index 6d4400d5..f4db5e84 100644 --- a/public/assets/iconfont/iconfont.css +++ b/public/assets/iconfont/iconfont.css @@ -1,10 +1,10 @@ @font-face {font-family: "iconfont"; - src: url('iconfont.eot?t=1555121827981'); /* IE9 */ - src: url('iconfont.eot?t=1555121827981#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), - url('iconfont.woff?t=1555121827981') format('woff'), - url('iconfont.ttf?t=1555121827981') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ - url('iconfont.svg?t=1555121827981#iconfont') format('svg'); /* iOS 4.1- */ + src: url('iconfont.eot?t=1559184647273'); /* IE9 */ + src: url('iconfont.eot?t=1559184647273#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), + url('iconfont.woff?t=1559184647273') format('woff'), + url('iconfont.ttf?t=1559184647273') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('iconfont.svg?t=1559184647273#iconfont') format('svg'); /* iOS 4.1- */ } .iconfont { @@ -147,10 +147,18 @@ content: "\e727"; } +.icon-tishi1:before { + content: "\e690"; +} + .icon-net:before { content: "\e607"; } +.icon-edit:before { + content: "\e691"; +} + .icon-suo:before { content: "\e6c9"; } @@ -159,6 +167,10 @@ content: "\e67f"; } +.icon-xiazai1:before { + content: "\e6ac"; +} + .icon-chexiao:before { content: "\e657"; } @@ -179,6 +191,10 @@ content: "\e686"; } +.icon-tianjiachengyuan:before { + content: "\e69a"; +} + .icon-triangle:before { content: "\e600"; } diff --git a/public/assets/iconfont/iconfont.eot b/public/assets/iconfont/iconfont.eot index acf4d561..861e815a 100644 Binary files a/public/assets/iconfont/iconfont.eot and b/public/assets/iconfont/iconfont.eot differ diff --git a/public/assets/iconfont/iconfont.js b/public/assets/iconfont/iconfont.js index c65b3873..4b2ab675 100644 --- a/public/assets/iconfont/iconfont.js +++ b/public/assets/iconfont/iconfont.js @@ -1 +1 @@ -!function(z){var c,o='',l=(c=document.getElementsByTagName("script"))[c.length-1].getAttribute("data-injectcss");if(l&&!z.__iconfont__svg__cssinject__){z.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}!function(c){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(c,0);else{var l=function(){document.removeEventListener("DOMContentLoaded",l,!1),c()};document.addEventListener("DOMContentLoaded",l,!1)}else document.attachEvent&&(h=c,i=z.document,a=!1,t=function(){a||(a=!0,h())},(o=function(){try{i.documentElement.doScroll("left")}catch(c){return void setTimeout(o,50)}t()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,t())});var h,i,a,t,o}(function(){var c,l,h,i,a,t;(c=document.createElement("div")).innerHTML=o,o=null,(l=c.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",h=l,(i=document.body).firstChild?(a=h,(t=i.firstChild).parentNode.insertBefore(a,t)):i.appendChild(h))})}(window); \ No newline at end of file +!function(z){var c,h='',l=(c=document.getElementsByTagName("script"))[c.length-1].getAttribute("data-injectcss");if(l&&!z.__iconfont__svg__cssinject__){z.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}!function(c){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(c,0);else{var l=function(){document.removeEventListener("DOMContentLoaded",l,!1),c()};document.addEventListener("DOMContentLoaded",l,!1)}else document.attachEvent&&(i=c,a=z.document,t=!1,(o=function(){try{a.documentElement.doScroll("left")}catch(c){return void setTimeout(o,50)}h()})(),a.onreadystatechange=function(){"complete"==a.readyState&&(a.onreadystatechange=null,h())});function h(){t||(t=!0,i())}var i,a,t,o}(function(){var c,l;(c=document.createElement("div")).innerHTML=h,h=null,(l=c.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",function(c,l){l.firstChild?function(c,l){l.parentNode.insertBefore(c,l)}(c,l.firstChild):l.appendChild(c)}(l,document.body))})}(window); \ No newline at end of file diff --git a/public/assets/iconfont/iconfont.svg b/public/assets/iconfont/iconfont.svg index a56bc3bb..c4477efd 100644 --- a/public/assets/iconfont/iconfont.svg +++ b/public/assets/iconfont/iconfont.svg @@ -29,9 +29,6 @@ Created by iconfont - - - @@ -41,6 +38,9 @@ Created by iconfont + + + @@ -50,6 +50,9 @@ Created by iconfont + + + @@ -89,6 +92,9 @@ Created by iconfont + + + @@ -113,27 +119,42 @@ Created by iconfont + + + + + + + + + + + + + + + @@ -158,6 +179,9 @@ Created by iconfont + + + @@ -203,6 +227,9 @@ Created by iconfont + + + @@ -503,6 +530,9 @@ Created by iconfont + + + diff --git a/public/assets/iconfont/iconfont.ttf b/public/assets/iconfont/iconfont.ttf index 08cd53af..9e09e9f9 100644 Binary files a/public/assets/iconfont/iconfont.ttf and b/public/assets/iconfont/iconfont.ttf differ diff --git a/public/assets/iconfont/iconfont.woff b/public/assets/iconfont/iconfont.woff index 109a76f5..c9036493 100644 Binary files a/public/assets/iconfont/iconfont.woff and b/public/assets/iconfont/iconfont.woff differ diff --git a/public/assets/iconfont/iconfont.woff2 b/public/assets/iconfont/iconfont.woff2 index 41b9904c..252cbb39 100644 Binary files a/public/assets/iconfont/iconfont.woff2 and b/public/assets/iconfont/iconfont.woff2 differ diff --git a/public/react/public/js/js_min_all.js b/public/react/public/js/js_min_all.js index 4e33b92c..2036aa1f 100644 --- a/public/react/public/js/js_min_all.js +++ b/public/react/public/js/js_min_all.js @@ -153,7 +153,10 @@ var EXPAND = 0; // 放大 var SHRINK = 1; // 缩小 var repositoryTabHeight = 40 - +function _resizeTpiPanel () { + $("#game_left_contents").width('400px'); + $("#game_right_contents").width( $(".labelN").width() - 400 + 'px'); +} $(function(){ function update_rows_and_cols(rows) { var _iframe = document.getElementById("game_webssh"); @@ -177,6 +180,7 @@ $(function(){ //var nCol = 0; lab.live('mousedown touchstart',function(){ $('#game_webssh').css('pointer-events', 'none') + $('#contentIframe').css('pointer-events', 'none') dragging = true; leftOffset = $(".labelN").offset().left; wrapWidth = $(".labelN").width(); @@ -186,6 +190,7 @@ $(function(){ cen.live('mousedown ',function(){ // 使得iframe不捕获事件 $('#game_webssh').css('pointer-events', 'none') + $('#contentIframe').css('pointer-events', 'none') flag = true; topOffset = $(".centerH").offset().top; wrapHeight = $(".centerH").height(); @@ -262,6 +267,8 @@ $(function(){ doc.live("mouseup touchend", function(e) { // 使得iframe可以继续捕获事件 $('#game_webssh').css('pointer-events', 'inherit') + $('#contentIframe').css('pointer-events', 'inherit') + flag = false; dragging = false; e.cancelBubble = true; diff --git a/public/react/src/context/TPIContextProvider.js b/public/react/src/context/TPIContextProvider.js index 2dd9267f..9beea340 100644 --- a/public/react/src/context/TPIContextProvider.js +++ b/public/react/src/context/TPIContextProvider.js @@ -307,7 +307,7 @@ pop_box_new(htmlvalue, 480, 182); // 将若干数据重新组织一下 _handleResponseData(resData) { - + let challenge = resData.challenge; challenge.isHtml = false; challenge.isWeb = false; @@ -387,7 +387,11 @@ pop_box_new(htmlvalue, 480, 182); currentGamePassed: false, loading: false, testSetsExpandedArray: testSetsExpandedArrayInitVal.slice(0), - }) + }, () => { + if (resData.shixun.vnc == true) { + window._resizeTpiPanel() + } + }) window.document.title = resData.shixun.name @@ -418,10 +422,21 @@ pop_box_new(htmlvalue, 480, 182); currentGamePassed: false, // 切换game时重置passed字段 }) + // // // test + // const response = {} + // response.data = {"tpm_modified":false,"tpm_cases_modified":false,"hide_code":false,"forbid_copy":false,"output_sets":{"test_sets":"{\"is_public\":1,\"result\":null,\"actual_output\":null,\"compile_success\":null,\"input\":\"9\",\"output\":\"3\\r\\n\"},{\"is_public\":1,\"result\":null,\"actual_output\":null,\"compile_success\":null,\"input\":\"110.25\",\"output\":\"10.5\\r\\n\"},{\"is_public\":0,\"result\":null,\"actual_output\":null,\"compile_success\":null,\"input\":\"-100\",\"output\":\"\\u65e0\\u7b97\\u672f\\u5e73\\u65b9\\u6839\\r\\n\"}","had_test_count":0,"test_sets_count":3,"had_passed_testsests_error_count":0},"latest_output":null,"mirror_name":["C/C++"],"multi_webssh":false,"has_answer":true,"st":0,"discusses_count":8,"game_count":3,"myshixun":{"id":140292,"shixun_id":49,"identifier":"ihprfcq2ta","gpid":156599,"status":0,"user_id":116,"commit_id":"5955e66e34b3b70913b4cb2f62ec5d84cdbe26c9","modify_time":"2017-10-13T15:14:34+08:00","reset_time":"2017-10-13T15:14:34+08:00","system_tip":false},"challenge":{"id":81,"subject":"\u6c42\u4e00\u4e2a\u6570\u7684\u7b97\u672f\u5e73\u65b9\u6839","position":2,"shixun_id":49,"st":0,"score":100,"path":"src/step2/SquareRoot.cpp","task_pass":"[TOC]\r\n\r\n---\r\n\r\n####\u4efb\u52a1\u63cf\u8ff0\r\n\u672c\u5173\u4efb\u52a1\u662f\u901a\u8fc7\u8c03\u7528`sqrt`\u51fd\u6570\u6765\u5b9a\u4e49\u4e00\u4e2a\u6c42\u7b97\u672f\u5e73\u65b9\u6839\u7684\u51fd\u6570\u5e76\u4ee5\u6b64\u6765\u8ba1\u7b97\u4e00\u4e2a\u6570\u7684\u7b97\u672f\u5e73\u65b9\u6839\u3002\r\n\r\n####\u76f8\u5173\u77e5\u8bc6\r\n\u5982\u679c\u4e00\u4e2a\u975e\u8d1f\u6570`x`\u7684\u5e73\u65b9\u7b49\u4e8e`a`\uff0c\u5373`$$x^2 = a$$`\uff0c`(a \u2265 0)`\uff0c\u90a3\u4e48\u8fd9\u4e2a\u975e\u8d1f\u6570`x`\u53eb\u505a`a`\u7684\u7b97\u672f\u5e73\u65b9\u6839\u3002`a`\u7684\u7b97\u672f\u5e73\u65b9\u6839\u8bb0\u4e3a`$$\\sqrt{a}$$`\uff0c\u8bfb\u4f5c`\u6839\u53f7a`\uff0c`a`\u53eb\u505a\u88ab\u5f00\u65b9\u6570\u3002\r\n\r\nC++\u4e2d\uff0c\u53ef\u4ee5\u8c03\u7528\u5e93\u51fd\u6570`sqrt()`\u6765\u6c42\u4e00\u4e2a\u6570\u7684\u7b97\u672f\u5e73\u65b9\u6839\u3002\r\n\r\n####\u7f16\u7a0b\u8981\u6c42\r\n\u672c\u5173\u7684\u7f16\u7a0b\u4efb\u52a1\u662f\u901a\u8fc7\u8c03\u7528`sqrt()`\u51fd\u6570\u6765\u8865\u5168`step2/SquareRoot.cpp`\u6587\u4ef6\u4e2d\u7684`SquareRoot(float n)`\u51fd\u6570\uff0c\u4ee5\u5b9e\u73b0\u8ba1\u7b97\u4e00\u4e2a\u6570\u7684\u7b97\u672f\u5e73\u65b9\u6839\u7684\u8981\u6c42\u3002\r\n\r\n\u6ce8\u610f\uff1a\r\n* \u5982\u679c\u8f93\u5165\u7684\u6570\u6ca1\u6709\u7b97\u6570\u5e73\u65b9\u6839\uff0c\u8fd4\u56de`-1`\u3002\r\n* \u5177\u4f53\u8bf7\u53c2\u89c1\u540e\u7eed\u6d4b\u8bd5\u6837\u4f8b\u3002\r\n\r\n\u672c\u5173\u6d89\u53ca\u7684\u4ee3\u7801\u6587\u4ef6`step2/SquareRoot.cpp`\u4e2d\u7684`SquareRoot`\u51fd\u6570\u7684\u4ee3\u7801\u6846\u67b6\u5982\u4e0b\uff1a\r\n\r\n```cpp\r\n#include \r\n\r\n// \u6c42n\u7684\u7b97\u672f\u5e73\u65b9\u6839\r\ndouble SquareRoot(float n)\r\n{\r\n // \u8bf7\u5728\u6b64\u6dfb\u52a0\u4ee3\u7801\uff0c\u8865\u5168\u51fd\u6570SquareRoot\r\n /********** Begin *********/\r\n\r\n\r\n /********** End **********/\r\n}\r\n```\r\n\r\n####\u6d4b\u8bd5\u8bf4\u660e\r\n\u672c\u5173\u7684\u6d4b\u8bd5\u6587\u4ef6\u662f`step2/SquareRootTest.cpp`\uff0c\u6d4b\u8bd5\u8fc7\u7a0b\u5982\u4e0b\uff1a\r\n1. \u5e73\u53f0\u7f16\u8bd1`step2/SquareRootTest.cpp`\uff0c\u7136\u540e\u94fe\u63a5\u76f8\u5173\u7a0b\u5e8f\u5e93\u5e76\u751f\u6210`SquareRootTest.exe`\uff1b\r\n2. \u5e73\u53f0\u8fd0\u884c`SquareRootTest.exe`\uff0c\u5e76\u4ee5\u6807\u51c6\u8f93\u5165\u65b9\u5f0f\u63d0\u4f9b\u6d4b\u8bd5\u8f93\u5165\uff1b\r\n3. \u5e73\u53f0\u83b7\u53d6`SquareRootTest.exe`\u7684\u8f93\u51fa\uff0c\u7136\u540e\u5c06\u5176\u4e0e\u9884\u671f\u8f93\u51fa\u5bf9\u6bd4\uff0c\u5982\u679c\u4e00\u81f4\u5219\u6d4b\u8bd5\u901a\u8fc7\uff1b\u5426\u5219\u6d4b\u8bd5\u5931\u8d25\u3002\r\n\r\n\u4ee5\u4e0b\u662f\u5e73\u53f0\u5bf9`step2/SquareRootTest.cpp`\u7684\u6837\u4f8b\u6d4b\u8bd5\u96c6\uff1a\r\n\r\n\u6d4b\u8bd5\u8f93\u5165\uff1a`9`\r\n\u9884\u671f\u8f93\u51fa\uff1a`3`\r\n\r\n\u6d4b\u8bd5\u8f93\u5165\uff1a`110.25`\r\n\u9884\u671f\u8f93\u51fa\uff1a`10.5`\r\n\r\n\u6d4b\u8bd5\u8f93\u5165\uff1a`-8`\r\n\u9884\u671f\u8f93\u51fa\uff1a`-1`\r\n\r\n\u5f00\u59cb\u4f60\u7684\u4efb\u52a1\u5427\uff0c\u795d\u4f60\u6210\u529f\uff01\r\n","modify_time":null,"web_route":null,"answer":null},"game":{"id":448025,"status":0,"myshixun_id":140292,"user_id":116,"final_score":0,"challenge_id":81,"identifier":"gih9uzwn8xfc","answer_open":0,"test_sets_view":false,"cost_time":0,"star":0,"modify_time":null,"open_time":"2019-05-30T11:00:19+08:00","updated_at":"2019-05-30T11:00:19+08:00"},"shixun":{"id":49,"name":"C++\u4e4b\u6574\u6570\u8ba1\u7b97\u57fa\u7840","gpid":2018,"modify_time":"2017-10-13T15:14:34+08:00","reset_time":"2017-10-13T15:14:34+08:00","language":"C++","propaedeutics":"####C++\u53d1\u5c55\u5386\u7a0b\r\nC++\u662f\u4e00\u79cd\u901a\u7528\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f46\u62e5\u6709\u6570\u636e\u5c01\u88c5\u3001\u6570\u636e\u9690\u85cf\u3001\u7ee7\u627f\u3001\u91cd\u7528\u3001\u91cd\u8f7d\u4ee5\u53ca\u591a\u6001\u7b49\u7279\u6027\uff0c\u8fd8\u652f\u6301\u8fc7\u7a0b\u5316\u7a0b\u5e8f\u8bbe\u8ba1\u3001\u9762\u5411\u5bf9\u8c61\u7a0b\u5e8f\u8bbe\u8ba1\u3001\u6cdb\u578b\u7a0b\u5e8f\u8bbe\u8ba1\u7b49\u591a\u79cd\u7a0b\u5e8f\u8bbe\u8ba1\u98ce\u683c\uff0c\u540c\u65f6\u8fd8\u63d0\u4f9b\u4e86\u5e95\u5c42\u5185\u5b58\u64cd\u4f5c\u7684\u529f\u80fd\u3002\u5176\u8bbe\u8ba1\u4eae\u70b9\u5728\u4e8e\u4f7f\u7528\u6027\u80fd\uff0c\u6548\u7387\u548c\u7075\u6d3b\u6027\uff0c\u662f\u8fc4\u4eca\u4e3a\u6b62\u6700\u53d7\u5e7f\u5927\u7a0b\u5e8f\u5458\u6b22\u8fce\u7684\u7f16\u7a0b\u8bed\u8a00\u4e4b\u4e00\u3002\r\n\r\n1979\u5e74\uff0c\u4e39\u9ea6\u8ba1\u7b97\u673a\u79d1\u5b66\u5bb6Bjarne Stroustrup\u535a\u58eb\u5728\u7f8e\u56fdAT&T\u8d1d\u5c14\u5b9e\u9a8c\u5ba4\u5f00\u59cb\u4e86\u4ece\u4e8b\u5c06C\u6539\u826f\u4e3a\u5e26\u7c7b\u7684C\uff08C with classes\uff09\u7684\u5de5\u4f5c\u30021983\u5e74\u8be5\u8bed\u8a00\u88ab\u6b63\u5f0f\u547d\u540d\u4e3aC++\uff0c\u5b83\u7684\u547d\u540d\u6765\u6e90\u4e8eC\u8bed\u8a00\u4e2d\u7684\u201c++\u201d\u8fd0\u7b97\u7b26\uff0c\u8fd9\u662f\u4e00\u79cd\u5e38\u89c1\u7684\u547d\u540d\u7ea6\u5b9a\uff0c\u5374\u5145\u5206\u5c55\u793a\u4e86\u5176\u4eceC\u8bed\u8a00\u6539\u8fdb\u7684\u5386\u53f2\uff0c\u66f4\u5f70\u663e\u4e86\u4e00\u79cd\u66f4\u52a0\u5f3a\u5927\u7684\u8ba1\u7b97\u673a\u7f16\u7a0b\u8bed\u8a00\u3002\r\n![](/attachments/download/169261)\r\n\r\nStroustrup\u535a\u58eb\u521b\u9020C++\u7684\u52a8\u673a\u4e3b\u8981\u6765\u6e90\u4e8e\u4ed6\u5728\u535a\u58eb\u671f\u95f4\u7684\u7f16\u7a0b\u7ecf\u9a8c\uff0c\u5c3d\u7ba1\u4ed6\u4f7f\u7528\u8fc7Simula\u548cALGOL\uff0c\u4e5f\u63a5\u89e6\u8fc7C\uff0c\u4f46\u4ed6\u7684\u521d\u8877\u662f\u9700\u8981\u4e00\u95e8\u7f16\u7a0b\u7b80\u5355\u3001\u6b63\u786e\u53ef\u9760\u3001\u9ad8\u6548\u8fd0\u884c\u4e14\u53ef\u79fb\u690d\u7684\u8bed\u8a00\uff0c\u56e0\u6b64\uff0c\u901a\u7528\u6027\u5f3a\u3001\u5feb\u901f\u3001\u4fbf\u643a\u4e14\u5e7f\u6cdb\u4f7f\u7528\u7684C\u8bed\u8a00\u88ab\u9009\u4e2d\u3002 \r\n\r\n####C++\u8bed\u8a00\u7279\u6027\r\n* \u652f\u6301\u6570\u636e\u5c01\u88c5\u548c\u6570\u636e\u9690\u85cf\r\nC++\u4e2d\uff0c\u7c7b\u662f\u652f\u6301\u6570\u636e\u5c01\u88c5\u7684\u5de5\u5177\uff0c\u5bf9\u8c61\u5219\u662f\u6570\u636e\u5c01\u88c5\u7684\u5b9e\u73b0\u3002C++\u901a\u8fc7\u65b0\u5efa\u7528\u6237\u5b9a\u4e49\u7c7b\u6765\u652f\u6301\u6570\u636e\u5c01\u88c5\u548c\u6570\u636e\u9690\u85cf\u3002\r\n\r\n* \u652f\u6301\u7ee7\u627f\u548c\u91cd\u7528\r\nC++\u7ee7\u627f\u548c\u91cd\u7528\u7684\u601d\u60f3\u662f\u5728\u73b0\u6709\u7c7b\u7684\u57fa\u7840\u4e0a\u58f0\u660e\u65b0\u7c7b\u578b\u3002\u901a\u8fc7\u7ee7\u627f\u548c\u91cd\u7528\u53ef\u4ee5\u66f4\u6709\u6548\u5730\u7ec4\u7ec7\u7a0b\u5e8f\u7ed3\u6784\uff0c\u660e\u786e\u7c7b\u95f4\u5173\u7cfb\uff0c\u5e76\u5145\u5206\u5229\u7528\u5df2\u6709\u7c7b\u6765\u5b8c\u6210\u66f4\u590d\u6742\u3001\u6df1\u5165\u7684\u5f00\u53d1\u3002\r\n\r\n* \u652f\u6301\u591a\u6001\u6027\r\nC++\u7684\u591a\u6001\u6027\u4e3a\u6bcf\u4e2a\u7c7b\u6307\u5b9a\u4e86\u8868\u73b0\u884c\u4e3a\uff0c\u4f7f\u5f97\u4e00\u4e2a\u5bf9\u8c61\u53ef\u4ee5\u6709\u72ec\u7279\u7684\u8868\u73b0\u65b9\u5f0f\uff0c\u800c\u53e6\u4e00\u4e2a\u5bf9\u8c61\u6709\u53e6\u4e00\u79cd\u8868\u73b0\u65b9\u5f0f\u3002\r\n\r\n####C++\u77e5\u8bc6\u70b9\u9884\u89c8\r\n\u4f5c\u4e3a\u4e00\u95e8\u6bd4C\u66f4\u5f3a\u5927\u7684\u901a\u7528\u7f16\u7a0b\u8bed\u8a00\uff0cC++\u6db5\u76d6\u4e86\u66f4\u4e3a\u4e30\u5bcc\u7684\u77e5\u8bc6\u70b9\uff0c\u5982\uff1a\u57fa\u672c\u6982\u5ff5\uff0c\u8f93\u5165\u548c\u8f93\u51fa\uff0c\u63a7\u5236\u8bed\u53e5\uff0c\u6570\u7ec4\uff0c\u51fd\u6570\uff0c\u6307\u9488\uff0c\u7ed3\u6784\u3001\u8054\u5408\u548c\u679a\u4e3e\uff0c\u94fe\u8868\uff0c\u7c7b\u548c\u5bf9\u8c61\uff0c\u7c7b\u548c\u5bf9\u8c61\u7684\u4f7f\u7528\uff0c\u8fd0\u7b97\u7b26\u91cd\u8f7d\uff0c\u7ee7\u627f\uff0c\u591a\u6001\uff0c\u5f02\u5e38\uff0c\u6a21\u677f\u7b49\u3002\u5177\u4f53\u5982\u4e0b\uff1a\r\n\r\n* \u57fa\u672c\u6982\u5ff5\uff1a\u5b57\u7b26\u96c6\u548c\u5173\u952e\u5b57\u3001\u57fa\u672c\u6570\u636e\u7c7b\u578b\u3001\u5e38\u91cf\u4e0e\u53d8\u91cf\u3001\u7c7b\u578b\u8f6c\u6362\u3001\u8fd0\u7b97\u7b26\u4e0e\u8868\u8fbe\u5f0f\u3002\r\n\r\n* \u8f93\u5165\u548c\u8f93\u51fa\uff1a\u6807\u51c6\u8f93\u5165\u8f93\u51fa\u51fd\u6570\u3001\u683c\u5f0f\u5316\u8f93\u5165\u8f93\u51fa\u51fd\u6570\u3001\u7528\u6d41\u8fdb\u884c\u8f93\u5165/\u8f93\u51fa\u3001\u6d41\u64cd\u7eb5\u7b97\u5b50\u3002\r\n\r\n* \u63a7\u5236\u8bed\u53e5\uff1a\u9009\u62e9\u8bed\u53e5\uff08`if\u3001if-else\u3001switch`\uff09\u3001\u5faa\u73af\u8bed\u53e5\uff08`for\u3001while\u3001do-while`\uff09\u3001\u8df3\u8f6c\u8bed\u53e5\uff08`break\u3001continue\u3001goto`\uff09\u3002\r\n\r\n* \u6570\u7ec4\uff1a\u4e00\u7ef4\u6570\u7ec4\u3001\u4e8c\u7ef4\u6570\u7ec4\u3001\u591a\u7ef4\u6570\u7ec4\u3001\u5b57\u7b26\u4e32\u3002\r\n\r\n* \u51fd\u6570\uff1a\u9884\u5b9a\u4e49\u51fd\u6570\u3001\u51fd\u6570\u7684\u5b9a\u4e49\u548c\u8c03\u7528\u3001\u51fd\u6570\u91cd\u8f7d\u3001\u5b58\u50a8\u7c7b\u522b\u3001\u4f5c\u7528\u57df\u3001\u9012\u5f52\u51fd\u6570\u3001\u9884\u5904\u7406\u6307\u4ee4\u3002\r\n\r\n* \u6307\u9488\uff1a\u6307\u9488\u7684\u5b9a\u4e49\u3001\u6307\u9488\u7684\u8fd0\u7b97\u3001\u6307\u9488\u4e0e\u6570\u7ec4\u3001\u5b57\u7b26\u6307\u9488\u4e0e\u5b57\u7b26\u6570\u7ec4\u3001\u6307\u9488\u4e0e`const`\u9650\u5b9a\u7b26\u3001\u6307\u9488\u4e0e\u5f15\u7528\u3001\u52a8\u6001\u5185\u5b58\u5206\u914d\u3001\u51fd\u6570\u6307\u9488\u3002\r\n\r\n* \u7ed3\u6784\u3001\u8054\u5408\u548c\u679a\u4e3e\uff1a\u7ed3\u6784\u7684\u5b9a\u4e49\u3001\u7ed3\u6784\u4e0e\u51fd\u6570\u3001\u7ed3\u6784\u4e0e\u6570\u7ec4\u3001\u7ed3\u6784\u4e0e\u6307\u9488\u3001\u8054\u5408\u7684\u5b9a\u4e49\u548c\u4f7f\u7528\u3001\u679a\u4e3e\u548c\u679a\u4e3e\u578b\u53d8\u91cf\u7684\u5b9a\u4e49\u3002\r\n\r\n* \u94fe\u8868\uff1a\u5355\u9879\u94fe\u8868\u3001\u53cc\u5411\u94fe\u8868\u3002\r\n\r\n* \u7c7b\u548c\u5bf9\u8c61\uff1a\u7c7b\u548c\u5bf9\u8c61\u7684\u5b9a\u4e49\u3001\u6784\u9020\u51fd\u6570\u3001\u6790\u6784\u51fd\u6570\u3002\r\n\r\n* \u7c7b\u548c\u5bf9\u8c61\u7684\u4f7f\u7528\uff1a\u7c7b\u7684\u590d\u5408\u3001`this`\u6307\u9488\u3001`const`\u7279\u6027\u3001\u53cb\u5143\u51fd\u6570\u548c\u53cb\u5143\u7c7b\u3002\r\n\r\n* \u8fd0\u7b97\u7b26\u91cd\u8f7d\uff1a\u8fd0\u7b97\u7b26\u91cd\u8f7d\u7684\u6982\u5ff5\u3001\u8fd0\u7b97\u7b26\u6210\u5458\u51fd\u6570\u4e0e\u53cb\u5143\u51fd\u6570\u3001\u5355\u76ee\u8fd0\u7b97\u7b26\u91cd\u8f7d\u3001\u91cd\u8f7d\u6d41\u63d2\u5165\u548c\u6d41\u63d0\u53d6\u8fd0\u7b97\u7b26\u3001\u53cc\u76ee\u8fd0\u7b97\u7b26\u91cd\u8f7d\u3001\u8d4b\u503c\u8fd0\u7b97\u7b26\u91cd\u8f7d\u3001\u7c7b\u578b\u4e4b\u95f4\u7684\u8f6c\u6362\u3002\r\n\r\n* \u7ee7\u627f\uff1a\u7ee7\u627f\u7684\u5b9a\u4e49\u3001\u7c7b\u6307\u9488\u3001\u591a\u91cd\u7ee7\u627f\u3002\r\n\r\n* \u591a\u6001\uff1a\u865a\u51fd\u6570\u3001\u62bd\u8c61\u57fa\u7c7b\u548c\u7eaf\u865a\u51fd\u6570\u3001\u865a\u6790\u6784\u51fd\u6570\u3002\r\n\r\n* \u5f02\u5e38\uff1a\u5f02\u5e38\u7684\u629b\u51fa\u548c\u4f20\u64ad\u3001\u5f02\u5e38\u7684\u6355\u83b7\u548c\u5904\u7406\u3002\r\n\r\n* \u6a21\u677f\uff1a\u51fd\u6570\u6a21\u677f\u3001\u7c7b\u6a21\u677f\u3002\r\n\r\n####C++\u4e0e\u5176\u4ed6\u7f16\u7a0b\u8bed\u8a00\u7684\u5bf9\u6bd4\r\nC++\u8bed\u8a00\u4e0e\u5176\u4ed6\u4e3b\u6d41\u7f16\u7a0b\u8bed\u8a00\u7684\u5bf9\u6bd4\u5982\u4e0b\uff1a\r\n![](/attachments/download/169262)\r\n\r\n![](/attachments/download/169266)\r\n\u5f53\u7136\uff0c\u4e0a\u8ff0\u56fe\u8868\u5217\u51fa\u7684\u7f16\u7a0b\u8bed\u8a00\u4e00\u76f4\u5904\u4e8e\u53d1\u5c55\u548c\u53d8\u5316\u4e2d\uff0c\u5176\u4e2d\u7684\u5bf9\u6bd4\u4ec5\u4f9b\u53c2\u8003\u3002\u6211\u4eec\u5728\u9009\u62e9\u4e00\u79cd\u5f00\u53d1\u8bed\u8a00\u65f6\uff0c\u4e0d\u4ec5\u8981\u8003\u8651\u8bed\u8a00\u672c\u8eab\u7684\u7279\u6027\uff0c\u5f88\u591a\u65f6\u5019\u8fd8\u9700\u8981\u8003\u8651\u5f00\u53d1\u56e2\u961f\u7684\u7279\u70b9\uff0c\u5df2\u6709\u8f6f\u4ef6\u8d44\u4ea7\u7684\u7f16\u7a0b\u8bed\u8a00\u548c\u67b6\u6784\uff0c\u5f53\u5730\u7a0b\u5e8f\u5458\u4eba\u624d\u7684\u5206\u5e03\u7279\u70b9\u7b49\u5404\u79cd\u56e0\u7d20\u3002\r\n\r\n####\u53c2\u8003\u6587\u732e\r\n* \u738b\u633a\u3001\u5468\u4f1a\u5e73\u3001\u8d3e\u4e3d\u4e3d\u3001\u5f90\u9521\u5c71\u8457\uff0cC++\u7a0b\u5e8f\u8bbe\u8ba1\uff08\u7b2c3\u7248\uff09\uff0c\u6e05\u534e\u5927\u5b66\u51fa\u7248\u793e\uff0c2015\u5e742\u6708\u7b2c3\u7248\r\n* \u8c2d\u6d69\u5f3a\u8457\uff0cC++\u9762\u5411\u5bf9\u8c61\u7a0b\u5e8f\u8bbe\u8ba1\uff08\u7b2c2\u7248\uff09\uff0c\u6e05\u534e\u5927\u5b66\u51fa\u7248\u793e\uff0c2014\u5e747\u6708\u7b2c2\u7248\r\n* Wikipeida, C++, https://en.wikipedia.org/wiki/C%2B%2B\r\n* \u767e\u5ea6\u767e\u79d1, C++, http://baike.baidu.com/item/C++","status":2,"identifier":"nf9ja46l","test_set_permission":true,"hide_code":false,"forbid_copy":false,"hidden":false,"webssh":0,"user_id":6,"code_hidden":false,"task_pass":false,"exec_time":40,"multi_webssh":false,"vnc":false},"record":null,"grade":50,"prev_game":"25razqibyps6","next_game":"p9ea4h8zx7fg","username":"\u77f3\u5934","image_url":"avatars/User/b","user_url":"/users/shitou","praise_count":0,"user_praise":false,"time_limit":40,"tomcat_url":"http://10.9.63.225","is_teacher":false,"power":1,"myshixun_manager":true,"vnc":false} + // response.data.shixun.vnc = true + // response.data.vnc_url = 'http://www.baidu.com' + // response.data.shixun.zip_path = 'asdfasdfasfd' + // this._handleResponseData(response.data) + // return; + + axios.get(url, { withCredentials: true, }) .then((response) => { + console.log(response); // {"status":1,"message":"Unauthorized. \u7528\u6237\u8ba4\u8bc1\u5931\u8d25."} if (response.data.status == -1) { diff --git a/public/react/src/modules/page/Index.js b/public/react/src/modules/page/Index.js index 8653ecd9..42f55df9 100644 --- a/public/react/src/modules/page/Index.js +++ b/public/react/src/modules/page/Index.js @@ -181,9 +181,13 @@ class Index extends Component { challenge={context.challenge} myshixun={context.myshixun} shixun={context.shixun} + vnc_url={context.vnc_url} + zip_path={context.zip_path} + + loading={context.loading} - discusses_count={context.discusses_count} - hide_code={context.hide_code} + discusses_count={context.discusses_count} + hide_code={context.hide_code} readGameAnswer={context.readGameAnswer} @@ -197,7 +201,7 @@ class Index extends Component { time_limit={context.time_limit} - resetTestSetsExpandedArray={context.resetTestSetsExpandedArray} + resetTestSetsExpandedArray={context.resetTestSetsExpandedArray} onRunCodeTestFinish={context.onRunCodeTestFinish} onRunChooseTestFinish={context.onRunChooseTestFinish} testSetUnlock={context.testSetUnlock} diff --git a/public/react/src/modules/page/MainContent.js b/public/react/src/modules/page/MainContent.js index ee3fcdf9..abe0f7cf 100644 --- a/public/react/src/modules/page/MainContent.js +++ b/public/react/src/modules/page/MainContent.js @@ -17,17 +17,15 @@ import Button from 'material-ui/Button'; import './tpiPage.css'; import './tpiPageForMobile.css'; const $ = window.$; -const showIframeContent = window.location.search.indexOf('vnc=1') != -1; +// const showIframeContent = window.location.search.indexOf('vnc=1') != -1; class MainContent extends Component { componentDidMount() { // ios下图标位置有问题 - if (!showIframeContent) { - setTimeout(()=>{ - if (window.$('.b-label>.resize-helper').position().top < 100) { - window.$('.b-label>.resize-helper').css('top', '200px') - } - }, 4000) - } + setTimeout(()=>{ + if (window.$('.b-label>.resize-helper').position().top < 100) { + window.$('.b-label>.resize-helper').css('top', '200px') + } + }, 4000) $("body").css("padding-right","0px!important") } onResizeButtonClick = () => { @@ -35,7 +33,7 @@ class MainContent extends Component { } render() { const { challenge, output_sets, onRunCodeTest, latest_output, record, st, readRepoTimeout, - onTestSetHeaderClick, loading, codeLoading } = this.props + onTestSetHeaderClick, loading, codeLoading, shixun, vnc_url } = this.props // if (output_sets && output_sets.test_sets) { // const test_sets_array = JSON.parse("[" + output_sets.test_sets + "]"); @@ -48,6 +46,7 @@ class MainContent extends Component { } else { games_repository_contents_style = {overflow: 'hidden', height: '445px'} } + const showIframeContent = shixun && shixun.vnc == true return (
    @@ -68,19 +67,19 @@ class MainContent extends Component {
    {/* - iframe模式下需要这两个样式来调整 - .page--body { z-index: 9999; } - .resize-helper { top: 10px } + iframe模式下可以使用样式控制不接收鼠标事件 + 注意 page--body 不能设置index 7999 弹出框的index才1300 + .page--body { z-index: ${showIframeContent ? '7999': '1'} ; } + .b-label>.resize-helper { top: ${showIframeContent ? '10px': '50%'} } + */} - { showIframeContent ? : + { showIframeContent ? : {/* 旧版本、评测等待提示--更新提示块*/} {/*
    diff --git a/public/react/src/modules/page/MainContentContainer.js b/public/react/src/modules/page/MainContentContainer.js index b7fcdfa8..bd73d7c0 100644 --- a/public/react/src/modules/page/MainContentContainer.js +++ b/public/react/src/modules/page/MainContentContainer.js @@ -229,6 +229,10 @@ class MainContentContainer extends Component { // arg_path 点击文件目录树时,传入的点击节点对应的path fetchRepositoryCode( props, arg_path, type, isRetry) { const { challenge, showSnackbar, game, shixun, hide_code } = props ? props : this.props; + if (shixun.vnc == true) { + // vnc模式下不需要加载代码 + return true; + } if (hide_code) { // 隐藏code的实训 this.setState({ codeLoading: false }); return; @@ -267,6 +271,15 @@ class MainContentContainer extends Component { // this._cancel = null; } const that = this; + + // test + // console.log('---- fetch code') + // const _code = '"#include\n\n// \u6c42n\u7684\u7b97\u672f\u5e73\u65b9\u6839\ndouble SquareRoot(float n)\n{\n // \u8bf7\u5728\u6b64\u6dfb\u52a0\u4ee3\u7801\uff0c\u8865\u5168\u51fd\u6570SquareRoot\n /********** Begin *********/\n\n\n /********** End **********/\n}"' + // this.oldRepositoryCode = _code; + // this.updateRepositoryCode(_code, updateCodeMirror) + // return + + this.setState({ gameBuilding: false, codeLoading: true }); axios.get(fetchRepoCodeUrl, { withCredentials: true, diff --git a/public/react/src/modules/page/main/CodeRepositoryView.js b/public/react/src/modules/page/main/CodeRepositoryView.js index d66b5162..5165bf67 100644 --- a/public/react/src/modules/page/main/CodeRepositoryView.js +++ b/public/react/src/modules/page/main/CodeRepositoryView.js @@ -296,7 +296,7 @@ class CodeRepositoryView extends Component { const { repositoryCode, onRepositoryCodeUpdate, showFilesDrawer, drawerOpen, loadingFirstRepoFiles , challenge, evaluateViewExpanded, onRepositoryViewExpand, codeStatus , showResetCodeDialog, showResetPassedCodeDialog, tabIndex, tabIndexChange, game, shixun, isEditablePath, currentPath - , showSettingDrawer, hide_code } = this.props; + , showSettingDrawer, hide_code, myshixun_manager, zip_path } = this.props; // onRequestChange={(drawerOpen) => showFilesDrawer(drawerOpen)} /* @@ -402,11 +402,20 @@ class CodeRepositoryView extends Component { } + + { !shixun.code_hidden && tabIndex === 0 && } + + {/* onClick={showFilesDrawer.bind(this, true)} target='_blank'*/} + { myshixun_manager == true && + + + + }