Skip to content

Commit 9ec679b

Browse files
author
Anders Breid
authored
Improvements to information page (#109)
General Improvements to information page: * Improved JS logic and removed injected CSS and replaced it with classes from css file. * Added front end information * reduced multiplied code and added js functions instead. * Improved error message on failing back end
1 parent 1637869 commit 9ec679b

File tree

8 files changed

+154
-144
lines changed

8 files changed

+154
-144
lines changed

src/functionaltest/java/com/ericsson/ei/frontend/TestSwitchBackend.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public void testSwitchBackend() throws Exception {
4040
// Set up
4141
int portServer1 = mockServer1.getLocalPort();
4242
int portServer2 = mockServer2.getLocalPort();
43-
43+
4444
backEndInstancesUtils.setDefaultBackEndInstanceToNull();
4545
backEndInstancesUtils.setDefaultBackEndInstance("new_instance_default", "localhost", portServer1, "", true);
4646

@@ -59,9 +59,6 @@ public void testSwitchBackend() throws Exception {
5959
// Test switch to the newly added instance
6060
switchBackendPage.switchToBackendInstance(1);
6161

62-
InfoPage infoPage = indexPageObject.clickEiInfoBtn();
63-
assertEquals("http://localhost:" + portServer2, infoPage.getConnectedBackend());
64-
6562
// Test that different set of subscriptions are available for each
6663
// instance
6764
SubscriptionPage subscriptionPage = indexPageObject.clickSubscriptionPage();

src/main/java/com/ericsson/ei/frontend/WebController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ public String testRules(Model model) {
5454
@RequestMapping("/eiInfo.html")
5555
public String eiInfo(Model model, HttpServletRequest request) {
5656
model.addAttribute("frontendServiceUrl", frontEndUtils.getFrontEndServiceUrl());
57+
model.addAttribute("frontendServiceVersion", frontEndUtils.getVersion());
58+
model.addAttribute("frontendAppName", frontEndUtils.getApplicationName());
5759
model.addAttribute("backendServerUrl", frontEndUtils.getBackEndServiceUrl(request.getSession()));
5860
return "eiInfo";
5961
}

src/main/java/com/ericsson/ei/frontend/utils/WebControllerUtils.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public class WebControllerUtils {
3939
@Value("${ei.frontendServiceHost}")
4040
private String frontendServiceHost;
4141

42-
@Setter
4342
@Value("${ei.frontendServicePort}")
4443
private int frontendServicePort;
4544

@@ -52,6 +51,12 @@ public class WebControllerUtils {
5251
@Value("${ei.eiffelDocumentationUrls}")
5352
private String eiffelDocumentationUrls;
5453

54+
@Value("${spring.application.name}")
55+
private String applicationName;
56+
57+
@Value("${build.version}")
58+
private String version;
59+
5560
@Autowired
5661
private BackEndInstancesUtils backEndInstancesUtils;
5762

src/main/resources/application.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ spring.jackson.default-property-inclusion=non_null
33

44
spring.application.name=ei-frontend
55
#${project.artifactId}
6+
build.version=@project.version@
67

78
server.port=8080
89
#server.ssl.key-store: <keystore.p12>

src/main/resources/static/css/style.css

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,21 @@ body {
3636
.table-responsive>.table-bordered {
3737
border: 1px solid #dee2e6;
3838
}
39+
/* Information page start */
40+
.table-text-setting {
41+
margin: auto;
42+
width: 48%;
43+
}
44+
.section-p-text {
45+
/*background-color: #fbfbfb;*/
46+
padding: 17px;
47+
border-radius: 15px;
48+
text-align: center;
49+
}
50+
.left-table-pane {
51+
width: 30%;
52+
}
53+
/* Information page stop */
3954
.testRulePage {
4055
position: fixed;
4156
top: 0px;

src/main/resources/static/js/eiInfo.js

Lines changed: 83 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,172 +1,133 @@
1-
2-
3-
41
jQuery(document).ready(function() {
5-
62
// Fetch injected URL from DOM
73
var frontendServiceUrl = $('#frontendServiceUrl').text();
84
var backendServerUrl = $('#backendServerUrl').text();
95

10-
var tableTdKeyWidth = '25%';
11-
126
var body = document.getElementById('eiPageFrame');
137

148
function createTable() {
159
var tbl = document.createElement('table');
16-
tbl.style.width = '40%';
17-
tbl.setAttribute('border', '3');
18-
tbl.setAttribute('align', 'center');
19-
tbl.setAttribute('class', 'table table-bordered table-striped dataTable');
10+
tbl.setAttribute('class', 'table table-bordered table-striped dataTable table-text-setting');
2011
return tbl;
2112
}
2213

23-
// Fetch injected URL from DOM
24-
frontendServiceUrl = $('#frontendServiceUrl').text();
14+
function createLabel(inputText) {
15+
var label = document.createElement('p');
16+
label.innerHTML = inputText;
17+
label.setAttribute('class', 'section-p-text table-text-setting');
18+
return label;
19+
}
2520

26-
function generateGeneralEiInfo(data) {
27-
body.appendChild(document.createElement('br'));
21+
function createErrorMessage(inputText) {
22+
var element = document.createElement('h4');
23+
element.innerHTML = inputText;
24+
element.setAttribute('class', 'table-text-setting alert-danger text-center');
25+
return element;
26+
}
27+
28+
function generateGeneralEiInfo(data) {
2829
var tbdy = document.createElement('tbody');
2930

30-
var label = document.createElement('p');
31-
label.innerHTML = 'General Eiffel Intelligence Information';
32-
label.setAttribute('align', 'center');
31+
var label = createLabel('General Eiffel Intelligence Information');
3332
body.appendChild(label);
3433

3534
var div = document.createElement('div');
3635
div.setAttribute('class','table-responsive');
3736

3837
var tbl = createTable();
3938

40-
var tr = document.createElement('tr');
41-
var tdKey = document.createElement('td');
42-
tdKey.setAttribute('width', tableTdKeyWidth);
43-
tdKey.appendChild(document.createTextNode('ApplicationName'));
44-
tr.appendChild(tdKey);
45-
var tdValue = document.createElement('td');
46-
// tdValue.setAttribute('width', '30px');
47-
tdValue.appendChild(document.createTextNode(data.applicationName));
48-
tr.appendChild(tdValue);
49-
tbdy.appendChild(tr);
50-
51-
52-
tr = document.createElement('tr');
53-
tdKey = document.createElement('td');
54-
tdKey.setAttribute('width', tableTdKeyWidth);
55-
tdKey.appendChild(document.createTextNode('Version'));
56-
tr.appendChild(tdKey);
57-
tdValue = document.createElement('td');
58-
tdValue.appendChild(document.createTextNode(data.version));
59-
tr.appendChild(tdValue);
60-
tbdy.appendChild(tr);
61-
62-
tr = document.createElement('tr');
63-
tdKey = document.createElement('td');
64-
tdKey.setAttribute('width', tableTdKeyWidth);
65-
tdKey.appendChild(document.createTextNode('EI RestApi Requests Via Server'));
66-
tr.appendChild(tdKey);
67-
tdValue = document.createElement('td');
68-
tdValue.appendChild(document.createTextNode(frontendServiceUrl));
69-
tr.appendChild(tdValue);
70-
tbdy.appendChild(tr);
71-
72-
tr = document.createElement('tr');
73-
tdKey = document.createElement('td');
74-
tdKey.setAttribute('width', tableTdKeyWidth);
75-
tdKey.appendChild(document.createTextNode('EI Backend Connected Server'));
76-
tr.appendChild(tdKey);
77-
tdValue = document.createElement('td');
78-
tdValue.id = "connectedBackend"
79-
tdValue.appendChild(document.createTextNode(backendServerUrl));
80-
tr.appendChild(tdValue);
81-
tbdy.appendChild(tr);
82-
83-
tr = document.createElement('tr');
84-
tdKey = document.createElement('td');
85-
tdKey.setAttribute('width', tableTdKeyWidth);
86-
tdKey.appendChild(document.createTextNode('EI Test Rules functionality enabled'));
87-
tr.appendChild(tdKey);
88-
tdValue = document.createElement('td');
89-
tdValue.appendChild(document.createTextNode(data.testRulesEnabled));
90-
tr.appendChild(tdValue);
91-
tbdy.appendChild(tr);
39+
var tableContent = [
40+
{ key: 'Application Name', value: data.applicationName },
41+
{ key: 'Version', value: data.version },
42+
{ key: 'EI Backend Connected Server', value: backendServerUrl },
43+
{ key: 'EI Test Rules functionality enabled', value: data.testRulesEnabled },
44+
];
9245

46+
for (i = 0; i < tableContent.length; i++) {
47+
key = tableContent[i].key;
48+
value = tableContent[i].value;
49+
var tr = createTableRow(key, value);
50+
tbdy.appendChild(tr);
51+
}
9352

9453
tbl.appendChild(tbdy);
9554
div.appendChild(tbl);
9655
body.appendChild(div);
56+
}
9757

98-
body.appendChild(document.createElement('br'));
99-
}
100-
101-
function generateEIInformationBasedOnList(dataList, tableLabel) {
58+
function generateEIInformationBasedOnList(dataList, tableLabel) {
10259
var div = document.createElement('div');
10360
div.setAttribute('class','table-responsive');
10461

105-
var label = document.createElement('p');
106-
label.innerHTML = tableLabel;
107-
label.setAttribute('align', 'center');
62+
var label = createLabel(tableLabel);
10863
body.appendChild(label);
10964

11065
var tbdy = null;
11166
var tbl = null;
11267

11368
dataList.forEach(function(dataSubList) {
114-
tbdy = document.createElement('tbody');
115-
tbl = createTable();
116-
117-
Object.keys(dataSubList).forEach(function(dataKey) {
118-
var tr = document.createElement('tr');
119-
var tdKey = document.createElement('td');
120-
tdKey.setAttribute('width', tableTdKeyWidth);
121-
tdKey.appendChild(document.createTextNode(dataKey));
122-
tr.appendChild(tdKey);
123-
var tdValue = document.createElement('td');
124-
tdValue.appendChild(document.createTextNode(dataSubList[dataKey]));
125-
tr.appendChild(tdValue);
126-
tbdy.appendChild(tr);
127-
128-
});
69+
tbdy = document.createElement('tbody');
70+
tbl = createTable();
71+
72+
Object.keys(dataSubList).forEach(function(dataKey) {
73+
value = dataSubList[dataKey];
74+
var tr = createTableRow(dataKey, value);
75+
tbdy.appendChild(tr);
76+
});
12977

13078
});
13179

13280
tbl.appendChild(tbdy);
13381
div.appendChild(tbl);
13482
body.appendChild(div);
83+
}
13584

136-
body.appendChild(document.createElement('br'));
137-
138-
}
85+
function createTableRow(key, value) {
86+
var tr = document.createElement('tr');
87+
var tdKey = document.createElement('td');
88+
tdKey.setAttribute('class', 'left-table-pane');
89+
tdKey.appendChild(document.createTextNode(key));
90+
tr.appendChild(tdKey);
91+
var tdValue = document.createElement('td');
92+
tdValue.appendChild(document.createTextNode(value));
93+
tr.appendChild(tdValue);
94+
return tr;
95+
}
13996

14097
function getInstanceInfo() {
14198
$.ajax({
142-
url: frontendServiceUrl + "/information",
143-
contentType : 'application/json;charset=UTF-8',
144-
type: 'GET',
145-
error : function (XMLHttpRequest, textStatus, errorThrown) {
146-
if (XMLHttpRequest.responseText == "") {
147-
document.getElementById("eiPageFrame").innerHTML = "<h3 style=\"text-align: center;\">There is no response from backend</h3>";
148-
} else {
149-
document.getElementById("eiPageFrame").innerHTML = "<h3 style=\"text-align: center;\">" + XMLHttpRequest.responseText + "</h3>";
150-
}
151-
},
152-
success : function (data, textStatus, xhr) {
153-
var eiInfoContainer = document.getElementById('eiInfoContainer');
154-
var data = JSON.parse(xhr.responseText);
155-
generateGeneralEiInfo(data);
156-
generateEIInformationBasedOnList(data.rabbitmq, "Eiffel Intelligence Connected RabbitMq Instances");
157-
generateEIInformationBasedOnList(data.mongodb, "Eiffel Intelligence Connected MongoDb Instances");
158-
generateEIInformationBasedOnList(data.threads, "Eiffel Intelligence Backend Java Threads Settings");
159-
generateEIInformationBasedOnList(data.email, "Eiffel Intelligence Backend E-Mail Settings");
160-
generateEIInformationBasedOnList(data.mailServerValues, "Eiffel Intelligence Backend SMTP Settings");
161-
generateEIInformationBasedOnList(data.waitList, "Eiffel Intelligence Backend WaitList settings");
162-
generateEIInformationBasedOnList([data.objectHandler], "Eiffel Intelligence Backend ObjectHandler Settings");
163-
generateEIInformationBasedOnList([data.subscriptionHandler], "Eiffel Intelligence Backend SubscriptionHandler Settings");
164-
generateEIInformationBasedOnList([data.informSubscription], "Eiffel Intelligence Backend InformSubscription Settings");
165-
generateEIInformationBasedOnList([data.erUrl], "End point for downstream/upstream search in EventRepository");
166-
generateEIInformationBasedOnList([data.ldap], "Eiffel Intelligence Backend LDAP Settings");
167-
},
168-
complete: function (XMLHttpRequest, textStatus) {}
169-
});
99+
url: frontendServiceUrl + "/information",
100+
contentType : 'application/json;charset=UTF-8',
101+
type: 'GET',
102+
error : function (XMLHttpRequest, textStatus, errorThrown) {
103+
var label = createLabel('General Eiffel Intelligence Information');
104+
body.appendChild(label);
105+
if (XMLHttpRequest.responseText == "") {
106+
var element = createErrorMessage('<strong>Error</strong> There is no response from backend!');
107+
body.appendChild(element);
108+
} else {
109+
var element = createErrorMessage('Error: ' + XMLHttpRequest.responseText + '!');
110+
body.appendChild(element);
111+
}
112+
},
113+
success : function (data, textStatus, xhr) {
114+
var eiInfoContainer = document.getElementById('eiInfoContainer');
115+
var data = JSON.parse(xhr.responseText);
116+
generateGeneralEiInfo(data);
117+
generateEIInformationBasedOnList(data.rabbitmq, "Eiffel Intelligence Connected RabbitMq Instances");
118+
generateEIInformationBasedOnList(data.mongodb, "Eiffel Intelligence Connected MongoDb Instances");
119+
generateEIInformationBasedOnList(data.threads, "Eiffel Intelligence Backend Java Threads Settings");
120+
generateEIInformationBasedOnList(data.email, "Eiffel Intelligence Backend E-Mail Settings");
121+
generateEIInformationBasedOnList(data.mailServerValues, "Eiffel Intelligence Backend SMTP Settings");
122+
generateEIInformationBasedOnList(data.waitList, "Eiffel Intelligence Backend WaitList settings");
123+
generateEIInformationBasedOnList([data.objectHandler], "Eiffel Intelligence Backend ObjectHandler Settings");
124+
generateEIInformationBasedOnList([data.subscriptionHandler], "Eiffel Intelligence Backend SubscriptionHandler Settings");
125+
generateEIInformationBasedOnList([data.informSubscription], "Eiffel Intelligence Backend InformSubscription Settings");
126+
generateEIInformationBasedOnList([data.erUrl], "End point for downstream/upstream search in EventRepository");
127+
generateEIInformationBasedOnList([data.ldap], "Eiffel Intelligence Backend LDAP Settings");
128+
},
129+
complete: function (XMLHttpRequest, textStatus) {}
130+
});
170131
}
171132

172133
getInstanceInfo();

0 commit comments

Comments
 (0)