You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by pv...@apache.org on 2021/06/02 16:22:48 UTC
[nifi] branch main updated: NIFI-8471 Parameter Contexts - show
referencing process groups
This is an automated email from the ASF dual-hosted git repository.
pvillard pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 66f0f90 NIFI-8471 Parameter Contexts - show referencing process groups
66f0f90 is described below
commit 66f0f902525fe8303389c316f3b63029e96a565f
Author: s9514171 <s9...@gmail.com>
AuthorDate: Mon May 3 08:39:07 2021 +0000
NIFI-8471 Parameter Contexts - show referencing process groups
Signed-off-by: Pierre Villard <pi...@gmail.com>
This closes #5048.
---
.../canvas/new-parameter-context-dialog.jsp | 9 ++
.../webapp/js/nf/canvas/nf-parameter-contexts.js | 96 ++++++++++++++++++++++
2 files changed, 105 insertions(+)
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp
index e308faa..d1e10a5 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp
@@ -46,6 +46,15 @@
</div>
<div class="spacer"> </div>
<div class="settings-right">
+ <div class="setting">
+ <div class="setting-name">
+ Referencing Components
+ <div class="fa fa-question-circle" alt="Info" title="Other components referencing this parameter context."></div>
+ </div>
+ <div class="setting-field">
+ <div id="parameter-context-referencing-components"></div>
+ </div>
+ </div>
</div>
</div>
<div id="parameter-context-parameters-tab-content" class="configuration-tab">
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index 2f9ffc6..d7e9c64 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -195,6 +195,8 @@
$('#parameter-context-description-field').val('');
$('#parameter-context-description-read-only').text('');
+ $('#parameter-context-referencing-components').empty();
+
$('#parameter-table, #add-parameter').show();
$('#parameter-context-tabs').show();
$('#parameter-context-tabs').find('.tab')[0].click();
@@ -1345,6 +1347,90 @@
var parameterIndex = 0;
/**
+ * Loads the reference for this parameter context.
+ *
+ * @param {jQuery} referencingProcessGroupsContainer
+ * @param {object} parameterContext
+ */
+ var loadReferencingProcessGroups = function (referencingProcessGroupsContainer, parameterContext) {
+ if (parameterContext.permissions.canRead === false) {
+ referencingProcessGroupsContainer.append('<div class="unset">Unauthorized</div>');
+ return;
+ }
+ var referencingProcessGroups = parameterContext.component.boundProcessGroups;
+ if (nfCommon.isEmpty(referencingProcessGroups)) {
+ referencingProcessGroupsContainer.append('<div class="unset">No referencing components.</div>');
+ return;
+ }
+
+ // toggles the visibility of a container
+ var toggle = function (twist, container) {
+ if (twist.hasClass('expanded')) {
+ twist.removeClass('expanded').addClass('collapsed');
+ container.hide();
+ } else {
+ twist.removeClass('collapsed').addClass('expanded');
+ container.show();
+ }
+ };
+
+ var processGroups = $('<ul class="referencing-component-listing clear"></ul>');
+ var unauthorized = $('<ul class="referencing-component-listing clear"></ul>');
+ $.each(referencingProcessGroups, function (_, referencingProcessGroupsEntity) {
+ // check the access policy for this referencing component
+ if (referencingProcessGroupsEntity.permissions.canRead === false) {
+ var unauthorizedReferencingComponent = $('<div class="unset"></div>').text(referencingProcessGroupsEntity.id);
+ unauthorized.append(unauthorizedReferencingComponent);
+ } else {
+ var referencingComponent = referencingProcessGroupsEntity.component;
+
+ var processGroupLink = $('<span class="referencing-component-name link"></span>').text(referencingComponent.name).on('click', function () {
+ // show the component
+ if (nfCommon.isDefinedAndNotNull(referencingComponent.parentGroupId)) {
+ nfCanvasUtils.showComponent(referencingComponent.parentGroupId, referencingComponent.id);
+ } else {
+ nfProcessGroup.enterGroup(referencingComponent.id);
+ }
+
+ // close the dialog and shell
+ referencingProcessGroupsContainer.closest('.dialog').modal('hide');
+ $('#shell-close-button').click();
+ });
+ var processGroupItem = $('<li></li>').append(processGroupLink);
+ processGroups.append(processGroupItem);
+ }
+ });
+
+ // create the collapsable listing for each type
+ var createReferenceBlock = function (titleText, list) {
+ if (list.is(':empty')) {
+ list.remove();
+ return;
+ }
+
+ var twist = $('<div class="expansion-button expanded"></div>');
+ var title = $('<span class="referencing-component-title"></span>').text(titleText);
+ var count = $('<span class="referencing-component-count"></span>').text('(' + list.children().length + ')');
+
+ // create the reference block
+ $('<div class="referencing-component-block pointer unselectable"></div>').on('click', function () {
+ // toggle this block
+ toggle(twist, list);
+
+ // update the border if necessary
+ updateReferencingComponentsBorder(referencingProcessGroupsContainer);
+ }).append(twist).append(title).append(count).appendTo(referencingProcessGroupsContainer);
+
+ // add the listing
+ list.appendTo(referencingProcessGroupsContainer);
+ };
+
+ // create blocks for each type of component
+ createReferenceBlock('Process Groups', processGroups);
+ createReferenceBlock('Unauthorized', unauthorized);
+ };
+
+ /**
* Loads the specified parameter registry.
*
* @param {object} parameterContext
@@ -2439,6 +2525,12 @@
.prop('title', parameterContextEntity.id)
.text(parameterContextEntity.id);
+ // get the reference container
+ var referencingComponentsContainer = $('#parameter-context-referencing-components');
+
+ // load the controller referencing components list
+ loadReferencingProcessGroups(referencingComponentsContainer, parameterContextEntity);
+
loadParameters(parameterContextEntity, parameterToSelect, readOnly || !canWrite);
var editModeButtonModel = [{
@@ -2501,6 +2593,10 @@
// check if border is necessary
updateReferencingComponentsBorder($('#parameter-referencing-components-container'));
+
+ // show the border if necessary
+ updateReferencingComponentsBorder(referencingComponentsContainer);
+
}).fail(nfErrorHandler.handleAjaxError);
},