educoder/app/views/courses/show_comparecode.html.erb

113 lines
4.3 KiB
Plaintext

<% content_for :header_tags do %>
<%= javascript_include_tag "/assets/codemirror/codemirror_python_ruby_c" %>
<%= stylesheet_link_tag "/assets/codemirror/codemirror" %>
<%= stylesheet_link_tag "/assets/codemirror/merge" %>
<%= javascript_include_tag "https://cdnjs.cloudflare.com/ajax/libs/diff_match_patch/20121119/diff_match_patch.js"%>
<%= javascript_include_tag "/assets/codemirror/merge" %>
<% end %>
<style type="text/css">
.CodeMirror-merge {position: relative; border: 0px solid #ddd;white-space: pre;}
</style>
<div class="edu-class-container " >
<p class="mb10"><i class="fa fa-map-marker mr5 color-grey"></i><a href="<%= course_path(@course) %>"><%= @course.name %></a> > <a href="<%= homework_common_index_path(:course => @course.id, :homework_type => @homework.homework_type) %>"><%= @homework.homework_type_ch %>作业</a>
<% if @index %>
>#<%= link_to (get_hw_index(@homework, @is_teacher, @homework.homework_type) + 1), student_work_index_path(:homework => @homework.id) %>
<% end %>
</p>
<div class="edu-con-top clearfix ">
<p class="ml15 fl ">查重结果</p>
<span class="ml15 fl color-grey"><%= format_time @homework.simi_time %></span>
<a href="<%= code_repeat_course_path(@course, :homework => @homework.id) %>" class="fr font-12 mr15 mt3 link-color-grey">返回</a>
</div>
<div class="edu-con-bg01 mt15" >
<div class="">
<table class="edu-pop-table edu-txt-center " cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a class="edu-txt-w100 task-hide "><%= @src_username %></a></td>
<td>
<% if @simi_value.to_i >= 90 %>
<a style="color:red;text-align:center;">相似度<%=@simi_value.to_i%>%</a>
<% else %>
<a style="text-align:center;">相似度<%=@simi_value.to_i%>%</a>
<% end %>
</td>
<td><a class="edu-txt-w100 task-hide "><%= @dst_username %></a></td>
</tr>
</tbody>
</table>
<pre id = "program-src_1" style = "display: none" ><%= @src_code if @src_code %></pre>
<pre id = "program-src_2" style = "display: none" ><%= @dst_code if @dst_code%></pre>
<div class = "program-compare-code" id=program-compare-code></div>
</div>
</div>
</div>
<script>
var program_name = "text/x-csrc";
var language = <%= @homework.language.to_i %>;
if (language == 1) {
program_name = 'text/x-csrc';
} else if(language==2){
program_name = 'text/x-c++src';
}else if(language==3){
program_name = 'text/x-cython';
} else if(language==4){
program_name = 'text/x-java';
}
var value, orig1, orig2, dv, panes = 2, highlight = true, connect = null, collapse = false;
function initUI() {
if (value == null) return;
var target = document.getElementById("program-compare-code");
target.innerHTML = "";
dv = CodeMirror.MergeView(target, {
value: value,
origLeft: panes == 3 ? orig1 : null,
orig: orig2,
lineNumbers: true,
mode: program_name,
highlightDifferences: highlight,
connect: connect,
collapseIdentical: collapse
});
}
function toggleDifferences() {
dv.setShowDifferences(highlight = !highlight);
}
value = $("#program-src_1").text();
orig1 = $("#program-src_1").text();
orig2 = $("#program-src_2").text();
initUI();
function mergeViewHeight(mergeView) {
function editorHeight(editor) {
if (!editor) return 0;
return editor.getScrollInfo().height;
}
return Math.max(editorHeight(mergeView.leftOriginal()),
editorHeight(mergeView.editor()),
editorHeight(mergeView.rightOriginal()));
}
function resize(mergeView) {
var height = mergeViewHeight(mergeView);
for(;;) {
if (mergeView.leftOriginal())
mergeView.leftOriginal().setSize(null, height);
mergeView.editor().setSize(null, height);
if (mergeView.rightOriginal())
mergeView.rightOriginal().setSize(null, height);
var newHeight = mergeViewHeight(mergeView);
if (newHeight >= height) break;
else height = newHeight;
}
mergeView.wrap.style.height = height + "px";
}
</script>