Skip to content

Commit bb3c291

Browse files
authored
Merge pull request #412 from OP-TED/feature/TED-1073
Feature/ted 1073
2 parents 1402823 + 3604422 commit bb3c291

7 files changed

Lines changed: 313 additions & 53 deletions

File tree

ted_sws/core/model/transform.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,27 @@ class ConceptualMappingXPATH(MappingSuiteComponent):
7070
form_field: Optional[str]
7171

7272

73+
class ConceptualMappingDiffMetadata(MappingSuiteComponent):
74+
""""""
75+
branches: Optional[List[str]]
76+
mapping_suite_ids: Optional[List[str]]
77+
files: Optional[List[Optional[str]]]
78+
defaults: Optional[dict]
79+
metadata: Optional[List[dict]]
80+
81+
82+
class ConceptualMappingDiffData(MappingSuiteComponent):
83+
""""""
84+
html: Optional[str]
85+
transformed: Optional[dict]
86+
original: Optional[dict]
87+
88+
7389
class ConceptualMappingDiff(MappingSuiteComponent):
7490
""""""
7591
created_at: str = datetime.now().isoformat()
76-
metadata: Optional[dict]
77-
data: Optional[dict]
92+
metadata: Optional[ConceptualMappingDiffMetadata]
93+
data: Optional[ConceptualMappingDiffData]
7894

7995

8096
class ConceptualMappingMetadataConstraints(PropertyBaseModel):

ted_sws/mapping_suite_processor/entrypoints/cli/cmd_conceptual_mapping_differ.py

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from ted_sws.mapping_suite_processor.entrypoints.cli import CONCEPTUAL_MAPPINGS_FILE_TEMPLATE
1111
from ted_sws.mapping_suite_processor.services.conceptual_mapping_differ import \
1212
mapping_suite_diff_files_conceptual_mappings, mapping_suite_diff_repo_conceptual_mappings, \
13-
generate_conceptual_mappings_diff_html_report
13+
generate_conceptual_mappings_diff_html_report, transform_conceptual_mappings_diff_data
1414
from ted_sws.core.model.transform import ConceptualMappingDiff
1515

1616
CMD_NAME = "CMD_CONCEPTUAL_MAPPING_DIFFER"
@@ -59,16 +59,7 @@ def _report(self, diff, files: list):
5959
with open(report_file_file_name_html, 'w+') as report_file:
6060
report_file.write(
6161
generate_conceptual_mappings_diff_html_report(
62-
ConceptualMappingDiff(
63-
metadata={
64-
"branches": self.branches,
65-
"mapping_suite_ids": self.mapping_suite_ids,
66-
"files": files,
67-
"defaults": diff['metadata']['defaults'],
68-
"metadata": diff['metadata']['metadata']
69-
},
70-
data=data
71-
))
62+
ConceptualMappingDiff(**diff))
7263
)
7364

7465
@classmethod

ted_sws/mapping_suite_processor/resources/templates/conceptual_mappings_diff_report.jinja2

Lines changed: 160 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,47 @@
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
66
<meta http-equiv="X-UA-Compatible" content="ie=edge">
77
<title>HTML report for Conceptual Mappings Diff</title>
8+
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
89
<link href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css" rel="stylesheet" type="text/css">
910
<style>
1011
body {
1112
font-family: Arial, sans-serif;
1213
margin: 25px auto;
1314
width: 80%;
1415
}
15-
body>table.display td,
16-
body>table.display th {
16+
body table.display td,
17+
body table.display th {
1718
vertical-align: top;
1819
text-align: left;
1920
}
2021
table td {
2122
width: auto
2223
}
2324
25+
table.heading {
26+
border: 0;
27+
}
2428
table.heading td,
2529
table.heading th {
26-
border: 1px solid #ddd;
30+
border: 1px solid #ddd !important;
31+
vertical-align: top;
32+
overflow-wrap: anywhere;
2733
}
2834
table.heading th {
2935
background-color: #eee;
3036
text-align: left;
37+
width: 18%;
3138
}
3239
table.heading thead td {
3340
text-align: left;
3441
font-weight: bold;
35-
width: 50%;
42+
width: 41%;
3643
}
3744
table.heading tbody th {
38-
white-space: nowrap;
45+
/*white-space: nowrap;*/
46+
}
47+
.tab {
48+
font-weight: bold;
3949
}
4050
</style>
4151
</head>
@@ -49,7 +59,7 @@
4959
<h2>
5060
Conceptual Mappings
5161
</h2>
52-
<table class="heading">
62+
<table class="heading dataTable">
5363
<thead>
5464
<tr>
5565
<th></th>
@@ -88,17 +98,158 @@
8898
</table>
8999
<hr>
90100
<h2>Report details: </h2>
91-
{% if data %}
92-
{{ data }}
101+
{% if data.original %}
102+
{% set tabs = data.transformed.tabs %}
103+
{% set fields_labels = data.transformed.labels.fields %}
104+
{% set actions_labels = data.transformed.labels.actions %}
105+
{% set tabs_labels = data.transformed.labels.tabs %}
106+
<div class="tabs">
107+
<ul>
108+
{% for tab in tabs %}
109+
{% if tabs[tab] %}
110+
<li><a href="#tabs-{{ tab }}" class="tab">{{ tabs_labels[tab] }}</a></li>
111+
{% endif %}
112+
{% endfor %}
113+
<li style="float:right"><a href="#tabs-raw">Source</a></li>
114+
</ul>
115+
{% for tab in tabs %}
116+
{% if tabs[tab] %}
117+
<div id="tabs-{{ tab }}" class="tabs">
118+
<ul>
119+
{% for action in tabs[tab] %}
120+
{% if tabs[tab][action] %}
121+
<li><a href="#tabs-{{ tab }}-{{ action }}">{{ actions_labels[action] }}</a></li>
122+
{% endif %}
123+
{% endfor %}
124+
</ul>
125+
{% for action in tabs[tab] %}
126+
{% if tabs[tab][action] %}
127+
<div id="tabs-{{ tab }}-{{ action }}" class="ui-widget">
128+
<table class="dataTable heading">
129+
<tbody>
130+
{% for field0 in tabs[tab][action] %}
131+
{% set field0_value = tabs[tab][action][field0] %}
132+
{% if field0|int(-1) != -1 %} {% set is_field0_int = True %} {% endif %}
133+
<tr>
134+
<th>
135+
{% if is_field0_int %}Item {% endif %}{{ fields_labels[field0] or field0 }}
136+
</th>
137+
<td>
138+
{% if "old_value" in field0_value %}
139+
<table class="dataTable heading">
140+
<tbody>
141+
<tr>
142+
<th>{{ fields_labels["old_value"] }}</th>
143+
<td>{{ field0_value['old_value'] }}</td>
144+
</tr>
145+
<tr>
146+
<th>{{ fields_labels["new_value"] }}</th>
147+
<td>{{ field0_value['new_value'] }}</td>
148+
</tr>
149+
</tbody>
150+
</table>
151+
{% else %}
152+
{% if field0_value and field0_value is mapping %}
153+
<table class="dataTable heading">
154+
<tbody>
155+
{% for field1 in field0_value %}
156+
{% set field1_value = field0_value[field1] %}
157+
{% if field1|int(-1) != -1 %} {% set is_field1_int = True %} {% endif %}
158+
<tr>
159+
<th>
160+
{% if is_field1_int %}Sub-Item {% endif %}{{ fields_labels[field1] or field1 }}
161+
</th>
162+
<td>
163+
{% if field1_value and "old_value" in field1_value %}
164+
<table class="dataTable heading">
165+
<tbody>
166+
<tr>
167+
<th>{{ fields_labels["old_value"] }}</th>
168+
<td>{{ field1_value['old_value'] }}</td>
169+
</tr>
170+
<tr>
171+
<th>{{ fields_labels["new_value"] }}</th>
172+
<td>{{ field1_value['new_value'] }}</td>
173+
</tr>
174+
</tbody>
175+
</table>
176+
{% else %}
177+
{% if field1_value and field1_value is mapping %}
178+
<table class="dataTable heading">
179+
<tbody>
180+
{% for field2 in field1_value %}
181+
{% set field2_value = field1_value[field2] %}
182+
{% if field2|int(-1) != -1 %} {% set is_field2_int = True %} {% endif %}
183+
<tr>
184+
<th>
185+
{% if is_field2_int %}Sub-Item {% endif %}{{ fields_labels[field2] or field2 }}
186+
</th>
187+
<td>
188+
{% if field2_value and "old_value" in field2_value %}
189+
<table class="dataTable heading">
190+
<tbody>
191+
<tr>
192+
<th>{{ fields_labels["old_value"] }}</th>
193+
<td>{{ field2_value['old_value'] }}</td>
194+
</tr>
195+
<tr>
196+
<th>{{ fields_labels["new_value"] }}</th>
197+
<td>{{ field2_value['new_value'] }}</td>
198+
</tr>
199+
</tbody>
200+
</table>
201+
{% else %}
202+
{{ field2_value }}
203+
{% endif %}
204+
</td>
205+
</tr>
206+
{% endfor %}
207+
</tbody>
208+
</table>
209+
{% else %}
210+
{{ field1_value }}
211+
{% endif %}
212+
{% endif %}
213+
</td>
214+
</tr>
215+
{% endfor %}
216+
</tbody>
217+
</table>
218+
{% else %}
219+
{{ field0_value }}
220+
{% endif %}
221+
{% endif %}
222+
</td>
223+
</tr>
224+
{% endfor %}
225+
</tbody>
226+
</table>
227+
</div>
228+
{% endif %}
229+
{% endfor %}
230+
</div>
231+
{% endif %}
232+
{% endfor %}
233+
<div id="tabs-raw">
234+
{{ data.html }}
235+
</div>
236+
</div>
93237
{% else %}
94238
<h3>NO DIFF</h3>
95239
{% endif %}
240+
241+
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
242+
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
96243
<script>
97-
const tables = document.querySelectorAll('body>table');
244+
const tables = document.querySelectorAll('body table.dataTable');
98245
console.log(tables);
99246
for (const table of tables) {
100247
table.classList.add('dataTable');
101248
}
249+
250+
$( function() {
251+
$( ".tabs" ).tabs();
252+
} );
102253
</script>
103254
</body>
104255
</html>

0 commit comments

Comments
 (0)