This is an automated email from the ASF dual-hosted git repository.

mcgilman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/master by this push:
     new cb4fdc2  NIFI-6126 - throttle requests to refresh the canvas to 
prevent too many server requests when holding down CTRL-R
cb4fdc2 is described below

commit cb4fdc2ae1823e44579917997973b65ffd8af0d6
Author: Rob Fellows <[email protected]>
AuthorDate: Wed Mar 27 10:41:13 2019 -0400

    NIFI-6126 - throttle requests to refresh the canvas to prevent too many 
server requests when holding down CTRL-R
    
    * Added lodash utility library to leverage its throttle capability (and 
many other useful functions in the future).
    * Made lodash available in all JSP's so it could be imported into nf-common 
(or any component for that matter).
    * Added a throttle function to nf-common that just wraps _.throttle
    
    This closes #3393
---
 nifi-assembly/LICENSE                              | 50 +++++++++++++++++++++-
 .../src/main/resources/META-INF/LICENSE            | 49 +++++++++++++++++++++
 .../nifi-framework/nifi-web/nifi-web-ui/pom.xml    |  4 ++
 .../src/main/frontend/package-lock.json            |  5 +++
 .../nifi-web-ui/src/main/frontend/package.json     |  1 +
 .../src/main/resources/META-INF/LICENSE            | 50 ++++++++++++++++++++++
 .../main/webapp/WEB-INF/pages/bulletin-board.jsp   |  1 +
 .../src/main/webapp/WEB-INF/pages/canvas.jsp       |  1 +
 .../src/main/webapp/WEB-INF/pages/cluster.jsp      |  1 +
 .../src/main/webapp/WEB-INF/pages/counters.jsp     |  1 +
 .../src/main/webapp/WEB-INF/pages/history.jsp      |  1 +
 .../src/main/webapp/WEB-INF/pages/login.jsp        |  1 +
 .../src/main/webapp/WEB-INF/pages/provenance.jsp   |  1 +
 .../src/main/webapp/WEB-INF/pages/summary.jsp      |  1 +
 .../src/main/webapp/WEB-INF/pages/templates.jsp    |  1 +
 .../src/main/webapp/WEB-INF/pages/users.jsp        |  1 +
 .../src/main/webapp/js/nf/canvas/nf-canvas.js      |  7 ++-
 .../nifi-web-ui/src/main/webapp/js/nf/nf-common.js | 26 ++++++++---
 18 files changed, 193 insertions(+), 9 deletions(-)

diff --git a/nifi-assembly/LICENSE b/nifi-assembly/LICENSE
index d485c65..92fe4e4 100644
--- a/nifi-assembly/LICENSE
+++ b/nifi-assembly/LICENSE
@@ -2218,4 +2218,52 @@ style license.
     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
THE
     SOFTWARE.
 
-      
\ No newline at end of file
+This product bundles 'lodash' which is available under an MIT license.
+
+    Copyright JS Foundation and other contributors <https://js.foundation/>
+
+    Based on Underscore.js, copyright Jeremy Ashkenas,
+    DocumentCloud and Investigative Reporters & Editors 
<http://underscorejs.org/>
+
+    This software consists of voluntary contributions made by many
+    individuals. For exact contribution history, see the revision history
+    available at https://github.com/lodash/lodash
+
+    The following license applies to all parts of this software except as
+    documented below:
+
+    ====
+
+    Permission is hereby granted, free of charge, to any person obtaining
+    a copy of this software and associated documentation files (the
+    "Software"), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, sublicense, and/or sell copies of the Software, and to
+    permit persons to whom the Software is furnished to do so, subject to
+    the following conditions:
+
+    The above copyright notice and this permission notice shall be
+    included in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+    ====
+
+    Copyright and related rights for sample code are waived via CC0. Sample
+    code is defined as all source code displayed within the prose of the
+    documentation.
+
+    CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+    ====
+
+    Files located in the node_modules and vendor directories are externally
+    maintained libraries used by this software which have their own
+    licenses; we recommend you read them, as their terms may differ from the
+    terms above.
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/LICENSE
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/LICENSE
index e72b324..679589f 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/LICENSE
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/LICENSE
@@ -804,3 +804,52 @@ For details see http://asm.ow2.org/asmdex-license.html
     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
     THE POSSIBILITY OF SUCH DAMAGE.
 
+This product bundles 'lodash' which is available under an MIT license.
+
+    Copyright JS Foundation and other contributors <https://js.foundation/>
+
+    Based on Underscore.js, copyright Jeremy Ashkenas,
+    DocumentCloud and Investigative Reporters & Editors 
<http://underscorejs.org/>
+
+    This software consists of voluntary contributions made by many
+    individuals. For exact contribution history, see the revision history
+    available at https://github.com/lodash/lodash
+
+    The following license applies to all parts of this software except as
+    documented below:
+
+    ====
+
+    Permission is hereby granted, free of charge, to any person obtaining
+    a copy of this software and associated documentation files (the
+    "Software"), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, sublicense, and/or sell copies of the Software, and to
+    permit persons to whom the Software is furnished to do so, subject to
+    the following conditions:
+
+    The above copyright notice and this permission notice shall be
+    included in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+    ====
+
+    Copyright and related rights for sample code are waived via CC0. Sample
+    code is defined as all source code displayed within the prose of the
+    documentation.
+
+    CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+    ====
+
+    Files located in the node_modules and vendor directories are externally
+    maintained libraries used by this software which have their own
+    licenses; we recommend you read them, as their terms may differ from the
+    terms above.
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
index d1545ad..af2b59f 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
@@ -235,6 +235,10 @@
                                         
<include>url-search-params/build/url-search-params.js</include>
                                         
<include>url-search-params/README.md</include>
                                         
<include>url-search-params/LICENSE.txt</include>
+
+                                        
<include>lodash-core/distrib/lodash-core.min.js</include>
+                                        
<include>lodash-core/distrib/README.md</include>
+
                                     </includes>
                                 </resource>
                             </resources>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package-lock.json
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package-lock.json
index 3f505a2..df3ecfe 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package-lock.json
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package-lock.json
@@ -427,6 +427,11 @@
         "nomnom": "1.8.1"
       }
     },
+    "lodash-core": {
+      "version": "4.17.11",
+      "resolved": 
"https://registry.npmjs.org/lodash-core/-/lodash-core-4.17.11.tgz";,
+      "integrity": 
"sha512-8ilprNE67U1REh0wQHL0z37qXdsxuFXjvxehg79Mh/MQgNJ+C1muXtysSKpt9sCxXZUSiwifEC82Vtzf2GSSKQ=="
+    },
     "nomnom": {
       "version": "1.8.1",
       "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz";,
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package.json
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package.json
index 0bbd0ed..17ed4eb 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package.json
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/frontend/package.json
@@ -34,6 +34,7 @@
     "jquery": "3.1.1",
     "reset.css": "2.0.2",
     "jquery-form": "3.50.0",
+    "lodash-core": "4.17.11",
     "url-search-params": "0.6.1",
     "jsonlint": "1.6.2",
     "qtip2": "3.0.3",
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/LICENSE
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/LICENSE
index 2aced50..9e1b605 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/LICENSE
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/META-INF/LICENSE
@@ -721,3 +721,53 @@ This product bundles 'jsonlint' which is available under 
an MIT license.
     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM,
     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     THE SOFTWARE.
+
+This product bundles 'lodash' which is available under an MIT license.
+
+    Copyright JS Foundation and other contributors <https://js.foundation/>
+
+    Based on Underscore.js, copyright Jeremy Ashkenas,
+    DocumentCloud and Investigative Reporters & Editors 
<http://underscorejs.org/>
+
+    This software consists of voluntary contributions made by many
+    individuals. For exact contribution history, see the revision history
+    available at https://github.com/lodash/lodash
+
+    The following license applies to all parts of this software except as
+    documented below:
+
+    ====
+
+    Permission is hereby granted, free of charge, to any person obtaining
+    a copy of this software and associated documentation files (the
+    "Software"), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, sublicense, and/or sell copies of the Software, and to
+    permit persons to whom the Software is furnished to do so, subject to
+    the following conditions:
+
+    The above copyright notice and this permission notice shall be
+    included in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+    ====
+
+    Copyright and related rights for sample code are waived via CC0. Sample
+    code is defined as all source code displayed within the prose of the
+    documentation.
+
+    CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+    ====
+
+    Files located in the node_modules and vendor directories are externally
+    maintained libraries used by this software which have their own
+    licenses; we recommend you read them, as their terms may differ from the
+    terms above.
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/bulletin-board.jsp
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/bulletin-board.jsp
index 62e3320..822e361 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/bulletin-board.jsp
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/bulletin-board.jsp
@@ -38,6 +38,7 @@
         <script type="text/javascript" 
src="js/jquery/jquery.ellipsis.js"></script>
         <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
         <script type="text/javascript" 
src="assets/jquery-ui-dist/jquery-ui.min.js"></script>
+        <script type="text/javascript" 
src="assets/lodash-core/distrib/lodash-core.min.js"></script>
         <script type="text/javascript" 
src="assets/qtip2/dist/jquery.qtip.min.js"></script>
         <script type="text/javascript" 
src="assets/angular/angular.min.js"></script>
         <script type="text/javascript" 
src="assets/angular-messages/angular-messages.min.js"></script>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
index 0d14cd2..38e8097 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/canvas.jsp
@@ -60,6 +60,7 @@
         <script type="text/javascript" 
src="js/jquery/combo/jquery.combo.js?${project.version}"></script>
         <script type="text/javascript" 
src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
         <script type="text/javascript" 
src="assets/jquery-minicolors/jquery.minicolors.min.js"></script>
+        <script type="text/javascript" 
src="assets/lodash-core/distrib/lodash-core.min.js"></script>
         <script type="text/javascript" 
src="assets/qtip2/dist/jquery.qtip.min.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/lib/jquery.event.drag-2.3.0.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/plugins/slick.cellrangeselector.js"></script>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/cluster.jsp
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/cluster.jsp
index 4814f41..61aa5ca 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/cluster.jsp
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/cluster.jsp
@@ -42,6 +42,7 @@
         <script type="text/javascript" 
src="js/jquery/jquery.ellipsis.js"></script>
         <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
         <script type="text/javascript" 
src="assets/jquery-ui-dist/jquery-ui.min.js"></script>
+        <script type="text/javascript" 
src="assets/lodash-core/distrib/lodash-core.min.js"></script>
         <script type="text/javascript" 
src="assets/qtip2/dist/jquery.qtip.min.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/lib/jquery.event.drag-2.3.0.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/plugins/slick.cellrangeselector.js"></script>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/counters.jsp
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/counters.jsp
index 769b809..8c276e3 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/counters.jsp
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/counters.jsp
@@ -40,6 +40,7 @@
         <script type="text/javascript" 
src="js/jquery/jquery.ellipsis.js"></script>
         <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
         <script type="text/javascript" 
src="assets/jquery-ui-dist/jquery-ui.min.js"></script>
+        <script type="text/javascript" 
src="assets/lodash-core/distrib/lodash-core.min.js"></script>
         <script type="text/javascript" 
src="assets/qtip2/dist/jquery.qtip.min.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/lib/jquery.event.drag-2.3.0.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/plugins/slick.cellrangeselector.js"></script>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/history.jsp
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/history.jsp
index f86c5f4..429eaf3 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/history.jsp
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/history.jsp
@@ -40,6 +40,7 @@
         <script type="text/javascript" 
src="js/jquery/jquery.ellipsis.js"></script>
         <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
         <script type="text/javascript" 
src="assets/jquery-ui-dist/jquery-ui.min.js"></script>
+        <script type="text/javascript" 
src="assets/lodash-core/distrib/lodash-core.min.js"></script>
         <script type="text/javascript" 
src="assets/qtip2/dist/jquery.qtip.min.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/lib/jquery.event.drag-2.3.0.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/plugins/slick.cellrangeselector.js"></script>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/login.jsp
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/login.jsp
index 26b6dba..6efffdc 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/login.jsp
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/login.jsp
@@ -39,6 +39,7 @@
         <script type="text/javascript" 
src="assets/qtip2/dist/jquery.qtip.min.js"></script>
         <script type="text/javascript" 
src="assets/jquery-ui-dist/jquery-ui.min.js"></script>
         <script type="text/javascript" 
src="js/nf/nf-namespace.js?${project.version}"></script>
+        <script type="text/javascript" 
src="assets/lodash-core/distrib/lodash-core.min.js"></script>
         ${nf.login.script.tags}
     </head>
     <body class="login-body">
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/provenance.jsp
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/provenance.jsp
index d4bcccc..18fa0c9 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/provenance.jsp
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/provenance.jsp
@@ -44,6 +44,7 @@
         <script type="text/javascript" 
src="js/jquery/jquery.ellipsis.js"></script>
         <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
         <script type="text/javascript" 
src="assets/jquery-ui-dist/jquery-ui.min.js"></script>
+        <script type="text/javascript" 
src="assets/lodash-core/distrib/lodash-core.min.js"></script>
         <script type="text/javascript" 
src="assets/qtip2/dist/jquery.qtip.min.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/lib/jquery.event.drag-2.3.0.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/plugins/slick.cellrangeselector.js"></script>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp
index 1366fd9..394f630 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/summary.jsp
@@ -49,6 +49,7 @@
         <script type="text/javascript" 
src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
         <script type="text/javascript" 
src="js/jquery/jquery.ellipsis.js"></script>
         <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
+        <script type="text/javascript" 
src="assets/lodash-core/distrib/lodash-core.min.js"></script>
         <script type="text/javascript" 
src="assets/qtip2/dist/jquery.qtip.min.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/lib/jquery.event.drag-2.3.0.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/plugins/slick.cellrangeselector.js"></script>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/templates.jsp
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/templates.jsp
index be0ad6d..f176d03 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/templates.jsp
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/templates.jsp
@@ -40,6 +40,7 @@
         <script type="text/javascript" 
src="js/jquery/jquery.ellipsis.js"></script>
         <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
         <script type="text/javascript" 
src="assets/jquery-ui-dist/jquery-ui.min.js"></script>
+        <script type="text/javascript" 
src="assets/lodash-core/distrib/lodash-core.min.js"></script>
         <script type="text/javascript" 
src="assets/qtip2/dist/jquery.qtip.min.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/lib/jquery.event.drag-2.3.0.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/plugins/slick.cellrangeselector.js"></script>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp
index c2265a2..667f2ef 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/pages/users.jsp
@@ -42,6 +42,7 @@
         <script type="text/javascript" 
src="js/jquery/modal/jquery.modal.js?${project.version}"></script>
         <script type="text/javascript" 
src="js/jquery/jquery.ellipsis.js"></script>
         <script type="text/javascript" src="js/jquery/jquery.each.js"></script>
+        <script type="text/javascript" 
src="assets/lodash-core/distrib/lodash-core.min.js"></script>
         <script type="text/javascript" 
src="assets/qtip2/dist/jquery.qtip.min.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/lib/jquery.event.drag-2.3.0.js"></script>
         <script type="text/javascript" 
src="assets/slickgrid/plugins/slick.cellrangeselector.js"></script>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
index 4020d9f..d2ba07d 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas.js
@@ -651,6 +651,9 @@
                 });
             });
 
+            // don't let the reload action get called more than once every 
second
+            var throttledCanvasReload = nfCommon.throttle(nfActions.reload, 
1000);
+
             // listen for browser resize events to reset the graph size
             $(window).on('resize', function (e) {
                 if (e.target === window) {
@@ -708,7 +711,7 @@
                         nfCommon.toggleScrollable(tabsContent.get(0));
                     });
                 }
-            }).on('keyup', function (evt) {
+            }).on('keydown', function (evt) {
                 // if a dialog is open, disable canvas shortcuts
                 if ($('.dialog').is(':visible') || 
$('#search-field').is(':focus')) {
                     return;
@@ -726,7 +729,7 @@
                             return;
                         }
                         // ctrl-r
-                        nfActions.reload();
+                        throttledCanvasReload();
 
                         // default prevented in nf-universal-capture.js
                     } else if (evt.keyCode === 65) {
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js
index 8dca0d8..eaaa63d 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js
@@ -22,20 +22,23 @@
     if (typeof define === 'function' && define.amd) {
         define(['jquery',
                 'd3',
-                'nf.Storage'],
-            function ($, d3, nfStorage) {
-                return (nf.Common = factory($, d3, nfStorage));
+                'nf.Storage',
+                'lodash-core'],
+            function ($, d3, nfStorage, _) {
+                return (nf.Common = factory($, d3, nfStorage, _));
             });
     } else if (typeof exports === 'object' && typeof module === 'object') {
         module.exports = (nf.Common = factory(require('jquery'),
             require('d3'),
-            require('nf.Storage')));
+            require('nf.Storage'),
+            require('lodash-core')));
     } else {
         nf.Common = factory(root.$,
             root.d3,
-            root.nf.Storage);
+            root.nf.Storage,
+            root._);
     }
-}(this, function ($, d3, nfStorage) {
+}(this, function ($, d3, nfStorage, _) {
     'use strict';
 
     $(document).ready(function () {
@@ -1700,6 +1703,17 @@
                 return option.value === value;
             });
             return nfCommon.isDefinedAndNotNull(matchedOption) ? 
matchedOption.text : undefined;
+        },
+
+        /**
+         * Creates a throttled function that invokes at most once every wait 
milliseconds.
+         *
+         * @param func                The function to throttle.
+         * @param wait                The number of milliseconds to throttle 
invocations to.
+         * @returns {function}        The throttled version of the function.
+         */
+        throttle: function (func, wait) {
+            return _.throttle(func, wait);
         }
 
     };

Reply via email to