You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by bo...@apache.org on 2018/09/13 19:28:23 UTC
[1/2] storm git commit: STORM-3219: Update javascript to report
errors consistently
Repository: storm
Updated Branches:
refs/heads/master 834eb107e -> 5b0afe2fc
STORM-3219: Update javascript to report errors consistently
Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/0d7b9757
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/0d7b9757
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/0d7b9757
Branch: refs/heads/master
Commit: 0d7b97570b2da2a5b9145e0cacf24a6fa8108c99
Parents: 8f9061a
Author: Robert (Bobby) Evans <ev...@yahoo-inc.com>
Authored: Tue Sep 11 15:02:44 2018 -0500
Committer: Robert (Bobby) Evans <ev...@yahoo-inc.com>
Committed: Tue Sep 11 15:23:29 2018 -0500
----------------------------------------------------------------------
.../storm/daemon/ui/WEB-INF/component.html | 189 ++++++++++--------
.../daemon/ui/WEB-INF/deep_search_result.html | 194 +++++++++++--------
.../apache/storm/daemon/ui/WEB-INF/index.html | 133 ++++++++-----
.../apache/storm/daemon/ui/WEB-INF/js/script.js | 10 +-
.../daemon/ui/WEB-INF/logviewer_search.html | 36 +++-
.../storm/daemon/ui/WEB-INF/search_result.html | 98 ++++++----
.../storm/daemon/ui/WEB-INF/supervisor.html | 22 ++-
.../storm/daemon/ui/WEB-INF/topology.html | 27 ++-
8 files changed, 428 insertions(+), 281 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/storm/blob/0d7b9757/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/component.html
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/component.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/component.html
index cee4ce4..10da241 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/component.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/component.html
@@ -143,6 +143,15 @@ $(document).ready(function() {
var url = "/api/v1/topology/"+topologyId+"/component/"+componentId+"?sys="+sys;
if(window) url += "&window="+window;
+ $.ajaxSetup({
+ "error":function(jqXHR,textStatus,response) {
+ var errorJson = jQuery.parseJSON(jqXHR.responseText);
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),errorJson));
+ });
+ }
+ });
+
$.getJSON("/api/v1/cluster/configuration",function(response,status,jqXHR) {
$.extend( $.fn.dataTable.defaults, {
stateSave: true,
@@ -158,14 +167,6 @@ $(document).ready(function() {
});
renderToggleSys($("#toggle-switch"));
- $.ajaxSetup({
- "error":function(jqXHR,textStatus,response) {
- var errorJson = jQuery.parseJSON(jqXHR.responseText);
- getStatic("/templates/json-error-template.html", function(template) {
- $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),errorJson));
- });
- }
- });
function renderSupervisorPageLink(data, type, row, meta) {
return type === 'display' ?
@@ -255,97 +256,113 @@ $(document).ready(function() {
}
if(response["componentType"] == "spout") {
- componentStatsDetail.append(Mustache.render($(template).filter("#spout-stats-detail-template").html(),response));
- //window, emitted, transferred, complete latency, acked, failed
- $("#spout-stats-table").DataTable({
- paging: false,
- info: false,
- searching: false,
- columnDefs: [
- {type: "num", targets: [1, 2, 3, 4, 5]},
- {type: "time-str", targets: [0]}
- ]
+ jsError(function () {
+ componentStatsDetail.append(Mustache.render($(template).filter("#spout-stats-detail-template").html(),response));
+ //window, emitted, transferred, complete latency, acked, failed
+ $("#spout-stats-table").DataTable({
+ paging: false,
+ info: false,
+ searching: false,
+ columnDefs: [
+ {type: "num", targets: [1, 2, 3, 4, 5]},
+ {type: "time-str", targets: [0]}
+ ]
+ });
});
- outputStats.append(Mustache.render($(template).filter("#output-stats-template").html(),response));
- //stream, emitted, transferred, compltete latency, acked, failed
- dtAutoPage("#output-stats-table", {
- columnDefs: [
- {type: "num", targets: [1, 2, 3, 4, 5]}
- ]
+ jsError(function () {
+ outputStats.append(Mustache.render($(template).filter("#output-stats-template").html(),response));
+ //stream, emitted, transferred, compltete latency, acked, failed
+ dtAutoPage("#output-stats-table", {
+ columnDefs: [
+ {type: "num", targets: [1, 2, 3, 4, 5]}
+ ]
+ });
});
- executorStats.append(Mustache.render($(template).filter("#executor-stats-template").html(),response));
- //id, uptime, host, port, actions, emitted, transferred, complete latency, acked, failed
- dtAutoPage("#executor-stats-table", {
- columnDefs: [
- {render: renderSupervisorPageLink, searchable: true, targets: [2]},
- {render: renderActionCheckbox, searchable: false, targets: [4]},
- {type: "num", targets: [5, 6, 7, 8, 9]},
- {type: "time-str", targets: [1]},
- ]
- }).on("draw", function(e,s) {setWorkerActionCheckboxesClickCallback()});
+ jsError(function () {
+ executorStats.append(Mustache.render($(template).filter("#executor-stats-template").html(),response));
+ //id, uptime, host, port, actions, emitted, transferred, complete latency, acked, failed
+ dtAutoPage("#executor-stats-table", {
+ columnDefs: [
+ {render: renderSupervisorPageLink, searchable: true, targets: [2]},
+ {render: renderActionCheckbox, searchable: false, targets: [4]},
+ {type: "num", targets: [5, 6, 7, 8, 9]},
+ {type: "time-str", targets: [1]},
+ ]
+ }).on("draw", function(e,s) {setWorkerActionCheckboxesClickCallback()});
+ });
} else {
- componentStatsDetail.append(Mustache.render($(template).filter("#bolt-stats-template").html(),response));
- //window, emitted, transferred, execute latency, executed, process latency, acked, failed
- dtAutoPage("#bolt-stats-table", {
- columnDefs: [
- {type: "num", targets: [1, 2, 3, 4, 5, 6, 7]},
- {type: "time-str", targets: [0]}
- ]
+ jsError(function () {
+ componentStatsDetail.append(Mustache.render($(template).filter("#bolt-stats-template").html(),response));
+ //window, emitted, transferred, execute latency, executed, process latency, acked, failed
+ dtAutoPage("#bolt-stats-table", {
+ columnDefs: [
+ {type: "num", targets: [1, 2, 3, 4, 5, 6, 7]},
+ {type: "time-str", targets: [0]}
+ ]
+ });
});
- inputStats.append(Mustache.render($(template).filter("#bolt-input-stats-template").html(),response));
- //component, stream, execute latency, executed, process latency, acked, failed
- dtAutoPage("#bolt-input-stats-table", {
- columnDefs: [
- {type: "num", targets: [2, 3, 4, 5, 6]}
- ]
+ jsError(function () {
+ inputStats.append(Mustache.render($(template).filter("#bolt-input-stats-template").html(),response));
+ //component, stream, execute latency, executed, process latency, acked, failed
+ dtAutoPage("#bolt-input-stats-table", {
+ columnDefs: [
+ {type: "num", targets: [2, 3, 4, 5, 6]}
+ ]
+ });
});
- outputStats.append(Mustache.render($(template).filter("#bolt-output-stats-template").html(),response));
- //stream, emitted, transferred
- dtAutoPage("#bolt-output-stats-table", {
- columnDefs: [
- {type: "num", targets: [1, 2]}
- ]
+ jsError(function () {
+ outputStats.append(Mustache.render($(template).filter("#bolt-output-stats-template").html(),response));
+ //stream, emitted, transferred
+ dtAutoPage("#bolt-output-stats-table", {
+ columnDefs: [
+ {type: "num", targets: [1, 2]}
+ ]
+ });
});
- executorStats.append(Mustache.render($(template).filter("#bolt-executor-template").html(),response));
- //id, uptime, host, port, actions, emitted, transferred, capacity, execute latency, executed, process latency, acked, failed
- dtAutoPage("#executor-stats-table", {
- columnDefs: [
- {render: renderSupervisorPageLink, searchable: true, targets: [2]},
- {render: renderActionCheckbox, searchable: false, targets: [4]},
- {type: "num", targets: [5, 6, 7, 8, 9, 10, 11, 12]},
- {type: "time-str", targets: [1]},
- ]
- }).on("draw", function(e,s) {setWorkerActionCheckboxesClickCallback()});
+ jsError(function () {
+ executorStats.append(Mustache.render($(template).filter("#bolt-executor-template").html(),response));
+ //id, uptime, host, port, actions, emitted, transferred, capacity, execute latency, executed, process latency, acked, failed
+ dtAutoPage("#executor-stats-table", {
+ columnDefs: [
+ {render: renderSupervisorPageLink, searchable: true, targets: [2]},
+ {render: renderActionCheckbox, searchable: false, targets: [4]},
+ {type: "num", targets: [5, 6, 7, 8, 9, 10, 11, 12]},
+ {type: "time-str", targets: [1]},
+ ]
+ }).on("draw", function(e,s) {setWorkerActionCheckboxesClickCallback()});
+ });
}
setWorkerActionCheckboxesClickCallback();
- componentErrors.append(Mustache.render($(template).filter("#component-errors-template").html(),formatErrorTimeSecs(response)));
- //time, error
- dtAutoPage("#component-errors-table", {});
-
- var errorTimeCells = document.getElementsByClassName("errorTimeSpan");
- for (i = 0; i < errorTimeCells.length; i++)
- {
- var timeInMilliseconds = errorTimeCells[i].id * 1000;
- var time = parseInt(timeInMilliseconds);
- var date = new Date(time);
- errorTimeCells[i].innerHTML = date.toJSON();
- }
-
- var errorCells = document.getElementsByClassName("errorSpan");
- for (i =0; i < errorCells.length; i++)
- {
- var timeLapsedInSecs = errorCells[i].id;
- if (parseInt(timeLapsedInSecs) < 1800) {
- errorCells[i].style.color = "#9d261d";
- errorCells[i].style.borderBottomColor = "#9d261d";
- }
- errorCells[i].style.whiteSpace = "pre";
- }
+ jsError(function () {
+ componentErrors.append(Mustache.render($(template).filter("#component-errors-template").html(),formatErrorTimeSecs(response)));
+ //time, error
+ dtAutoPage("#component-errors-table", {});
+
+ var errorTimeCells = document.getElementsByClassName("errorTimeSpan");
+ for (i = 0; i < errorTimeCells.length; i++)
+ {
+ var timeInMilliseconds = errorTimeCells[i].id * 1000;
+ var time = parseInt(timeInMilliseconds);
+ var date = new Date(time);
+ errorTimeCells[i].innerHTML = date.toJSON();
+ }
+
+ var errorCells = document.getElementsByClassName("errorSpan");
+ for (i =0; i < errorCells.length; i++)
+ {
+ var timeLapsedInSecs = errorCells[i].id;
+ if (parseInt(timeLapsedInSecs) < 1800) {
+ errorCells[i].style.color = "#9d261d";
+ errorCells[i].style.borderBottomColor = "#9d261d";
+ }
+ errorCells[i].style.whiteSpace = "pre";
+ }
+ });
$('#component-summary [data-toggle="tooltip"]').tooltip();
$('#component-actions [data-toggle="tooltip"]').tooltip();
$('#component-stats-detail [data-toggle="tooltip"]').tooltip();
http://git-wip-us.apache.org/repos/asf/storm/blob/0d7b9757/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/deep_search_result.html
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/deep_search_result.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/deep_search_result.html
index e357687..9f9af6d 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/deep_search_result.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/deep_search_result.html
@@ -41,6 +41,9 @@
<div class="row">
<div id="result"></div>
</div>
+ <div class="row">
+ <div id="json-response-error" class="col-md-12"></div>
+ </div>
<div>
<p id="page-rendered-at-timestamp"></p>
</div>
@@ -48,6 +51,16 @@
</body>
<script type="text/javascript">
+function jsError(other) {
+ try {
+ other();
+ } catch (err) {
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),{error: "JS Error", errorMessage: err}));
+ });
+ }
+}
+
function elem_id_for_host(host) {
return "search-results-"+host.replace(/\./g,"-");
}
@@ -59,113 +72,128 @@ $(document).ready(function() {
var port = $.url("?port") || "*";
var search_archived = $.url("?search-archived");
+ $.ajaxSetup({
+ "error":function(jqXHR,textStatus,response) {
+ var errorJson = jQuery.parseJSON(jqXHR.responseText);
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),errorJson));
+ });
+ }
+ });
+
getStatic("/templates/deep-search-result-page-template.html", function(template) {
var checked;
if (search_archived) {
checked = "checked";
}
$.get("/api/v1/history/summary", function (response, status, jqXHR) {
- var findIds = function findIds(query, cb) {
- var found = [];
- var re = new RegExp(query, 'i');
- for (var j in response["topo-history"]) {
- var id = response["topo-history"][j];
- if (re.test(id)) {
- found.push({ value: id });
+ jsError(function() {
+ var findIds = function findIds(query, cb) {
+ var found = [];
+ var re = new RegExp(query, 'i');
+ for (var j in response["topo-history"]) {
+ var id = response["topo-history"][j];
+ if (re.test(id)) {
+ found.push({ value: id });
+ }
}
- }
- cb(found);
- };
-
- $("#search-form").append(Mustache.render($(template).filter("#search-form-template").html(),{id: id, search: search, count: count, search_archived: checked, topologies: response["topo-history"]}));
- $('#search-id').typeahead({
- hint: true,
- highlight: true,
- minLength: 1
- },
- {
- name: 'ids',
- displayKey: 'value',
- source: findIds
+ cb(found);
+ };
+
+ $("#search-form").append(Mustache.render($(template).filter("#search-form-template").html(),{id: id, search: search, count:
+ count, search_archived: checked, topologies: response["topo-history"]}));
+ $('#search-id').typeahead({
+ hint: true,
+ highlight: true,
+ minLength: 1
+ },
+ {
+ name: 'ids',
+ displayKey: 'value',
+ source: findIds
+ });
+ $('#search-form [data-toggle="tooltip"]').tooltip();
});
- $('#search-form [data-toggle="tooltip"]').tooltip();
});
function render_file(file, host, logviewerPort, logviewerScheme, count, template) {
- file.host = host;
- file.id = id;
- file.count = count;
- file.logviewerPort = logviewerPort;
- file.logviewerScheme = logviewerScheme;
- file.search_archived = search_archived;
- if (file.matches == 0) {
- file.resultNotFound = true;
- }
- var searchTemplate = $(template).filter("#search-result-identified-template").html();
- var rendered = Mustache.render(searchTemplate, file);
- var elemId = elem_id_for_host(host);
- $("#"+elemId).remove();
- if (file.resultNotFound) {
- // if no result found,
- // and there is no "aResult" or "noResult" element exists,
- // append "resultNotFound" element
- if (!$("#aResult").length && !$("#noResult").length) {
- $("#search-result-table > tbody").append(rendered);
+ jsError(function() {
+ file.host = host;
+ file.id = id;
+ file.count = count;
+ file.logviewerPort = logviewerPort;
+ file.logviewerScheme = logviewerScheme;
+ file.search_archived = search_archived;
+ if (file.matches == 0) {
+ file.resultNotFound = true;
+ }
+ var searchTemplate = $(template).filter("#search-result-identified-template").html();
+ var rendered = Mustache.render(searchTemplate, file);
+ var elemId = elem_id_for_host(host);
+ $("#"+elemId).remove();
+ if (file.resultNotFound) {
+ // if no result found,
+ // and there is no "aResult" or "noResult" element exists,
+ // append "resultNotFound" element
+ if (!$("#aResult").length && !$("#noResult").length) {
+ $("#search-result-table > tbody").append(rendered);
+ }
+ } else {
+ // if a result found, remove "noResult" element,
+ // and append the result
+ $("#noResult").remove();
+ $("#search-result-table > tbody").append(rendered);
}
- } else {
- // if a result found, remove "noResult" element,
- // and append the result
- $("#noResult").remove();
- $("#search-result-table > tbody").append(rendered);
- }
+ });
}
var result = $("#result");
if(search) {
$.get("/api/v1/supervisor/summary", function(response, status, jqXHR) {
+ jsError(function() {
+ for(var i in response.supervisors) {
+ response.supervisors[i].elemId = elem_id_for_host(response.supervisors[i].host);
+ }
- for(var i in response.supervisors) {
- response.supervisors[i].elemId = elem_id_for_host(response.supervisors[i].host);
- }
-
- result.append(Mustache.render($(template).filter("#search-result-files-template").html(),response));
-
- var logviewerPort = response.logviewerPort;
- var logviewerScheme = response.logviewerScheme;
- var distinct_hosts = {};
- for (var index in response.supervisors) {
- distinct_hosts[response.supervisors[index].host] = true;
- }
+ result.append(Mustache.render($(template).filter("#search-result-files-template").html(),response));
+ var logviewerPort = response.logviewerPort;
+ var logviewerScheme = response.logviewerScheme;
+ var distinct_hosts = {};
+ for (var index in response.supervisors) {
+ distinct_hosts[response.supervisors[index].host] = true;
+ }
- for (var host in distinct_hosts) {
- var searchURL = logviewerScheme + "://"+host+":"+logviewerPort+"/api/v1/deepSearch/"+id+"?search-string="+search+"&num-matches="+count+"&port="+port;
- if(search_archived)
- searchURL += "&search-archived=" + search_archived;
-
-
- $.ajax({dataType: "json",
- url: searchURL,
- xhrFields: {
- withCredentials: true
- },
- success: $.proxy(function(data,status,jqXHR) {
- if(port == "*") {
- for(var by_port in data) {
- for(var i in data[by_port].matches) {
- render_file(data[by_port].matches[i], this.host, logviewerPort, logviewerScheme, count, template);
+ for (var host in distinct_hosts) {
+ var searchURL = logviewerScheme +
+ "://"+host+":"+logviewerPort+"/api/v1/deepSearch/"+id+"?search-string="+search+"&num-matches="+count+"&port="+port;
+ if(search_archived)
+ searchURL += "&search-archived=" + search_archived;
+
+ $.ajax({dataType: "json",
+ url: searchURL,
+ xhrFields: {
+ withCredentials: true
+ },
+ success: $.proxy(function(data,status,jqXHR) {
+ if(port == "*") {
+ for(var by_port in data) {
+ for(var i in data[by_port].matches) {
+ render_file(data[by_port].matches[i], this.host, logviewerPort, logviewerScheme, count,
+ template);
+ }
}
}
- }
- else {
- for(var i in data.matches) {
- render_file(data.matches[i], this.host, logviewerPort, logviewerScheme, count, template);
+ else {
+ for(var i in data.matches) {
+ render_file(data.matches[i], this.host, logviewerPort, logviewerScheme, count, template);
+ }
}
- }
- }, {host: host, id: id})
- });
- }
+ }, {host: host, id: id})
+ });
+ }
+ });
});
}
});
http://git-wip-us.apache.org/repos/asf/storm/blob/0d7b9757/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/index.html
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/index.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/index.html
index 817eff6..fb38b43 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/index.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/index.html
@@ -101,11 +101,30 @@
</body>
<script>
+function jsError(other) {
+ try {
+ other();
+ } catch (err) {
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),{error: "JS Error", errorMessage: err}));
+ });
+ }
+}
+
$(document).ajaxStop($.unblockUI);
$(document).ajaxStart(function(){
$.blockUI({ message: '<img src="images/spinner.gif" /> <h3>Loading summary...</h3>'});
});
$(document).ready(function() {
+ $.ajaxSetup({
+ "error":function(jqXHR,textStatus,response) {
+ var errorJson = jQuery.parseJSON(jqXHR.responseText);
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),errorJson));
+ });
+ }
+ });
+
$.getJSON("/api/v1/cluster/configuration",function(responseClusterConfig,status,jqXHR) {
$.extend( $.fn.dataTable.defaults, {
stateSave: true,
@@ -113,14 +132,6 @@ $(document).ready(function() {
pageLength: responseClusterConfig["ui.pagination"]
});
- $.ajaxSetup({
- "error":function(jqXHR,textStatus,response) {
- var errorJson = jQuery.parseJSON(jqXHR.responseText);
- getStatic("/templates/json-error-template.html", function(template) {
- $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),errorJson));
- });
- }
- });
var uiUser = $("#ui-user");
var clusterSummary = $("#cluster-summary");
var clusterResources = $("#cluster-resources");
@@ -133,71 +144,89 @@ $(document).ready(function() {
getStatic("/templates/index-page-template.html", function(indexTemplate) {
$.getJSON("/api/v1/cluster/summary",function(response,status,jqXHR) {
getStatic("/templates/user-template.html", function(template) {
- uiUser.append(Mustache.render($(template).filter("#user-template").html(),response));
- $('#ui-user [data-toggle="tooltip"]').tooltip()
+ jsError(function() {
+ uiUser.append(Mustache.render($(template).filter("#user-template").html(),response));
+ $('#ui-user [data-toggle="tooltip"]').tooltip()
+ });
});
- clusterSummary.append(Mustache.render($(indexTemplate).filter("#cluster-summary-template").html(),response));
- $('#cluster-summary [data-toggle="tooltip"]').tooltip();
+ jsError(function() {
+ clusterSummary.append(Mustache.render($(indexTemplate).filter("#cluster-summary-template").html(),response));
+ $('#cluster-summary [data-toggle="tooltip"]').tooltip();
+ });
- clusterResources.append(Mustache.render($(indexTemplate).filter("#cluster-resources-template").html(),response));
- $('#cluster-resources [data-toggle="tooltip"]').tooltip();
+ jsError(function() {
+ clusterResources.append(Mustache.render($(indexTemplate).filter("#cluster-resources-template").html(),response));
+ $('#cluster-resources [data-toggle="tooltip"]').tooltip();
+ });
- var displayResource = response["schedulerDisplayResource"];
- $('#cluster-resources [data-toggle="tooltip"]').tooltip();
- if (!displayResource){
- $('#cluster-resources-header').hide();
- $('#cluster-resources').hide();
- };
+ jsError(function() {
+ var displayResource = response["schedulerDisplayResource"];
+ $('#cluster-resources [data-toggle="tooltip"]').tooltip();
+ if (!displayResource){
+ $('#cluster-resources-header').hide();
+ $('#cluster-resources').hide();
+ };
+ });
});
$.getJSON("/api/v1/nimbus/summary",function(response,status,jqXHR) {
- nimbusSummary.append(Mustache.render($(indexTemplate).filter("#nimbus-summary-template").html(),response));
- //host, port, isLeader, version, uptime
- dtAutoPage("#nimbus-summary-table", {
- columnDefs: [
- {type: "num", targets: [1]},
- {type: "time-str", targets: [4]}
- ]
+ jsError(function() {
+ nimbusSummary.append(Mustache.render($(indexTemplate).filter("#nimbus-summary-template").html(),response));
+ //host, port, isLeader, version, uptime
+ dtAutoPage("#nimbus-summary-table", {
+ columnDefs: [
+ {type: "num", targets: [1]},
+ {type: "time-str", targets: [4]}
+ ]
+ });
+ $('#nimbus-summary [data-toggle="tooltip"]').tooltip();
});
- $('#nimbus-summary [data-toggle="tooltip"]').tooltip();
});
$.getJSON("/api/v1/owner-resources", function(response, status, jqXHR) {
- ownerSummary.append(Mustache.render($(indexTemplate).filter("#owner-summary-template").html(), response));
- makeOwnerSummaryTable(response, '#owner-summary-table', '#owner-summary');
+ jsError(function() {
+ ownerSummary.append(Mustache.render($(indexTemplate).filter("#owner-summary-template").html(), response));
+ makeOwnerSummaryTable(response, '#owner-summary-table', '#owner-summary');
+ });
});
$.getJSON("/api/v1/topology/summary",function(response,status,jqXHR) {
- topologySummary.append(Mustache.render($(indexTemplate).filter("#topology-summary-template").html(),response));
- //name, owner, status, uptime, num workers, num executors, num tasks, replication count, assigned total mem, assigned total cpu, scheduler info
- dtAutoPage("#topology-summary-table", {
- columnDefs: [
- {type: "num", targets: [4, 5, 6, 7, 8, 9]},
- {type: "time-str", targets: [3]}
- ]
+ jsError(function() {
+ topologySummary.append(Mustache.render($(indexTemplate).filter("#topology-summary-template").html(),response));
+ //name, owner, status, uptime, num workers, num executors, num tasks, replication count, assigned total mem, assigned total cpu, scheduler info
+ dtAutoPage("#topology-summary-table", {
+ columnDefs: [
+ {type: "num", targets: [4, 5, 6, 7, 8, 9]},
+ {type: "time-str", targets: [3]}
+ ]
+ });
+ $('#topology-summary [data-toggle="tooltip"]').tooltip();
});
- $('#topology-summary [data-toggle="tooltip"]').tooltip();
});
$.getJSON("/api/v1/supervisor/summary",function(response,status,jqXHR) {
- supervisorSummary.append(Mustache.render($(indexTemplate).filter("#supervisor-summary-template").html(),response));
- //id, host, uptime, slots, used slots
- dtAutoPage("#supervisor-summary-table", {
- columnDefs: [
- {type: "num", targets: [3, 4]},
- {type: "time-str", targets: [2]}
- ]
+ jsError(function() {
+ supervisorSummary.append(Mustache.render($(indexTemplate).filter("#supervisor-summary-template").html(),response));
+ //id, host, uptime, slots, used slots
+ dtAutoPage("#supervisor-summary-table", {
+ columnDefs: [
+ {type: "num", targets: [3, 4]},
+ {type: "time-str", targets: [2]}
+ ]
+ });
+ $('#supervisor-summary [data-toggle="tooltip"]').tooltip();
});
- $('#supervisor-summary [data-toggle="tooltip"]').tooltip();
});
- var formattedResponse = formatConfigData(responseClusterConfig);
- config.append(Mustache.render($(indexTemplate).filter("#configuration-template").html(),formattedResponse));
- $('#nimbus-configuration-table td').jsonFormatter();
- //key, value
- dtAutoPage("#nimbus-configuration-table", {});
- $('#nimbus-configuration [data-toggle="tooltip"]').tooltip();
+ jsError(function() {
+ var formattedResponse = formatConfigData(responseClusterConfig);
+ config.append(Mustache.render($(indexTemplate).filter("#configuration-template").html(),formattedResponse));
+ $('#nimbus-configuration-table td').jsonFormatter();
+ //key, value
+ dtAutoPage("#nimbus-configuration-table", {});
+ $('#nimbus-configuration [data-toggle="tooltip"]').tooltip();
+ });
});
});
});
http://git-wip-us.apache.org/repos/asf/storm/blob/0d7b9757/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/js/script.js
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/js/script.js b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/js/script.js
index 40b49e0..49b3518 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/js/script.js
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/js/script.js
@@ -193,10 +193,12 @@ function formatConfigData(data) {
}
function formatErrorTimeSecs(response){
- var errors = response["componentErrors"];
- for(var i = 0 ; i < errors.length ; i++){
- var time = errors[i]['time'];
- errors[i]['time'] = moment.utc(time).local().format("ddd, DD MMM YYYY HH:mm:ss Z");
+ if('componentErrors' in response) {
+ var errors = response["componentErrors"];
+ for(var i = 0 ; i < errors.length ; i++){
+ var time = errors[i]['time'];
+ errors[i]['time'] = moment.utc(time).local().format("ddd, DD MMM YYYY HH:mm:ss Z");
+ }
}
return response;
}
http://git-wip-us.apache.org/repos/asf/storm/blob/0d7b9757/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/logviewer_search.html
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/logviewer_search.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/logviewer_search.html
index 5fb8870..96e7d9c 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/logviewer_search.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/logviewer_search.html
@@ -40,12 +40,25 @@
<div class="row">
<div id="result"></div>
</div>
+ <div class="row">
+ <div id="json-response-error"></div>
+ </div>
<div>
<p id="page-rendered-at-timestamp"></p>
</div>
</div>
</body>
<script>
+function jsError(other) {
+ try {
+ other();
+ } catch (err) {
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),{error: "JS Error", errorMessage: err}));
+ });
+ }
+}
+
$(document).ready(function() {
var file = $.url("?file");
var search = $.url("?search");
@@ -54,17 +67,30 @@ $(document).ready(function() {
file = decodeURIComponent(file);
search = decodeURIComponent(search);
+ $.ajaxSetup({
+ "error":function(jqXHR,textStatus,response) {
+ var errorJson = jQuery.parseJSON(jqXHR.responseText);
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),errorJson));
+ });
+ }
+ });
+
getStatic("/templates/logviewer-search-page-template.html", function(template) {
- $("#search-form").append(Mustache.render($(template).filter("#search-single-file").html(),{file: file, search: search, isDaemon: isDaemon}));
+ jsError(function() {
+ $("#search-form").append(Mustache.render($(template).filter("#search-single-file").html(),{file: file, search: search, isDaemon:isDaemon}));
+ });
var result = $("#result");
var url = "/api/v1/search?file="+encodeURIComponent(file)+"&search-string="+search+"&start-byte-offset="+offset+"&is-daemon="+isDaemon;
$.getJSON(url,function(response,status,jqXHR) {
- response.file = file;
- result.append(Mustache.render($(template).filter("#logviewer-search-result-template").html(),response));
- });
+ jsError(function() {
+ response.file = file;
+ result.append(Mustache.render($(template).filter("#logviewer-search-result-template").html(),response));
+ });
+ });
});
- });
+});
getPageRenderedTimestamp("page-rendered-at-timestamp");
http://git-wip-us.apache.org/repos/asf/storm/blob/0d7b9757/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/search_result.html
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/search_result.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/search_result.html
index 30f09e4..9a46095 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/search_result.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/search_result.html
@@ -40,62 +40,92 @@
<div class="row">
<div id="result"></div>
</div>
+ <div class="row">
+ <div id="json-response-error"></div>
+ </div>
<div>
<p id="page-rendered-at-timestamp"></p>
</div>
</div>
</body>
<script>
+function jsError(other) {
+ try {
+ other();
+ } catch (err) {
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),{error: "JS Error", errorMessage: err}));
+ });
+ }
+}
+
$(document).ready(function() {
var id = $.url("?id");
var search = $.url("?search");
var count = $.url("?count") || 2;
var searchArchived = $.url("?searchArchived") || "";
+ $.ajaxSetup({
+ "error":function(jqXHR,textStatus,response) {
+ var errorJson = jQuery.parseJSON(jqXHR.responseText);
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),errorJson));
+ });
+ }
+ });
+
getStatic("/templates/search-result-page-template.html", function(template) {
$("#search-form").append(Mustache.render($(template).filter("#search-form-template").html(),{id: id, search: search, count: count, searchArchived: searchArchived}));
var result = $("#result");
$.getJSON("/api/v1/topology-workers/"+id, function(response,status,jqXHR) {
- for (var index in response.hostPortList) {
- var host = response.hostPortList[index].host;
- var port = response.hostPortList[index].port;
- var elemId = "search-results-"+host.replace(/\./g,"-")+"-"+port;
- response.hostPortList[index].elemId = elemId;
- }
- result.append(Mustache.render($(template).filter("#search-result-files-template").html(),response));
+ jsError(function() {
+ for (var index in response.hostPortList) {
+ var host = response.hostPortList[index].host;
+ var port = response.hostPortList[index].port;
+ var elemId = "search-results-"+host.replace(/\./g,"-")+"-"+port;
+ response.hostPortList[index].elemId = elemId;
+ }
+ result.append(Mustache.render($(template).filter("#search-result-files-template").html(),response));
+ });
var logviewerPort = response.logviewerPort;
var logviewerScheme = response.logviewerScheme;
for (var index in response.hostPortList) {
- var host = response.hostPortList[index].host;
- var port = response.hostPortList[index].port;
- var elemId = response.hostPortList[index].elemId;
- var file = id+"/"+port+"/worker.log";
- var searchURL = logviewerScheme + "://"+host+":"+logviewerPort+"/api/v1/search?file="+encodeURIComponent(file)+"&search-string="+search+"&num-matches="+count;
- if (searchArchived != "") {
- searchURL = logviewerScheme + "://"+host+":"+logviewerPort+"/api/v1/deepSearch/"+id+"?search-string="+search+"&num-matches="+count+"&search-archived=true&port="+port;
- }
+ jsError(function() {
+ var host = response.hostPortList[index].host;
+ var port = response.hostPortList[index].port;
+ var elemId = response.hostPortList[index].elemId;
+ var file = id+"/"+port+"/worker.log";
+ var searchURL = logviewerScheme + "://"+host+":"+logviewerPort+"/api/v1/search?file="+encodeURIComponent(file)+"&search-string="+search+"&num-matches="+count;
+ if (searchArchived != "") {
+ searchURL = logviewerScheme + "://"+host+":"+logviewerPort+"/api/v1/deepSearch/"+id+"?search-string="+search+"&num-matches="+count+"&search-archived=true&port="+port;
+ }
- $.ajax({dataType: "json",
- url: searchURL,
- xhrFields: {
- withCredentials: true
- },
- success: $.proxy(function(data,status,jqXHR) {
- data.file = this.file;
- data.host = this.host;
- data.port = this.port;
- data.id = id;
- data.logviewerPort = logviewerPort;
- data.logviewerScheme = logviewerScheme;
- var searchTemp = $(template).filter("#search-result-identified-template").html();
- if (searchArchived != "") {
- searchTemp = $(template).filter("#deepsearch-result-identified-template").html();
- }
- var rendered = Mustache.render(searchTemp, data);
- $("#"+this.elemId).replaceWith(rendered);
- }, {host: host, port: port, file: file, elemId: elemId})
+ $.ajax({dataType: "json",
+ url: searchURL,
+ xhrFields: {
+ withCredentials: true
+ },
+ success: $.proxy(
+ function(data,status,jqXHR) {
+ jsError(function() {
+ data.file = this.file;
+ data.host = this.host;
+ data.port = this.port;
+ data.id = id;
+ data.logviewerPort = logviewerPort;
+ data.logviewerScheme = logviewerScheme;
+ var searchTemp = $(template).filter("#search-result-identified-template").html();
+ if (searchArchived != "") {
+ searchTemp = $(template).filter("#deepsearch-result-identified-template").html();
+ }
+ var rendered = Mustache.render(searchTemp, data);
+ $("#"+this.elemId).replaceWith(rendered);
+ });
+ },
+ {host: host, port: port, file: file, elemId: elemId})
+ });
});
}
});
http://git-wip-us.apache.org/repos/asf/storm/blob/0d7b9757/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/supervisor.html
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/supervisor.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/supervisor.html
index 5489d5a..5de0dfb 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/supervisor.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/supervisor.html
@@ -61,6 +61,9 @@
<span id="toggle-sys" style="display: block;" class="js-only"></span>
</div>
</div>
+ <div class="row">
+ <div id="json-response-error"></div>
+ </div>
<div>
<p id="page-rendered-at-timestamp"></p>
</div>
@@ -73,6 +76,16 @@ $(document).ajaxStop($.unblockUI);
$(document).ajaxStart(function(){
$.blockUI({ message: '<img src="images/spinner.gif" /> <h3>Loading summary...</h3>'});
});
+function jsError(other) {
+ try {
+ other();
+ } catch (err) {
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),{error: "JS Error", errorMessage: err}));
+ });
+ }
+}
+
$(document).ready(function() {
var supervisorId = $.url("?id");
var host = $.url("?host");
@@ -101,15 +114,6 @@ $(document).ready(function() {
});
}
});
- function jsError(other) {
- try {
- other();
- } catch (err) {
- getStatic("/templates/json-error-template.html", function(template) {
- $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),{error: "JS Error", errorMessage: err}));
- });
- }
- }
$.getJSON(url,function(response,status,jqXHR) {
getStatic("/templates/supervisor-page-template.html", function(template) {
http://git-wip-us.apache.org/repos/asf/storm/blob/0d7b9757/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/topology.html
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/topology.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/topology.html
index 0250242..0dda533 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/topology.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/topology.html
@@ -99,6 +99,16 @@
</body>
<script>
+function jsError(other) {
+ try {
+ other();
+ } catch (err) {
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),{error: "JS Error", errorMessage: err}));
+ });
+ }
+}
+
var toggleChangeLogLevel;
function closeChangeLogLevel (){
@@ -251,6 +261,15 @@ $(document).ready(function() {
var sys = $.cookies.get("sys") || "false";
var url = "/api/v1/topology/"+topologyId+"?sys="+sys;
if(window) url += "&window="+window;
+ $.ajaxSetup({
+ "error":function(jqXHR,textStatus,response) {
+ var errorJson = jQuery.parseJSON(jqXHR.responseText);
+ getStatic("/templates/json-error-template.html", function(template) {
+ $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),errorJson));
+ });
+ }
+ });
+
$.getJSON("/api/v1/cluster/configuration",function(response,status,jqXHR) {
$.extend( $.fn.dataTable.defaults, {
stateSave: true,
@@ -266,14 +285,6 @@ $(document).ready(function() {
});
renderToggleSys($("#toggle-switch"));
- $.ajaxSetup({
- "error":function(jqXHR,textStatus,response) {
- var errorJson = jQuery.parseJSON(jqXHR.responseText);
- getStatic("/templates/json-error-template.html", function(template) {
- $("#json-response-error").append(Mustache.render($(template).filter("#json-error-template").html(),errorJson));
- });
- }
- });
$.getJSON(url,function(response,status,jqXHR) {
var uiUser = $("#ui-user");
[2/2] storm git commit: Merge branch 'STORM-3219' of
https://github.com/revans2/incubator-storm into STORM-3219
Posted by bo...@apache.org.
Merge branch 'STORM-3219' of https://github.com/revans2/incubator-storm into STORM-3219
STORM-3219: Update javascript to report errors consistently
This is closed #2826
Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/5b0afe2f
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/5b0afe2f
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/5b0afe2f
Branch: refs/heads/master
Commit: 5b0afe2fc8c12a5815da4c2dc2b85b91a96f15d9
Parents: 834eb10 0d7b975
Author: Robert Evans <ev...@yahoo-inc.com>
Authored: Thu Sep 13 14:06:56 2018 -0500
Committer: Robert Evans <ev...@yahoo-inc.com>
Committed: Thu Sep 13 14:06:56 2018 -0500
----------------------------------------------------------------------
.../storm/daemon/ui/WEB-INF/component.html | 189 ++++++++++--------
.../daemon/ui/WEB-INF/deep_search_result.html | 194 +++++++++++--------
.../apache/storm/daemon/ui/WEB-INF/index.html | 133 ++++++++-----
.../apache/storm/daemon/ui/WEB-INF/js/script.js | 10 +-
.../daemon/ui/WEB-INF/logviewer_search.html | 36 +++-
.../storm/daemon/ui/WEB-INF/search_result.html | 98 ++++++----
.../storm/daemon/ui/WEB-INF/supervisor.html | 22 ++-
.../storm/daemon/ui/WEB-INF/topology.html | 27 ++-
8 files changed, 428 insertions(+), 281 deletions(-)
----------------------------------------------------------------------