mirror of https://github.com/apache/nifi.git
NIFI-4764: Add tooltips to status bar icons
add tooltip to process groups cleanup This closes #2394
This commit is contained in:
parent
bcac2766bc
commit
39a484b631
|
@ -149,7 +149,13 @@ image::nifi-toolbar-components.png["NiFi Components Toolbar"]
|
||||||
The Components Toolbar runs across the top left portion of your screen. It consists of the components you can drag onto the
|
The Components Toolbar runs across the top left portion of your screen. It consists of the components you can drag onto the
|
||||||
canvas to build your dataflow. Each component is described in more detail in link:building-dataflow.html[Building a Dataflow].
|
canvas to build your dataflow. Each component is described in more detail in link:building-dataflow.html[Building a Dataflow].
|
||||||
|
|
||||||
The Status Bar is under the Components Toolbar. The Status bar provides information about the number of threads that are currently active in the flow, the amount of data that currently exists in the flow, how many Remote Process Groups exist on the canvas in each state (Transmitting, Not Transmitting), how many Processors exist on the canvas in each state (Stopped, Running, Invalid, Disabled), how many versioned Process Groups exist on the canvas in each state (Up to date, Locally modified, Stale, Locally modified and stale, Sync failure) and the timestamp at which all of this information was last refreshed. Additionally, if the instance of NiFi is clustered, the Status bar shows how many nodes are in the cluster and how many are currently connected.
|
The Status Bar is under the Components Toolbar. The Status bar provides information about the number of threads that are
|
||||||
|
currently active in the flow, the amount of data that currently exists in the flow, how many Remote Process Groups exist
|
||||||
|
on the canvas in each state (Transmitting, Not Transmitting), how many Processors exist on the canvas in each state
|
||||||
|
(Stopped, Running, Invalid, Disabled), how many versioned Process Groups exist on the canvas in each state (Up to date,
|
||||||
|
Locally modified, Stale, Locally modified and stale, Sync failure) and the timestamp at which all of this information
|
||||||
|
was last refreshed. Additionally, if the instance of NiFi is clustered, the Status bar shows how many nodes are in the
|
||||||
|
cluster and how many are currently connected.
|
||||||
|
|
||||||
The Operate Palette sits to the left-hand side of the screen. It consists of buttons that are
|
The Operate Palette sits to the left-hand side of the screen. It consists of buttons that are
|
||||||
used by DFMs to manage the flow, as well as by administrators who manage user access
|
used by DFMs to manage the flow, as well as by administrators who manage user access
|
||||||
|
|
|
@ -17,23 +17,23 @@
|
||||||
<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %>
|
<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %>
|
||||||
<div id="flow-status" flex layout="row" layout-align="space-between center">
|
<div id="flow-status" flex layout="row" layout-align="space-between center">
|
||||||
<div id="flow-status-container" layout="row" layout-align="space-around center">
|
<div id="flow-status-container" layout="row" layout-align="space-around center">
|
||||||
<div class="fa fa-cubes" ng-if="appCtrl.nf.ClusterSummary.isClustered()"><span id="connected-nodes-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.connectedNodesCount}}</span></div>
|
<div class="fa fa-cubes" ng-if="appCtrl.nf.ClusterSummary.isClustered()" title="Connected nodes / Total number of nodes in the cluster"><span id="connected-nodes-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.connectedNodesCount}}</span></div>
|
||||||
<div class="icon icon-threads"><span id="active-thread-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.activeThreadCount}}</span></div>
|
<div class="icon icon-threads" title="Active threads"><span id="active-thread-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.activeThreadCount}}</span></div>
|
||||||
<div class="fa fa-list"><span id="total-queued">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.totalQueued}}</span></div>
|
<div class="fa fa-list" title="Total queued data"><span id="total-queued">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.totalQueued}}</span></div>
|
||||||
<div class="fa fa-bullseye"><span id="controller-transmitting-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerTransmittingCount}}</span></div>
|
<div class="fa fa-bullseye" title="Transmitting Remote Process Groups"><span id="controller-transmitting-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerTransmittingCount}}</span></div>
|
||||||
<div class="icon icon-transmit-false"><span id="controller-not-transmitting-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerNotTransmittingCount}}</span></div>
|
<div class="icon icon-transmit-false" title="Not Transmitting Remote Process Groups"><span id="controller-not-transmitting-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerNotTransmittingCount}}</span></div>
|
||||||
<div class="fa fa-play"><span id="controller-running-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerRunningCount}}</span></div>
|
<div class="fa fa-play" title="Running Components"><span id="controller-running-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerRunningCount}}</span></div>
|
||||||
<div class="fa fa-stop"><span id="controller-stopped-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerStoppedCount}}</span></div>
|
<div class="fa fa-stop" title="Stopped Components"><span id="controller-stopped-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerStoppedCount}}</span></div>
|
||||||
<div class="fa fa-warning"><span id="controller-invalid-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerInvalidCount}}</span></div>
|
<div class="fa fa-warning" title="Invalid Components"><span id="controller-invalid-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerInvalidCount}}</span></div>
|
||||||
<div class="icon icon-enable-false"><span id="controller-disabled-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerDisabledCount}}</span></div>
|
<div class="icon icon-enable-false" title="Disabled Components"><span id="controller-disabled-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerDisabledCount}}</span></div>
|
||||||
<div class="fa fa-check"><span id="controller-up-to-date-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerUpToDateCount}}</span></div>
|
<div class="fa fa-check" title="Up to date Versioned Process Groups"><span id="controller-up-to-date-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerUpToDateCount}}</span></div>
|
||||||
<div class="fa fa-asterisk"><span id="controller-locally-modified-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerLocallyModifiedCount}}</span></div>
|
<div class="fa fa-asterisk" title="Locally modified Versioned Process Groups"><span id="controller-locally-modified-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerLocallyModifiedCount}}</span></div>
|
||||||
<div class="fa fa-arrow-circle-up"><span id="controller-stale-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerStaleCount}}</span></div>
|
<div class="fa fa-arrow-circle-up" title="Stale Versioned Process Groups"><span id="controller-stale-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerStaleCount}}</span></div>
|
||||||
<div class="fa fa-exclamation-circle">
|
<div class="fa fa-exclamation-circle" title="Locally modified and stale Versioned Process Groups">
|
||||||
<span id="controller-locally-modified-and-stale-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerLocallyModifiedAndStaleCount}}</span>
|
<span id="controller-locally-modified-and-stale-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerLocallyModifiedAndStaleCount}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="fa fa-question"><span id="controller-sync-failure-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerSyncFailureCount}}</span></div>
|
<div class="fa fa-question" title="Sync failure Versioned Process Groups"><span id="controller-sync-failure-count">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.controllerSyncFailureCount}}</span></div>
|
||||||
<div class="fa fa-refresh"><span id="stats-last-refreshed">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.statsLastRefreshed}}</span></div>
|
<div class="fa fa-refresh" title="Last refresh"><span id="stats-last-refreshed">{{appCtrl.serviceProvider.headerCtrl.flowStatusCtrl.statsLastRefreshed}}</span></div>
|
||||||
<div id="canvas-loading-container" class="loading-container"></div>
|
<div id="canvas-loading-container" class="loading-container"></div>
|
||||||
</div>
|
</div>
|
||||||
<div layout="row" layout-align="end center">
|
<div layout="row" layout-align="end center">
|
||||||
|
|
|
@ -308,7 +308,10 @@
|
||||||
'class': 'process-group-transmitting process-group-contents-icon',
|
'class': 'process-group-transmitting process-group-contents-icon',
|
||||||
'font-family': 'FontAwesome'
|
'font-family': 'FontAwesome'
|
||||||
})
|
})
|
||||||
.text('\uf140');
|
.text('\uf140')
|
||||||
|
.append("title")
|
||||||
|
.text("Transmitting Remote Process Groups");
|
||||||
|
|
||||||
|
|
||||||
// transmitting count
|
// transmitting count
|
||||||
details.append('text')
|
details.append('text')
|
||||||
|
@ -324,7 +327,9 @@
|
||||||
'class': 'process-group-not-transmitting process-group-contents-icon',
|
'class': 'process-group-not-transmitting process-group-contents-icon',
|
||||||
'font-family': 'flowfont'
|
'font-family': 'flowfont'
|
||||||
})
|
})
|
||||||
.text('\ue80a');
|
.text('\ue80a')
|
||||||
|
.append("title")
|
||||||
|
.text("Not Transmitting Remote Process Groups");
|
||||||
|
|
||||||
// not transmitting count
|
// not transmitting count
|
||||||
details.append('text')
|
details.append('text')
|
||||||
|
@ -340,7 +345,9 @@
|
||||||
'class': 'process-group-running process-group-contents-icon',
|
'class': 'process-group-running process-group-contents-icon',
|
||||||
'font-family': 'FontAwesome'
|
'font-family': 'FontAwesome'
|
||||||
})
|
})
|
||||||
.text('\uf04b');
|
.text('\uf04b')
|
||||||
|
.append("title")
|
||||||
|
.text("Running Components");
|
||||||
|
|
||||||
// running count
|
// running count
|
||||||
details.append('text')
|
details.append('text')
|
||||||
|
@ -356,7 +363,9 @@
|
||||||
'class': 'process-group-stopped process-group-contents-icon',
|
'class': 'process-group-stopped process-group-contents-icon',
|
||||||
'font-family': 'FontAwesome'
|
'font-family': 'FontAwesome'
|
||||||
})
|
})
|
||||||
.text('\uf04d');
|
.text('\uf04d')
|
||||||
|
.append("title")
|
||||||
|
.text("Stopped Components");
|
||||||
|
|
||||||
// stopped count
|
// stopped count
|
||||||
details.append('text')
|
details.append('text')
|
||||||
|
@ -372,7 +381,9 @@
|
||||||
'class': 'process-group-invalid process-group-contents-icon',
|
'class': 'process-group-invalid process-group-contents-icon',
|
||||||
'font-family': 'FontAwesome'
|
'font-family': 'FontAwesome'
|
||||||
})
|
})
|
||||||
.text('\uf071');
|
.text('\uf071')
|
||||||
|
.append("title")
|
||||||
|
.text("Invalid Components");
|
||||||
|
|
||||||
// invalid count
|
// invalid count
|
||||||
details.append('text')
|
details.append('text')
|
||||||
|
@ -388,7 +399,9 @@
|
||||||
'class': 'process-group-disabled process-group-contents-icon',
|
'class': 'process-group-disabled process-group-contents-icon',
|
||||||
'font-family': 'flowfont'
|
'font-family': 'flowfont'
|
||||||
})
|
})
|
||||||
.text('\ue802');
|
.text('\ue802')
|
||||||
|
.append("title")
|
||||||
|
.text("Disabled Components");
|
||||||
|
|
||||||
// disabled count
|
// disabled count
|
||||||
details.append('text')
|
details.append('text')
|
||||||
|
@ -407,7 +420,9 @@
|
||||||
'class': 'process-group-up-to-date process-group-contents-icon',
|
'class': 'process-group-up-to-date process-group-contents-icon',
|
||||||
'font-family': 'FontAwesome'
|
'font-family': 'FontAwesome'
|
||||||
})
|
})
|
||||||
.text('\uf00c');
|
.text('\uf00c')
|
||||||
|
.append("title")
|
||||||
|
.text("Up to date Versioned Process Groups");
|
||||||
|
|
||||||
// up to date count
|
// up to date count
|
||||||
details.append('text')
|
details.append('text')
|
||||||
|
@ -427,7 +442,9 @@
|
||||||
'class': 'process-group-locally-modified process-group-contents-icon',
|
'class': 'process-group-locally-modified process-group-contents-icon',
|
||||||
'font-family': 'FontAwesome'
|
'font-family': 'FontAwesome'
|
||||||
})
|
})
|
||||||
.text('\uf069');
|
.text('\uf069')
|
||||||
|
.append("title")
|
||||||
|
.text("Locally modified Versioned Process Groups");
|
||||||
|
|
||||||
// locally modified count
|
// locally modified count
|
||||||
details.append('text')
|
details.append('text')
|
||||||
|
@ -447,7 +464,9 @@
|
||||||
'class': 'process-group-stale process-group-contents-icon',
|
'class': 'process-group-stale process-group-contents-icon',
|
||||||
'font-family': 'FontAwesome'
|
'font-family': 'FontAwesome'
|
||||||
})
|
})
|
||||||
.text('\uf0aa');
|
.text('\uf0aa')
|
||||||
|
.append("title")
|
||||||
|
.text("Stale Versioned Process Groups");
|
||||||
|
|
||||||
// stale count
|
// stale count
|
||||||
details.append('text')
|
details.append('text')
|
||||||
|
@ -467,7 +486,9 @@
|
||||||
'class': 'process-group-locally-modified-and-stale process-group-contents-icon',
|
'class': 'process-group-locally-modified-and-stale process-group-contents-icon',
|
||||||
'font-family': 'FontAwesome'
|
'font-family': 'FontAwesome'
|
||||||
})
|
})
|
||||||
.text('\uf06a');
|
.text('\uf06a')
|
||||||
|
.append("title")
|
||||||
|
.text("Locally modified and stale Versioned Process Groups");
|
||||||
|
|
||||||
// locally modified and stale count
|
// locally modified and stale count
|
||||||
details.append('text')
|
details.append('text')
|
||||||
|
@ -487,7 +508,9 @@
|
||||||
'class': 'process-group-sync-failure process-group-contents-icon',
|
'class': 'process-group-sync-failure process-group-contents-icon',
|
||||||
'font-family': 'FontAwesome'
|
'font-family': 'FontAwesome'
|
||||||
})
|
})
|
||||||
.text('\uf128');
|
.text('\uf128')
|
||||||
|
.append("title")
|
||||||
|
.text("Sync failure Versioned Process Groups");
|
||||||
|
|
||||||
// sync failure count
|
// sync failure count
|
||||||
details.append('text')
|
details.append('text')
|
||||||
|
@ -847,6 +870,7 @@
|
||||||
.text(function (d) {
|
.text(function (d) {
|
||||||
return d.activeRemotePortCount;
|
return d.activeRemotePortCount;
|
||||||
});
|
});
|
||||||
|
transmittingCount.append("title").text("Transmitting Remote Process Groups");
|
||||||
|
|
||||||
// update not transmitting
|
// update not transmitting
|
||||||
var notTransmitting = details.select('text.process-group-not-transmitting')
|
var notTransmitting = details.select('text.process-group-not-transmitting')
|
||||||
|
@ -868,6 +892,7 @@
|
||||||
.text(function (d) {
|
.text(function (d) {
|
||||||
return d.inactiveRemotePortCount;
|
return d.inactiveRemotePortCount;
|
||||||
});
|
});
|
||||||
|
notTransmittingCount.append("title").text("Not transmitting Remote Process Groups")
|
||||||
|
|
||||||
// update running
|
// update running
|
||||||
var running = details.select('text.process-group-running')
|
var running = details.select('text.process-group-running')
|
||||||
|
@ -889,6 +914,7 @@
|
||||||
.text(function (d) {
|
.text(function (d) {
|
||||||
return d.runningCount;
|
return d.runningCount;
|
||||||
});
|
});
|
||||||
|
runningCount.append("title").text("Running Components");
|
||||||
|
|
||||||
// update stopped
|
// update stopped
|
||||||
var stopped = details.select('text.process-group-stopped')
|
var stopped = details.select('text.process-group-stopped')
|
||||||
|
@ -910,6 +936,7 @@
|
||||||
.text(function (d) {
|
.text(function (d) {
|
||||||
return d.stoppedCount;
|
return d.stoppedCount;
|
||||||
});
|
});
|
||||||
|
stoppedCount.append("title").text("Stopped Components");
|
||||||
|
|
||||||
// update invalid
|
// update invalid
|
||||||
var invalid = details.select('text.process-group-invalid')
|
var invalid = details.select('text.process-group-invalid')
|
||||||
|
@ -931,6 +958,7 @@
|
||||||
.text(function (d) {
|
.text(function (d) {
|
||||||
return d.invalidCount;
|
return d.invalidCount;
|
||||||
});
|
});
|
||||||
|
invalidCount.append("title").text("Invalid Components");
|
||||||
|
|
||||||
// update disabled
|
// update disabled
|
||||||
var disabled = details.select('text.process-group-disabled')
|
var disabled = details.select('text.process-group-disabled')
|
||||||
|
@ -944,7 +972,7 @@
|
||||||
var invalidX = parseInt(invalidCount.attr('x'), 10);
|
var invalidX = parseInt(invalidCount.attr('x'), 10);
|
||||||
return invalidX + Math.round(invalidCount.node().getComputedTextLength()) + CONTENTS_SPACER;
|
return invalidX + Math.round(invalidCount.node().getComputedTextLength()) + CONTENTS_SPACER;
|
||||||
});
|
});
|
||||||
details.select('text.process-group-disabled-count')
|
var disabledCount = details.select('text.process-group-disabled-count')
|
||||||
.attr('x', function () {
|
.attr('x', function () {
|
||||||
var disabledCountX = parseInt(disabled.attr('x'), 10);
|
var disabledCountX = parseInt(disabled.attr('x'), 10);
|
||||||
return disabledCountX + Math.round(disabled.node().getComputedTextLength()) + CONTENTS_VALUE_SPACER;
|
return disabledCountX + Math.round(disabled.node().getComputedTextLength()) + CONTENTS_VALUE_SPACER;
|
||||||
|
@ -952,6 +980,7 @@
|
||||||
.text(function (d) {
|
.text(function (d) {
|
||||||
return d.disabledCount;
|
return d.disabledCount;
|
||||||
});
|
});
|
||||||
|
disabledCount.append("title").text("Disabled Components");
|
||||||
|
|
||||||
// up to date current
|
// up to date current
|
||||||
var upToDate = details.select('text.process-group-up-to-date')
|
var upToDate = details.select('text.process-group-up-to-date')
|
||||||
|
@ -969,6 +998,7 @@
|
||||||
.text(function (d) {
|
.text(function (d) {
|
||||||
return d.upToDateCount;
|
return d.upToDateCount;
|
||||||
});
|
});
|
||||||
|
upToDateCount.append("title").text("Up to date Versioned Process Groups");
|
||||||
|
|
||||||
// update locally modified
|
// update locally modified
|
||||||
var locallyModified = details.select('text.process-group-locally-modified')
|
var locallyModified = details.select('text.process-group-locally-modified')
|
||||||
|
@ -990,6 +1020,7 @@
|
||||||
.text(function (d) {
|
.text(function (d) {
|
||||||
return d.locallyModifiedCount;
|
return d.locallyModifiedCount;
|
||||||
});
|
});
|
||||||
|
locallyModifiedCount.append("title").text("Locally modified Versioned Process Groups");
|
||||||
|
|
||||||
// update stale
|
// update stale
|
||||||
var stale = details.select('text.process-group-stale')
|
var stale = details.select('text.process-group-stale')
|
||||||
|
@ -1011,6 +1042,7 @@
|
||||||
.text(function (d) {
|
.text(function (d) {
|
||||||
return d.staleCount;
|
return d.staleCount;
|
||||||
});
|
});
|
||||||
|
staleCount.append("title").text("Stale Versioned Process Groups");
|
||||||
|
|
||||||
// update locally modified and stale
|
// update locally modified and stale
|
||||||
var locallyModifiedAndStale = details.select('text.process-group-locally-modified-and-stale')
|
var locallyModifiedAndStale = details.select('text.process-group-locally-modified-and-stale')
|
||||||
|
@ -1032,6 +1064,7 @@
|
||||||
.text(function (d) {
|
.text(function (d) {
|
||||||
return d.locallyModifiedAndStaleCount;
|
return d.locallyModifiedAndStaleCount;
|
||||||
});
|
});
|
||||||
|
locallyModifiedAndStaleCount.append("title").text("Locally modified and stale Versioned Process Groups");
|
||||||
|
|
||||||
// update sync failure
|
// update sync failure
|
||||||
var syncFailure = details.select('text.process-group-sync-failure')
|
var syncFailure = details.select('text.process-group-sync-failure')
|
||||||
|
@ -1045,7 +1078,7 @@
|
||||||
var syncFailureX = parseInt(locallyModifiedAndStaleCount.attr('x'), 10);
|
var syncFailureX = parseInt(locallyModifiedAndStaleCount.attr('x'), 10);
|
||||||
return syncFailureX + Math.round(locallyModifiedAndStaleCount.node().getComputedTextLength()) + CONTENTS_SPACER - 2;
|
return syncFailureX + Math.round(locallyModifiedAndStaleCount.node().getComputedTextLength()) + CONTENTS_SPACER - 2;
|
||||||
});
|
});
|
||||||
details.select('text.process-group-sync-failure-count')
|
var syncFailureCount = details.select('text.process-group-sync-failure-count')
|
||||||
.attr('x', function () {
|
.attr('x', function () {
|
||||||
var syncFailureCountX = parseInt(syncFailure.attr('x'), 10);
|
var syncFailureCountX = parseInt(syncFailure.attr('x'), 10);
|
||||||
return syncFailureCountX + Math.round(syncFailure.node().getComputedTextLength()) + CONTENTS_VALUE_SPACER;
|
return syncFailureCountX + Math.round(syncFailure.node().getComputedTextLength()) + CONTENTS_VALUE_SPACER;
|
||||||
|
@ -1053,6 +1086,7 @@
|
||||||
.text(function (d) {
|
.text(function (d) {
|
||||||
return d.syncFailureCount;
|
return d.syncFailureCount;
|
||||||
});
|
});
|
||||||
|
syncFailureCount.append("title").text("Sync failure Versioned Process Groups");
|
||||||
|
|
||||||
// update version control information
|
// update version control information
|
||||||
var versionControl = processGroup.select('text.version-control')
|
var versionControl = processGroup.select('text.version-control')
|
||||||
|
|
Loading…
Reference in New Issue