NIFI-259: - Addressing some minor layout issues with the view state dialog. - Ensuring appropriate locking when attempting to clear state.
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/f0d8f73f Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/f0d8f73f Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/f0d8f73f Branch: refs/heads/master Commit: f0d8f73f267c9593e72e4a0df11ae0edf172d42d Parents: c65829f Author: Matt Gilman <[email protected]> Authored: Wed Jan 13 16:57:59 2016 -0500 Committer: Matt Gilman <[email protected]> Committed: Wed Jan 13 16:57:59 2016 -0500 ---------------------------------------------------------------------- .../apache/nifi/web/NiFiServiceFacadeLock.java | 11 ++++ .../partials/canvas/component-state-dialog.jsp | 4 +- .../src/main/webapp/css/component-state.css | 4 +- .../webapp/js/nf/canvas/nf-component-state.js | 57 ++++++++++++-------- 4 files changed, 51 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/f0d8f73f/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacadeLock.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacadeLock.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacadeLock.java index 70cf995..44a55d8 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacadeLock.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacadeLock.java @@ -44,6 +44,17 @@ public class NiFiServiceFacadeLock { } @Around("within(org.apache.nifi.web.NiFiServiceFacade+) && " + + "execution(* clear*(..))") + public Object clearLock(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { + writeLock.lock(); + try { + return proceedingJoinPoint.proceed(); + } finally { + writeLock.unlock(); + } + } + + @Around("within(org.apache.nifi.web.NiFiServiceFacade+) && " + "execution(* delete*(..))") public Object deleteLock(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { writeLock.lock(); http://git-wip-us.apache.org/repos/asf/nifi/blob/f0d8f73f/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-state-dialog.jsp ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-state-dialog.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-state-dialog.jsp index 725234f..abc1140 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-state-dialog.jsp +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/component-state-dialog.jsp @@ -20,13 +20,13 @@ <div class="setting"> <div class="setting-name">Name</div> <div class="setting-field"> - <span id="component-state-name"></span> + <div id="component-state-name"></div> </div> </div> <div class="setting"> <div class="setting-name">Description</div> <div class="setting-field"> - <span id="component-state-description"></span> + <div id="component-state-description" class="ellipsis multiline"></div> </div> </div> <div id="component-state-filter-controls"> http://git-wip-us.apache.org/repos/asf/nifi/blob/f0d8f73f/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/component-state.css ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/component-state.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/component-state.css index 35efca3..a00912c 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/component-state.css +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/component-state.css @@ -23,13 +23,13 @@ position: absolute; overflow: hidden; width: 600px; - height: 500px; font-size: 10px; z-index: 1301; display: none; } #component-state-description { + width: 580px; height: 50px; } @@ -79,10 +79,12 @@ #clear-link-container { margin-top: 16px; + margin-bottom: 18px; } #clear-link.disabled { color: #bbb; font-style: italic; text-decoration: none !important; + cursor: default !important; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/nifi/blob/f0d8f73f/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-state.js ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-state.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-state.js index c8a2d41..fb4ae51 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-state.js +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-state.js @@ -224,27 +224,40 @@ nf.ComponentState = (function () { // clear state link $('#clear-link').on('click', function () { if ($(this).hasClass('disabled') === false) { - // clear the state - var revision = nf.Client.getRevision(); - var component = $('#component-state-table').data('component'); - $.ajax({ - type: 'POST', - url: component.uri + '/state/clear-requests', - data: { - version: revision.version, - clientId: revision.clientId - }, - dataType: 'json' - }).done(function (response) { - // update the revision - nf.Client.setRevision(response.revision); - - // clear the table - clearTable(); - - // reload the table with no state - loadComponentState() - }).fail(nf.Common.handleAjaxError); + var componentStateTable = $('#component-state-table'); + + // ensure there is state to clear + var componentStateGrid = componentStateTable.data('gridInstance'); + var stateEntryCount = componentStateGrid.getDataLength(); + + if (stateEntryCount > 0) { + // clear the state + var revision = nf.Client.getRevision(); + var component = componentStateTable.data('component'); + $.ajax({ + type: 'POST', + url: component.uri + '/state/clear-requests', + data: { + version: revision.version, + clientId: revision.clientId + }, + dataType: 'json' + }).done(function (response) { + // update the revision + nf.Client.setRevision(response.revision); + + // clear the table + clearTable(); + + // reload the table with no state + loadComponentState() + }).fail(nf.Common.handleAjaxError); + } else { + nf.Dialog.showOkDialog({ + dialogContent: 'This component has no state to clear.', + overlayBackground: false + }); + } } }); @@ -336,7 +349,7 @@ nf.ComponentState = (function () { // populate the name/description $('#component-state-name').text(component.name); - $('#component-state-description').text(componentState.stateDescription); + $('#component-state-description').text(componentState.stateDescription).ellipsis(); // store the component componentStateTable.data('component', component);
