Skip to content

Commit 2fb4327

Browse files
committed
Split HTML template from other headers and paddings.
1 parent 6ec7510 commit 2fb4327

File tree

2 files changed

+102
-95
lines changed

2 files changed

+102
-95
lines changed

pyjudge/visualize/__init__.py

+98-1
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,111 @@
44

55
from . import vis_html_data
66

7+
html_template_data_main = r"""
8+
<body class="hold-transition skin-blue sidebar-mini">
9+
<div id="container-mainframe" class="animated">
10+
<section class="content-header">
11+
<h1>pyJudge Aggregative Results<small>${json_data['pyjudge-version']}</small></h1>
12+
<ol class="breadcrumb"><li class="active">Results</li></ol>
13+
</section>
14+
<section class="content"><div class="row"><div class="col-md-12">
15+
<div class="nav-tabs-custom">
16+
<ul class="nav nav-tabs">
17+
<li class="active"><a href="#compiler" data-toggle="tab">Compiler</a></li>
18+
% for test in json_data['judger-output']:
19+
<li><a href="#test-${test['judge-id']}" data-toggle="tab">Test #${test['judge-id'] + 1}</a></li>
20+
% endfor
21+
</ul>
22+
<div class="tab-content">
23+
<div class="active tab-pane" id="compiler">
24+
<div class="form-horizontal"><div class="form-group">
25+
<label class="col-sm-2 control-label">Input / Compiler Return Code</label>
26+
<div class="col-sm-10"><input class="form-control" value="${json_data['compiler-output']['input']['return-code']}"></div>
27+
</div></div>
28+
% if len(json_data['compiler-output']['input']['output']) > 1:
29+
<div class="form-horizontal"><div class="form-group">
30+
<label class="col-sm-2 control-label">Input / Compiler Output</label>
31+
<div class="col-sm-10"><textarea class="form-control" style="font-family: Consolas; height: 150px; resize: none;">${json_data['compiler-output']['input']['output']}</textarea></div>
32+
</div></div>
33+
% endif
34+
<div class="form-horizontal"><div class="form-group">
35+
<label class="col-sm-2 control-label">Standard Output / Compiler Return Code</label>
36+
<div class="col-sm-10"><input class="form-control" value="${json_data['compiler-output']['output']['return-code']}"></div>
37+
</div></div>
38+
% if len(json_data['compiler-output']['output']['output']) > 1:
39+
<div class="form-horizontal"><div class="form-group">
40+
<label class="col-sm-2 control-label">Standard Output / Compiler Output</label>
41+
<div class="col-sm-10"><textarea class="form-control" style="font-family: Consolas; height: 150px; resize: none;">${json_data['compiler-output']['output']['output']}</textarea></div>
42+
</div></div>
43+
% endif
44+
<div class="form-horizontal"><div class="form-group">
45+
<label class="col-sm-2 control-label">Output / Compiler Return Code</label>
46+
<div class="col-sm-10"><input class="form-control" value="${json_data['compiler-output']['user-code']['return-code']}"></div>
47+
</div></div>
48+
% if len(json_data['compiler-output']['user-code']['output']) > 1:
49+
<div class="form-horizontal"><div class="form-group">
50+
<label class="col-sm-2 control-label">Output / Compiler Output</label>
51+
<div class="col-sm-10"><textarea class="form-control" style="font-family: Consolas; height: 150px; resize: none;">${json_data['compiler-output']['user-code']['output']}</textarea></div>
52+
</div></div>
53+
% endif
54+
% for test in json_data['judger-output']:
55+
<div class="form-horizontal"><div class="form-group">
56+
<label class="col-sm-2 control-label">Test #${test['judge-id'] + 1} Results</label>
57+
<div class="col-sm-10"><input class="form-control" value="${test['judge-result-str']}"></div>
58+
</div></div>
59+
% endfor
60+
</div>
61+
% for test in json_data['judger-output']:
62+
<div class="tab-pane" id="test-${test['judge-id']}">
63+
<div class="form-horizontal"><div class="form-group">
64+
<label class="col-sm-2 control-label">Status</label>
65+
<div class="col-sm-10"><input class="form-control" value="${test['judge-result-str']}"></div>
66+
</div></div>
67+
<div class="form-horizontal"><div class="form-group">
68+
<label class="col-sm-2 control-label">Time Cost</label>
69+
<div class="col-sm-10"><input class="form-control" value="User: ${int(test['execution-status']['user-code']['time'] * 1000)} ms / Std: ${int(test['execution-status']['output']['time'] * 1000)} ms"></div>
70+
</div></div>
71+
<div class="form-horizontal"><div class="form-group">
72+
<label class="col-sm-2 control-label">Memory Cost</label>
73+
<div class="col-sm-10"><input class="form-control" value="User: ${int(test['execution-status']['user-code']['memory'] / 1024)} KB / Std: ${int(test['execution-status']['output']['memory'] / 1024)} KB"></div>
74+
</div></div>
75+
<div class="form-horizontal"><div class="form-group">
76+
<label class="col-sm-2 control-label">Case Hash</label>
77+
<div class="col-sm-10"><input class="form-control" value="${test['hash']}"></div>
78+
</div></div>
79+
% if test['display-output']:
80+
<div class="row">
81+
<div class="col-sm-4">
82+
<h4><b>Input</b></h4>
83+
<textarea style="font-family: Consolas; resize: none; width: 100%; height: 1000px;">${test['execution-status']['input']['stdout']}</textarea>
84+
</div>
85+
<div class="col-sm-4">
86+
<h4><b>User Output</b></h4>
87+
<textarea style="font-family: Consolas; resize: none; width: 100%; height: 1000px;">${test['execution-status']['user-code']['stdout']}</textarea>
88+
</div>
89+
<div class="col-sm-4">
90+
<h4><b>Standard Output</b></h4>
91+
<textarea style="font-family: Consolas; resize: none; width: 100%; height: 1000px;">${test['execution-status']['output']['stdout']}</textarea>
92+
</div>
93+
</div>
94+
% endif
95+
</div>
96+
% endfor
97+
</div>
98+
</div>
99+
</div></div></section>
100+
</div>
101+
"""
102+
7103
def create(json_data):
8104
""" Create visualized HTML with JSON input in dict(). """
9-
data = vis_html_data.html_template_data
105+
data = html_template_data_main
10106
if type(data) == bytes:
11107
data = data.decode('utf-8', 'ignore')
12108
data = mako.template.Template(
13109
text = data,
14110
input_encoding = 'utf-8').render(
15111
json_data = json_data
16112
)
113+
data = vis_html_data.html_template_data_begin + data + vis_html_data.html_template_data_end
17114
return data

pyjudge/visualize/vis_html_data.py

+4-94
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
html_template_data = r"""<!DOCTYPE html>
1+
html_template_data_begin = r"""<!DOCTYPE html>
22
<html>
33
<head>
44
<meta charset="utf-8">
@@ -1351,99 +1351,9 @@
13511351
<!-- End styles.css -->
13521352
</head>
13531353
<!-- Begin HTML -->
1354-
<body class="hold-transition skin-blue sidebar-mini">
1355-
<div id="container-mainframe" class="animated">
1356-
<section class="content-header">
1357-
<h1>pyJudge Aggregative Results<small>${json_data['pyjudge-version']}</small></h1>
1358-
<ol class="breadcrumb"><li class="active">Results</li></ol>
1359-
</section>
1360-
<section class="content"><div class="row"><div class="col-md-12">
1361-
<div class="nav-tabs-custom">
1362-
<ul class="nav nav-tabs">
1363-
<li class="active"><a href="#compiler" data-toggle="tab">Compiler</a></li>
1364-
% for test in json_data['judger-output']:
1365-
<li><a href="#test-${test['judge-id']}" data-toggle="tab">Test #${test['judge-id'] + 1}</a></li>
1366-
% endfor
1367-
</ul>
1368-
<div class="tab-content">
1369-
<div class="active tab-pane" id="compiler">
1370-
<div class="form-horizontal"><div class="form-group">
1371-
<label class="col-sm-2 control-label">Input / Compiler Return Code</label>
1372-
<div class="col-sm-10"><input class="form-control" value="${json_data['compiler-output']['input']['return-code']}"></div>
1373-
</div></div>
1374-
% if len(json_data['compiler-output']['input']['output']) > 1:
1375-
<div class="form-horizontal"><div class="form-group">
1376-
<label class="col-sm-2 control-label">Input / Compiler Output</label>
1377-
<div class="col-sm-10"><textarea class="form-control" style="font-family: Consolas; height: 150px; resize: none;">${json_data['compiler-output']['input']['output']}</textarea></div>
1378-
</div></div>
1379-
% endif
1380-
<div class="form-horizontal"><div class="form-group">
1381-
<label class="col-sm-2 control-label">Standard Output / Compiler Return Code</label>
1382-
<div class="col-sm-10"><input class="form-control" value="${json_data['compiler-output']['output']['return-code']}"></div>
1383-
</div></div>
1384-
% if len(json_data['compiler-output']['output']['output']) > 1:
1385-
<div class="form-horizontal"><div class="form-group">
1386-
<label class="col-sm-2 control-label">Standard Output / Compiler Output</label>
1387-
<div class="col-sm-10"><textarea class="form-control" style="font-family: Consolas; height: 150px; resize: none;">${json_data['compiler-output']['output']['output']}</textarea></div>
1388-
</div></div>
1389-
% endif
1390-
<div class="form-horizontal"><div class="form-group">
1391-
<label class="col-sm-2 control-label">Output / Compiler Return Code</label>
1392-
<div class="col-sm-10"><input class="form-control" value="${json_data['compiler-output']['user-code']['return-code']}"></div>
1393-
</div></div>
1394-
% if len(json_data['compiler-output']['user-code']['output']) > 1:
1395-
<div class="form-horizontal"><div class="form-group">
1396-
<label class="col-sm-2 control-label">Output / Compiler Output</label>
1397-
<div class="col-sm-10"><textarea class="form-control" style="font-family: Consolas; height: 150px; resize: none;">${json_data['compiler-output']['user-code']['output']}</textarea></div>
1398-
</div></div>
1399-
% endif
1400-
% for test in json_data['judger-output']:
1401-
<div class="form-horizontal"><div class="form-group">
1402-
<label class="col-sm-2 control-label">Test #${test['judge-id'] + 1} Results</label>
1403-
<div class="col-sm-10"><input class="form-control" value="${test['judge-result-str']}"></div>
1404-
</div></div>
1405-
% endfor
1406-
</div>
1407-
% for test in json_data['judger-output']:
1408-
<div class="tab-pane" id="test-${test['judge-id']}">
1409-
<div class="form-horizontal"><div class="form-group">
1410-
<label class="col-sm-2 control-label">Status</label>
1411-
<div class="col-sm-10"><input class="form-control" value="${test['judge-result-str']}"></div>
1412-
</div></div>
1413-
<div class="form-horizontal"><div class="form-group">
1414-
<label class="col-sm-2 control-label">Time Cost</label>
1415-
<div class="col-sm-10"><input class="form-control" value="User: ${int(test['execution-status']['user-code']['time'] * 1000)} ms / Std: ${int(test['execution-status']['output']['time'] * 1000)} ms"></div>
1416-
</div></div>
1417-
<div class="form-horizontal"><div class="form-group">
1418-
<label class="col-sm-2 control-label">Memory Cost</label>
1419-
<div class="col-sm-10"><input class="form-control" value="User: ${int(test['execution-status']['user-code']['memory'] / 1024)} KB / Std: ${int(test['execution-status']['output']['memory'] / 1024)} KB"></div>
1420-
</div></div>
1421-
<div class="form-horizontal"><div class="form-group">
1422-
<label class="col-sm-2 control-label">Case Hash</label>
1423-
<div class="col-sm-10"><input class="form-control" value="${test['hash']}"></div>
1424-
</div></div>
1425-
% if test['display-output']:
1426-
<div class="row">
1427-
<div class="col-sm-4">
1428-
<h4><b>Input</b></h4>
1429-
<textarea style="font-family: Consolas; resize: none; width: 100%; height: 1000px;">${test['execution-status']['input']['stdout']}</textarea>
1430-
</div>
1431-
<div class="col-sm-4">
1432-
<h4><b>User Output</b></h4>
1433-
<textarea style="font-family: Consolas; resize: none; width: 100%; height: 1000px;">${test['execution-status']['user-code']['stdout']}</textarea>
1434-
</div>
1435-
<div class="col-sm-4">
1436-
<h4><b>Standard Output</b></h4>
1437-
<textarea style="font-family: Consolas; resize: none; width: 100%; height: 1000px;">${test['execution-status']['output']['stdout']}</textarea>
1438-
</div>
1439-
</div>
1440-
% endif
1441-
</div>
1442-
% endfor
1443-
</div>
1444-
</div>
1445-
</div></div></section>
1446-
</div>
1354+
"""
1355+
1356+
html_template_data_end = r"""
14471357
<!-- End HTML -->
14481358
<!-- Begin jquery-2.2.3.min.js -->
14491359
<script>

0 commit comments

Comments
 (0)