Skip to content

Commit 47615fb

Browse files
committed
fixing broken links
1 parent bb76eba commit 47615fb

File tree

5 files changed

+150
-67
lines changed

5 files changed

+150
-67
lines changed

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/webapps/static/customjs/Accordion.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ var Accordion = function (element, options, selector) {
3838
render();
3939

4040
function render() {
41-
el.style.width = "11em";
4241
el.classList.add("ui-accordion", "ui-widget", "ui-helper-reset");
4342
[].forEach.call(el.querySelectorAll("." + sel),
4443
(item, idx) => {

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllApplicationsPage.java

Lines changed: 46 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@
3232
import org.apache.hadoop.yarn.webapp.SubView;
3333
import org.apache.hadoop.yarn.webapp.YarnWebParams;
3434
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet;
35-
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet.BODY;
36-
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet.TABLE;
3735
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet.TBODY;
36+
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet.TABLE;
37+
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet.TR;
3838
import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
39+
import org.apache.commons.text.StringEscapeUtils;
3940

4041
import com.google.inject.Inject;
4142

@@ -82,28 +83,52 @@ public AllApplicationsBlock(Context nmContext) {
8283
@Override
8384
protected void render(Block html) {
8485

85-
TBODY<TABLE<BODY<Hamlet>>> tableBody =
86-
html
87-
.body()
88-
.table("#applications")
89-
.thead()
90-
.tr()
91-
.td().__("ApplicationId").__()
92-
.td().__("ApplicationState").__()
93-
.__()
94-
.__()
95-
.tbody();
86+
TBODY<TABLE<Hamlet>> tbody =
87+
html.table("#applications").
88+
thead().
89+
tr().
90+
th(".appId", "ApplicationId").
91+
th(".appState", "ApplicationState").
92+
__().__().
93+
tbody();
94+
95+
StringBuilder applicationsTableData = new StringBuilder("[");
96+
boolean first = true;
97+
9698
for (Entry<ApplicationId, Application> entry : this.nmContext
9799
.getApplications().entrySet()) {
98100
AppInfo info = new AppInfo(entry.getValue());
99-
tableBody
100-
.tr()
101-
.td().a(url("application", info.getId()), info.getId()).__()
102-
.td().__(info.getState())
103-
.__()
104-
.__();
105-
}
106-
tableBody.__().__().__();
101+
102+
String appId = info.getId();
103+
String appState = info.getState();
104+
105+
if (!first) {
106+
applicationsTableData.append(",");
107+
}
108+
first = false;
109+
110+
applicationsTableData
111+
.append("[\"<a href='")
112+
.append(url("application", appId))
113+
.append("'>")
114+
.append(StringEscapeUtils.escapeEcmaScript(
115+
StringEscapeUtils.escapeHtml4(appId)))
116+
.append("</a>\",\"")
117+
.append(StringEscapeUtils.escapeEcmaScript(
118+
StringEscapeUtils.escapeHtml4(appState)))
119+
.append("\"]");
120+
121+
TR<TBODY<TABLE<Hamlet>>> row = tbody.tr();
122+
row = row.td().a(url("application", appId), appId).__();
123+
row.td(appState).__();
124+
}
125+
applicationsTableData.append("]");
126+
html.script().$type("text/javascript")
127+
.__("applicationsTableData=" + applicationsTableData +
128+
"\nopts.data = {data: applicationsTableData}" +
129+
"\napplicationsDataTable = DataTableHelper('#applications', opts, false);").__();
130+
131+
tbody.__().__();
107132
}
108133
}
109134
}

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllContainersPage.java

Lines changed: 52 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet.TABLE;
3737
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet.TBODY;
3838
import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
39+
import org.apache.commons.text.StringEscapeUtils;
3940

4041
import com.google.inject.Inject;
4142

@@ -78,30 +79,61 @@ public AllContainersBlock(Context nmContext) {
7879

7980
@Override
8081
protected void render(Block html) {
81-
TBODY<TABLE<BODY<Hamlet>>> tableBody = html.body()
82-
.table("#containers")
83-
.thead()
84-
.tr()
85-
.td().__("ContainerId").__()
86-
.td().__("ExecutionType").__()
87-
.td().__("ContainerState").__()
88-
.td().__("logs").__()
89-
.__()
90-
.__().tbody();
82+
TBODY<TABLE<Hamlet>> tbody = html.table("#containers").
83+
thead().
84+
tr().
85+
th(".containerId", "ContainerId").
86+
th(".executionType", "ExecutionType").
87+
th(".containerState", "ContainerState").
88+
th(".logs", "Logs").
89+
__().__()
90+
.tbody();
91+
92+
StringBuilder containersTableData = new StringBuilder("[\n");
93+
boolean first = true;
94+
9195
for (Entry<ContainerId, Container> entry : this.nmContext
9296
.getContainers().entrySet()) {
9397
ContainerInfo info = new ContainerInfo(this.nmContext, entry.getValue());
94-
tableBody
95-
.tr()
96-
.td().a(url("container", info.getId()), info.getId())
97-
.__()
98-
.td().__(info.getExecutionType()).__()
99-
.td().__(info.getState()).__()
100-
.td()
101-
.a(url(info.getShortLogLink()), "logs").__()
102-
.__();
98+
99+
String containerId = info.getId();
100+
String executionType = info.getExecutionType();
101+
String containerState = info.getState();
102+
String logLink = info.getShortLogLink();
103+
104+
if (!first) {
105+
containersTableData.append(",\n");
106+
}
107+
first = false;
108+
109+
containersTableData.append("[\"<a href='")
110+
.append(url("container", containerId))
111+
.append("'>")
112+
.append(StringEscapeUtils.escapeEcmaScript(
113+
StringEscapeUtils.escapeHtml4(containerId)))
114+
.append("</a>\",\"")
115+
.append(StringEscapeUtils.escapeEcmaScript(
116+
StringEscapeUtils.escapeHtml4(executionType)))
117+
.append("\",\"")
118+
.append(StringEscapeUtils.escapeEcmaScript(
119+
StringEscapeUtils.escapeHtml4(containerState)))
120+
.append("\",\"<a href='")
121+
.append(url(logLink))
122+
.append("'>logs</a>\"]");
123+
}
124+
125+
if (containersTableData.charAt(containersTableData.length() - 2) == ',') {
126+
containersTableData.delete(containersTableData.length() - 2,
127+
containersTableData.length() - 1);
103128
}
104-
tableBody.__().__().__();
129+
containersTableData.append("]");
130+
html.script().$type("text/javascript")
131+
.__("containersTableData=" + containersTableData +
132+
"\nopts.data = {data: containersTableData}" +
133+
"\ncontainersDataTable = DataTableHelper('#containers', opts, false);")
134+
.__();
135+
136+
tbody.__().__();
105137
}
106138

107139
}

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ApplicationPage.java

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ public class ApplicationPage extends NMView implements YarnWebParams {
5151
}
5252

5353
private String containersTableInit() {
54-
return tableInit().append(",aoColumns:[null]}").toString();
54+
return tableInit()
55+
.append(", aoColumns:[{ 'mRender': parseHadoopID }]}").toString();
5556
}
5657

5758
@Override
@@ -94,15 +95,41 @@ protected void render(Block html) {
9495
.__("ApplicationId", info.getId())
9596
.__("ApplicationState", info.getState())
9697
.__("User", info.getUser());
97-
TABLE<Hamlet> containersListBody = html.__(InfoBlock.class)
98+
TABLE<Hamlet> table = html.__(InfoBlock.class)
9899
.table("#containers");
99-
for (String containerIdStr : info.getContainers()) {
100-
containersListBody
101-
.tr().td()
102-
.a(url("container", containerIdStr), containerIdStr)
103-
.__().__();
104-
}
105-
containersListBody.__();
100+
table.thead().tr()
101+
.th("Container ID").__()
102+
.__();
103+
table.__();
104+
105+
StringBuilder containersTableData = new StringBuilder("[\n");
106+
boolean first = true;
107+
108+
for (String containerIdStr : info.getContainers()) {
109+
if (!first) {
110+
containersTableData.append(",\n");
111+
}
112+
first = false;
113+
114+
containersTableData
115+
.append("[\"<a href='")
116+
.append(url("container", containerIdStr))
117+
.append("'>")
118+
.append(containerIdStr)
119+
.append("</a>\"]");
120+
}
121+
122+
if (containersTableData.charAt(containersTableData.length() - 2) == ',') {
123+
containersTableData.delete(containersTableData.length() - 2,
124+
containersTableData.length() - 1);
125+
}
126+
containersTableData.append("]");
127+
128+
html.script().$type("text/javascript")
129+
.__("containersTableData=" + containersTableData +
130+
"\nopts.data = {data: containersTableData}" +
131+
"\ncontainersDataTable = DataTableHelper('#containers', opts, false);")
132+
.__();
106133
}
107134
}
108135
}

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NavBlock.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import org.apache.hadoop.yarn.util.Log4jWarningErrorMetricsAppender;
2424
import org.apache.hadoop.yarn.webapp.YarnWebParams;
2525
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet;
26+
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet.DIV;
27+
import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet.UL;
2628
import org.apache.hadoop.yarn.webapp.util.WebAppUtils;
2729
import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
2830

@@ -52,23 +54,21 @@ protected void render(Block html) {
5254

5355
String RMWebAppURL =
5456
WebAppUtils.getResolvedRMWebAppURLWithScheme(this.conf);
55-
Hamlet.DIV<Hamlet> ul = html
56-
.div("#nav")
57-
.h3().__("ResourceManager").__()
58-
.ul()
59-
.li().a(RMWebAppURL, "RM Home").__().__()
60-
.h3().__("NodeManager").__() // TODO: Problem if no header like this
61-
.ul()
62-
.li()
63-
.a(url("node"), "Node Information").__()
64-
.li()
65-
.a(url("allApplications"), "List of Applications")
66-
.__()
67-
.li()
68-
.a(url("allContainers"), "List of Containers").__()
69-
.__();
57+
UL<DIV<Hamlet>> rmSection = html.
58+
div("#nav").
59+
h3("accordion-parent", "ResourceManager").
60+
ul("container").
61+
li().a("content", RMWebAppURL, "RM Home").__();
62+
UL<DIV<Hamlet>> nmSection = rmSection.
63+
__().
64+
h3("accordion-parent", "NodeManager").
65+
ul("container").
66+
li().a("content", url("node"), "Node Information").__().
67+
li().a("content", url("allApplications"), "List of Applications").__().
68+
li().a("content", url("allContainers"), "List of Containers").__();
7069

71-
Hamlet.UL<Hamlet.DIV<Hamlet>> tools = WebPageUtils.appendToolSection(ul, conf);
70+
DIV<Hamlet> nav = nmSection.__();
71+
UL<DIV<Hamlet>> tools = WebPageUtils.appendToolSection(nav, conf);
7272

7373
if (tools == null) {
7474
return;

0 commit comments

Comments
 (0)