mirror of https://github.com/apache/nifi.git
NIFI-2581: Keeping context menu and tooltips open when refreshing the canvas.
This closes #899.
This commit is contained in:
parent
a181c7b9d7
commit
3378426f35
|
@ -476,11 +476,8 @@ nf.CanvasUtils = (function () {
|
||||||
bulletins: function (selection, d, getTooltipContainer, offset) {
|
bulletins: function (selection, d, getTooltipContainer, offset) {
|
||||||
offset = nf.Common.isDefinedAndNotNull(offset) ? offset : 0;
|
offset = nf.Common.isDefinedAndNotNull(offset) ? offset : 0;
|
||||||
|
|
||||||
// remove any existing tip if necessary
|
// get the tip
|
||||||
var tip = d3.select('#bulletin-tip-' + d.id);
|
var tip = d3.select('#bulletin-tip-' + d.id);
|
||||||
if (!tip.empty()) {
|
|
||||||
tip.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
var hasBulletins = false;
|
var hasBulletins = false;
|
||||||
if (!nf.Common.isEmpty(d.bulletins)) {
|
if (!nf.Common.isEmpty(d.bulletins)) {
|
||||||
|
@ -499,17 +496,20 @@ nf.CanvasUtils = (function () {
|
||||||
// update the tooltip
|
// update the tooltip
|
||||||
selection.select('text.bulletin-icon')
|
selection.select('text.bulletin-icon')
|
||||||
.each(function () {
|
.each(function () {
|
||||||
// if there are bulletins generate a tooltip
|
// create the tip if necessary
|
||||||
tip = getTooltipContainer().append('div')
|
if (tip.empty()) {
|
||||||
|
tip = getTooltipContainer().append('div')
|
||||||
.attr('id', function () {
|
.attr('id', function () {
|
||||||
return 'bulletin-tip-' + d.id;
|
return 'bulletin-tip-' + d.id;
|
||||||
})
|
})
|
||||||
.attr('class', 'tooltip nifi-tooltip')
|
.attr('class', 'tooltip nifi-tooltip');
|
||||||
.html(function () {
|
}
|
||||||
return $('<div></div>').append(list).html();
|
|
||||||
});
|
|
||||||
|
|
||||||
// add the tooltip
|
// add the tooltip
|
||||||
|
tip.html(function () {
|
||||||
|
return $('<div></div>').append(list).html();
|
||||||
|
});
|
||||||
|
|
||||||
nf.CanvasUtils.canvasTooltip(tip, d3.select(this));
|
nf.CanvasUtils.canvasTooltip(tip, d3.select(this));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -517,6 +517,11 @@ nf.CanvasUtils = (function () {
|
||||||
selection.select('text.bulletin-icon').style("visibility", "visible");
|
selection.select('text.bulletin-icon').style("visibility", "visible");
|
||||||
selection.select('rect.bulletin-background').style("visibility", "visible");
|
selection.select('rect.bulletin-background').style("visibility", "visible");
|
||||||
} else {
|
} else {
|
||||||
|
// clean up if necessary
|
||||||
|
if (!tip.empty()) {
|
||||||
|
tip.remove();
|
||||||
|
}
|
||||||
|
|
||||||
// update the tooltip background
|
// update the tooltip background
|
||||||
selection.select('text.bulletin-icon').style("visibility", "hidden");
|
selection.select('text.bulletin-icon').style("visibility", "hidden");
|
||||||
selection.select('rect.bulletin-background').style("visibility", "hidden");
|
selection.select('rect.bulletin-background').style("visibility", "hidden");
|
||||||
|
@ -1292,6 +1297,9 @@ nf.CanvasUtils = (function () {
|
||||||
* @param {string} groupId
|
* @param {string} groupId
|
||||||
*/
|
*/
|
||||||
enterGroup: function (groupId) {
|
enterGroup: function (groupId) {
|
||||||
|
// hide the context menu
|
||||||
|
nf.ContextMenu.hide();
|
||||||
|
|
||||||
// set the new group id
|
// set the new group id
|
||||||
nf.Canvas.setGroupId(groupId);
|
nf.Canvas.setGroupId(groupId);
|
||||||
|
|
||||||
|
|
|
@ -725,9 +725,6 @@ nf.Canvas = (function () {
|
||||||
*/
|
*/
|
||||||
reload: function (options) {
|
reload: function (options) {
|
||||||
return $.Deferred(function (deferred) {
|
return $.Deferred(function (deferred) {
|
||||||
// hide the context menu
|
|
||||||
nf.ContextMenu.hide();
|
|
||||||
|
|
||||||
// issue the requests
|
// issue the requests
|
||||||
var processGroupXhr = reloadProcessGroup(nf.Canvas.getGroupId(), options);
|
var processGroupXhr = reloadProcessGroup(nf.Canvas.getGroupId(), options);
|
||||||
var statusXhr = nf.ng.Bridge.injector.get('flowStatusCtrl').reloadFlowStatus();
|
var statusXhr = nf.ng.Bridge.injector.get('flowStatusCtrl').reloadFlowStatus();
|
||||||
|
|
|
@ -357,20 +357,22 @@ nf.Port = (function () {
|
||||||
return img;
|
return img;
|
||||||
})
|
})
|
||||||
.each(function (d) {
|
.each(function (d) {
|
||||||
// remove the existing tip if necessary
|
// get the tip
|
||||||
var tip = d3.select('#run-status-tip-' + d.id);
|
var tip = d3.select('#run-status-tip-' + d.id);
|
||||||
if (!tip.empty()) {
|
|
||||||
tip.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
// if there are validation errors generate a tooltip
|
// if there are validation errors generate a tooltip
|
||||||
if (d.permissions.canRead && !nf.Common.isEmpty(d.component.validationErrors)) {
|
if (d.permissions.canRead && !nf.Common.isEmpty(d.component.validationErrors)) {
|
||||||
tip = d3.select('#port-tooltips').append('div')
|
// create the tip if necessary
|
||||||
.attr('id', function () {
|
if (tip.empty()) {
|
||||||
return 'run-status-tip-' + d.id;
|
tip = d3.select('#port-tooltips').append('div')
|
||||||
})
|
.attr('id', function () {
|
||||||
.attr('class', 'tooltip nifi-tooltip')
|
return 'run-status-tip-' + d.id;
|
||||||
.html(function () {
|
})
|
||||||
|
.attr('class', 'tooltip nifi-tooltip');
|
||||||
|
}
|
||||||
|
|
||||||
|
// update the tip
|
||||||
|
tip.html(function () {
|
||||||
var list = nf.Common.formatUnorderedList(d.component.validationErrors);
|
var list = nf.Common.formatUnorderedList(d.component.validationErrors);
|
||||||
if (list === null || list.length === 0) {
|
if (list === null || list.length === 0) {
|
||||||
return '';
|
return '';
|
||||||
|
@ -381,6 +383,11 @@ nf.Port = (function () {
|
||||||
|
|
||||||
// add the tooltip
|
// add the tooltip
|
||||||
nf.CanvasUtils.canvasTooltip(tip, d3.select(this));
|
nf.CanvasUtils.canvasTooltip(tip, d3.select(this));
|
||||||
|
} else {
|
||||||
|
// remove if necessary
|
||||||
|
if (!tip.empty()) {
|
||||||
|
tip.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -608,20 +608,22 @@ nf.Processor = (function () {
|
||||||
return img;
|
return img;
|
||||||
})
|
})
|
||||||
.each(function (d) {
|
.each(function (d) {
|
||||||
// remove the existing tip if necessary
|
// get the tip
|
||||||
var tip = d3.select('#run-status-tip-' + d.id);
|
var tip = d3.select('#run-status-tip-' + d.id);
|
||||||
if (!tip.empty()) {
|
|
||||||
tip.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
// if there are validation errors generate a tooltip
|
// if there are validation errors generate a tooltip
|
||||||
if (d.permissions.canRead && !nf.Common.isEmpty(d.component.validationErrors)) {
|
if (d.permissions.canRead && !nf.Common.isEmpty(d.component.validationErrors)) {
|
||||||
tip = d3.select('#processor-tooltips').append('div')
|
// create the tip if necessary
|
||||||
.attr('id', function () {
|
if (tip.empty()) {
|
||||||
return 'run-status-tip-' + d.id;
|
tip = d3.select('#processor-tooltips').append('div')
|
||||||
})
|
.attr('id', function () {
|
||||||
.attr('class', 'tooltip nifi-tooltip')
|
return 'run-status-tip-' + d.id;
|
||||||
.html(function () {
|
})
|
||||||
|
.attr('class', 'tooltip nifi-tooltip');
|
||||||
|
}
|
||||||
|
|
||||||
|
// update the tip
|
||||||
|
tip.html(function () {
|
||||||
var list = nf.Common.formatUnorderedList(d.component.validationErrors);
|
var list = nf.Common.formatUnorderedList(d.component.validationErrors);
|
||||||
if (list === null || list.length === 0) {
|
if (list === null || list.length === 0) {
|
||||||
return '';
|
return '';
|
||||||
|
@ -632,6 +634,11 @@ nf.Processor = (function () {
|
||||||
|
|
||||||
// add the tooltip
|
// add the tooltip
|
||||||
nf.CanvasUtils.canvasTooltip(tip, d3.select(this));
|
nf.CanvasUtils.canvasTooltip(tip, d3.select(this));
|
||||||
|
} else {
|
||||||
|
// remove the tip if necessary
|
||||||
|
if (!tip.empty()) {
|
||||||
|
tip.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -520,18 +520,20 @@ nf.RemoteProcessGroup = (function () {
|
||||||
return icon;
|
return icon;
|
||||||
})
|
})
|
||||||
.each(function (d) {
|
.each(function (d) {
|
||||||
// remove the existing tip if necessary
|
// get the tip
|
||||||
var tip = d3.select('#transmission-secure-' + d.id);
|
var tip = d3.select('#transmission-secure-' + d.id);
|
||||||
if (!tip.empty()) {
|
|
||||||
tip.remove();
|
// remove the tip if necessary
|
||||||
|
if (tip.empty()) {
|
||||||
|
tip = d3.select('#remote-process-group-tooltips').append('div')
|
||||||
|
.attr('id', function () {
|
||||||
|
return 'transmission-secure-' + d.id;
|
||||||
|
})
|
||||||
|
.attr('class', 'tooltip nifi-tooltip');
|
||||||
}
|
}
|
||||||
|
|
||||||
tip = d3.select('#remote-process-group-tooltips').append('div')
|
// update the tip
|
||||||
.attr('id', function () {
|
tip.text(function () {
|
||||||
return 'transmission-secure-' + d.id;
|
|
||||||
})
|
|
||||||
.attr('class', 'tooltip nifi-tooltip')
|
|
||||||
.text(function () {
|
|
||||||
if (d.component.targetSecure === true) {
|
if (d.component.targetSecure === true) {
|
||||||
return 'Site-to-Site is secure.';
|
return 'Site-to-Site is secure.';
|
||||||
} else {
|
} else {
|
||||||
|
@ -720,20 +722,22 @@ nf.RemoteProcessGroup = (function () {
|
||||||
return d.permissions.canRead && !nf.Common.isEmpty(d.component.authorizationIssues);
|
return d.permissions.canRead && !nf.Common.isEmpty(d.component.authorizationIssues);
|
||||||
})
|
})
|
||||||
.each(function (d) {
|
.each(function (d) {
|
||||||
// remove the existing tip if necessary
|
// get the tip
|
||||||
var tip = d3.select('#authorization-issues-' + d.id);
|
var tip = d3.select('#authorization-issues-' + d.id);
|
||||||
if (!tip.empty()) {
|
|
||||||
tip.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
// if there are validation errors generate a tooltip
|
// if there are validation errors generate a tooltip
|
||||||
if (d.permissions.canRead && !nf.Common.isEmpty(d.component.authorizationIssues)) {
|
if (d.permissions.canRead && !nf.Common.isEmpty(d.component.authorizationIssues)) {
|
||||||
tip = d3.select('#remote-process-group-tooltips').append('div')
|
// create the tip if necessary
|
||||||
.attr('id', function () {
|
if (tip.empty()) {
|
||||||
return 'authorization-issues-' + d.id;
|
tip = d3.select('#remote-process-group-tooltips').append('div')
|
||||||
})
|
.attr('id', function () {
|
||||||
.attr('class', 'tooltip nifi-tooltip')
|
return 'authorization-issues-' + d.id;
|
||||||
.html(function () {
|
})
|
||||||
|
.attr('class', 'tooltip nifi-tooltip');
|
||||||
|
}
|
||||||
|
|
||||||
|
// update the tip
|
||||||
|
tip.html(function () {
|
||||||
var list = nf.Common.formatUnorderedList(d.component.authorizationIssues);
|
var list = nf.Common.formatUnorderedList(d.component.authorizationIssues);
|
||||||
if (list === null || list.length === 0) {
|
if (list === null || list.length === 0) {
|
||||||
return '';
|
return '';
|
||||||
|
@ -744,6 +748,10 @@ nf.RemoteProcessGroup = (function () {
|
||||||
|
|
||||||
// add the tooltip
|
// add the tooltip
|
||||||
nf.CanvasUtils.canvasTooltip(tip, d3.select(this));
|
nf.CanvasUtils.canvasTooltip(tip, d3.select(this));
|
||||||
|
} else {
|
||||||
|
if (!tip.empty()) {
|
||||||
|
tip.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue