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 03634b2ebe..d73bef5151 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
@@ -148,7 +148,7 @@
false
- d3/build/d3.min.js*
+ d3/dist/d3.min.js*
d3/LICENSE
d3-selection-multi/build/d3-selection-multi.min.js*
@@ -496,6 +496,7 @@
${staging.dir}/js/nf/canvas/nf-component-state.js
${staging.dir}/js/nf/nf-shell.js
${staging.dir}/js/nf/nf-client.js
+ ${staging.dir}/js/nf/canvas/helpers/d3-helpers.js
${staging.dir}/js/nf/canvas/nf-clipboard.js
${staging.dir}/js/nf/canvas/nf-custom-ui.js
${staging.dir}/js/nf/canvas/nf-canvas-utils.js
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 da06a46175..fff952e8de 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
@@ -7,488 +7,104 @@
"name": "apache-nifi",
"hasInstallScript": true,
"dependencies": {
- "angular": "1.8.2",
- "angular-animate": "1.8.2",
- "angular-aria": "1.8.2",
"angular-material": "1.1.26",
- "angular-messages": "1.8.2",
- "angular-mocks": "1.8.2",
- "angular-resource": "1.8.2",
- "angular-route": "1.8.2",
- "angular-sanitize": "1.8.2",
- "d3": "4.13.0",
- "d3-selection-multi": "1.0.1",
+ "lodash": "4.17.21",
+ "url-search-params": "0.6.1",
+ "qtip2": "3.0.3",
+ "angular-route": "1.8.3",
+ "d3": "7.6.1",
+ "JSON2": "0.1.0",
+ "angular-messages": "1.8.3",
+ "moment": "2.29.4",
+ "angular-mocks": "1.8.3",
+ "angular-sanitize": "1.8.3",
+ "angular-resource": "1.8.3",
+ "jsonlint": "1.6.3",
"font-awesome": "4.7.0",
- "jquery": "3.6.0",
- "jquery-form": "3.50.0",
"jquery-minicolors": "2.1.10",
"jquery-ui-dist": "1.13.2",
- "JSON2": "0.1.0",
- "jsonlint": "1.6.3",
- "lodash": "4.17.21",
- "moment": "2.29.2",
- "qtip2": "3.0.3",
"reset.css": "2.0.2",
- "slickgrid": "2.4.38",
- "url-search-params": "0.6.1"
+ "angular": "1.8.3",
+ "angular-aria": "1.8.3",
+ "jquery": "3.6.4",
+ "slickgrid": "2.4.45",
+ "jquery-form": "3.50.0",
+ "angular-animate": "1.8.3"
},
"devDependencies": {
- "npm-force-resolutions": "0.0.10"
+ "npm-force-resolutions": "^0.0.10"
},
"engines": {
"node": ">=16.13.2",
"npm": ">=8.1.2"
}
},
- "node_modules/angular": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular/-/angular-1.8.2.tgz",
- "integrity": "sha512-IauMOej2xEe7/7Ennahkbb5qd/HFADiNuLSESz9Q27inmi32zB0lnAsFeLEWcox3Gd1F6YhNd1CP7/9IukJ0Gw=="
- },
- "node_modules/angular-animate": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.8.2.tgz",
- "integrity": "sha512-Jbr9+grNMs9Kj57xuBU3Ju3NOPAjS1+g2UAwwDv7su1lt0/PLDy+9zEwDiu8C8xJceoTbmBNKiWGPJGBdCQLlA=="
- },
- "node_modules/angular-aria": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-aria/-/angular-aria-1.8.2.tgz",
- "integrity": "sha512-xWT1Lm+Xug2GM6nGNMioBP4hXt3sj2eGaExa4cVCZUYSVWezgyuD1RiLgzJzwTkBGYplHQUzQaz3yDY8jVI6yQ=="
- },
- "node_modules/angular-material": {
- "version": "1.1.26",
- "resolved": "https://registry.npmjs.org/angular-material/-/angular-material-1.1.26.tgz",
- "integrity": "sha512-DBLsoOP1D1E14EQsECZYabt3Jh1PpvsG8k1aZgaP/Ml57n4stpClzLhCsuTNbtB/pqq9CL8XtpCfB6fhVRWqIQ==",
- "peerDependencies": {
- "angular": "^1.7.2",
- "angular-animate": "^1.7.2",
- "angular-aria": "^1.7.2",
- "angular-messages": "^1.7.2"
- }
- },
- "node_modules/angular-messages": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-messages/-/angular-messages-1.8.2.tgz",
- "integrity": "sha512-M1qNh/30cLJi4yJJ+3YB8saPonRcavz5Dquqz0T/aUySKJhIkUoeCkmF+BcLH4SJ5PBp04yy4CZUUeNRVi7jZA=="
- },
- "node_modules/angular-mocks": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.8.2.tgz",
- "integrity": "sha512-I5L3P0l21HPdVsP4A4qWmENt4ePjjbkDFdAzOaM7QiibFySbt14DptPbt2IjeG4vFBr4vSLbhIz8Fk03DISl8Q=="
- },
- "node_modules/angular-resource": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-resource/-/angular-resource-1.8.2.tgz",
- "integrity": "sha512-CbTu8ypkVZMBLm+Wd+jI9xR7QEVCeUgN8WXsr9Yi9l0s/8ZQa5kEIuYX3F/75Ej8Xs1Jp9DoKjAyvACI6Q8IJA=="
- },
- "node_modules/angular-route": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-route/-/angular-route-1.8.2.tgz",
- "integrity": "sha512-49LJYxuaQ/ZDiu9dD2xo1LkazqObkGjw0a7dUF7UKCT8EELgBsMd6QrI6aEVGtI62ppkiFkxqmiV8fcwYdXpug=="
- },
- "node_modules/angular-sanitize": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.8.2.tgz",
- "integrity": "sha512-OB6Goa+QN3byf5asQ7XRl7DKZejm/F/ZOqa9z1skqYVOWA2hoBxoCmt9E7+i7T/TbxZP5zYzKxNZVVJNu860Hg=="
- },
- "node_modules/ansi-styles": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
- "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "node_modules/chalk": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
- "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
- "dependencies": {
- "ansi-styles": "~1.0.0",
- "has-color": "~0.1.0",
- "strip-ansi": "~0.1.0"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
- },
- "node_modules/d3": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/d3/-/d3-4.13.0.tgz",
- "integrity": "sha512-l8c4+0SldjVKLaE2WG++EQlqD7mh/dmQjvi2L2lKPadAVC+TbJC4ci7Uk9bRi+To0+ansgsS0iWfPjD7DBy+FQ==",
- "dependencies": {
- "d3-array": "1.2.1",
- "d3-axis": "1.0.8",
- "d3-brush": "1.0.4",
- "d3-chord": "1.0.4",
- "d3-collection": "1.0.4",
- "d3-color": "1.0.3",
- "d3-dispatch": "1.0.3",
- "d3-drag": "1.2.1",
- "d3-dsv": "1.0.8",
- "d3-ease": "1.0.3",
- "d3-force": "1.1.0",
- "d3-format": "1.2.2",
- "d3-geo": "1.9.1",
- "d3-hierarchy": "1.1.5",
- "d3-interpolate": "1.1.6",
- "d3-path": "1.0.5",
- "d3-polygon": "1.0.3",
- "d3-quadtree": "1.0.3",
- "d3-queue": "3.0.7",
- "d3-random": "1.1.0",
- "d3-request": "1.0.6",
- "d3-scale": "1.0.7",
- "d3-selection": "1.3.0",
- "d3-shape": "1.2.0",
- "d3-time": "1.0.8",
- "d3-time-format": "2.1.1",
- "d3-timer": "1.0.7",
- "d3-transition": "1.1.1",
- "d3-voronoi": "1.1.2",
- "d3-zoom": "1.7.1"
- }
- },
- "node_modules/d3-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz",
- "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw=="
- },
- "node_modules/d3-axis": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz",
- "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo="
- },
- "node_modules/d3-brush": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz",
- "integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=",
- "dependencies": {
- "d3-dispatch": "1",
- "d3-drag": "1",
- "d3-interpolate": "1",
- "d3-selection": "1",
- "d3-transition": "1"
- }
- },
- "node_modules/d3-chord": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz",
- "integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=",
- "dependencies": {
- "d3-array": "1",
- "d3-path": "1"
- }
- },
- "node_modules/d3-collection": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz",
- "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI="
- },
- "node_modules/d3-color": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz",
- "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs="
- },
- "node_modules/d3-dispatch": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz",
- "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg="
- },
- "node_modules/d3-drag": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz",
- "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==",
- "dependencies": {
- "d3-dispatch": "1",
- "d3-selection": "1"
- }
- },
- "node_modules/d3-dsv": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.8.tgz",
- "integrity": "sha512-IVCJpQ+YGe3qu6odkPQI0KPqfxkhbP/oM1XhhE/DFiYmcXKfCRub4KXyiuehV1d4drjWVXHUWx4gHqhdZb6n/A==",
- "dependencies": {
- "commander": "2",
- "iconv-lite": "0.4",
- "rw": "1"
- },
- "bin": {
- "csv2json": "bin/dsv2json",
- "csv2tsv": "bin/dsv2dsv",
- "dsv2dsv": "bin/dsv2dsv",
- "dsv2json": "bin/dsv2json",
- "json2csv": "bin/json2dsv",
- "json2dsv": "bin/json2dsv",
- "json2tsv": "bin/json2dsv",
- "tsv2csv": "bin/dsv2dsv",
- "tsv2json": "bin/dsv2json"
- }
- },
- "node_modules/d3-ease": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz",
- "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4="
- },
- "node_modules/d3-force": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz",
- "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==",
- "dependencies": {
- "d3-collection": "1",
- "d3-dispatch": "1",
- "d3-quadtree": "1",
- "d3-timer": "1"
- }
- },
- "node_modules/d3-format": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.2.tgz",
- "integrity": "sha512-zH9CfF/3C8zUI47nsiKfD0+AGDEuM8LwBIP7pBVpyR4l/sKkZqITmMtxRp04rwBrlshIZ17XeFAaovN3++wzkw=="
- },
- "node_modules/d3-geo": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.9.1.tgz",
- "integrity": "sha512-l9wL/cEQkyZQYXw3xbmLsH3eQ5ij+icNfo4r0GrLa5rOCZR/e/3am45IQ0FvQ5uMsv+77zBRunLc9ufTWSQYFA==",
- "dependencies": {
- "d3-array": "1"
- }
- },
- "node_modules/d3-hierarchy": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz",
- "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY="
- },
- "node_modules/d3-interpolate": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz",
- "integrity": "sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A==",
- "dependencies": {
- "d3-color": "1"
- }
- },
- "node_modules/d3-path": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz",
- "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q="
- },
- "node_modules/d3-polygon": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz",
- "integrity": "sha1-FoiOkCZGCTPysXllKtN4Ik04LGI="
- },
- "node_modules/d3-quadtree": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz",
- "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg="
- },
- "node_modules/d3-queue": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz",
- "integrity": "sha1-yTouVLQXwJWRKdfXP2z31Ckudhg="
- },
- "node_modules/d3-random": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz",
- "integrity": "sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM="
- },
- "node_modules/d3-request": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz",
- "integrity": "sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w==",
- "dependencies": {
- "d3-collection": "1",
- "d3-dispatch": "1",
- "d3-dsv": "1",
- "xmlhttprequest": "1"
- }
- },
"node_modules/d3-scale": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz",
- "integrity": "sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
"dependencies": {
- "d3-array": "^1.2.0",
- "d3-collection": "1",
- "d3-color": "1",
- "d3-format": "1",
- "d3-interpolate": "1",
- "d3-time": "1",
- "d3-time-format": "2"
- }
- },
- "node_modules/d3-selection": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.0.tgz",
- "integrity": "sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA=="
- },
- "node_modules/d3-selection-multi": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d3-selection-multi/-/d3-selection-multi-1.0.1.tgz",
- "integrity": "sha1-zWwlQT0EosuXRw54byzYd/PjT1g=",
- "dependencies": {
- "d3-selection": "1",
- "d3-transition": "1"
- }
- },
- "node_modules/d3-shape": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz",
- "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=",
- "dependencies": {
- "d3-path": "1"
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
+ },
+ "engines": {
+ "node": ">=12"
}
},
"node_modules/d3-time": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.8.tgz",
- "integrity": "sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ=="
- },
- "node_modules/d3-time-format": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.1.tgz",
- "integrity": "sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
"dependencies": {
- "d3-time": "1"
- }
- },
- "node_modules/d3-timer": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz",
- "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA=="
- },
- "node_modules/d3-transition": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.1.tgz",
- "integrity": "sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ==",
- "dependencies": {
- "d3-color": "1",
- "d3-dispatch": "1",
- "d3-ease": "1",
- "d3-interpolate": "1",
- "d3-selection": "^1.1.0",
- "d3-timer": "1"
- }
- },
- "node_modules/d3-voronoi": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz",
- "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw="
- },
- "node_modules/d3-zoom": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.7.1.tgz",
- "integrity": "sha512-sZHQ55DGq5BZBFGnRshUT8tm2sfhPHFnOlmPbbwTkAoPeVdRTkB4Xsf9GCY0TSHrTD8PeJPZGmP/TpGicwJDJQ==",
- "dependencies": {
- "d3-dispatch": "1",
- "d3-drag": "1",
- "d3-interpolate": "1",
- "d3-selection": "1",
- "d3-transition": "1"
- }
- },
- "node_modules/ev-emitter": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz",
- "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q=="
- },
- "node_modules/font-awesome": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
- "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=",
- "engines": {
- "node": ">=0.10.3"
- }
- },
- "node_modules/has-color": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
- "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "d3-array": "2 - 3"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/imagesloaded": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-4.1.4.tgz",
- "integrity": "sha512-ltiBVcYpc/TYTF5nolkMNsnREHW+ICvfQ3Yla2Sgr71YFwQ86bDwV9hgpFhFtrGPuwEx5+LqOHIrdXBdoWwwsA==",
+ "node_modules/d3-dsv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
+ "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
"dependencies": {
- "ev-emitter": "^1.0.0"
+ "commander": "7",
+ "iconv-lite": "0.6",
+ "rw": "1"
+ },
+ "bin": {
+ "csv2json": "bin/dsv2json.js",
+ "csv2tsv": "bin/dsv2dsv.js",
+ "dsv2dsv": "bin/dsv2dsv.js",
+ "dsv2json": "bin/dsv2json.js",
+ "json2csv": "bin/json2dsv.js",
+ "json2dsv": "bin/json2dsv.js",
+ "json2tsv": "bin/json2dsv.js",
+ "tsv2csv": "bin/dsv2dsv.js",
+ "tsv2json": "bin/dsv2json.js"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/jquery": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
- "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
- },
- "node_modules/jquery-form": {
- "version": "3.50.0",
- "resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-3.50.0.tgz",
- "integrity": "sha1-18lptR4JThLaaZHrYf9a8l9ZeY8=",
- "dependencies": {
- "jquery": ">=1.5"
+ "node_modules/JSV": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz",
+ "integrity": "sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw==",
+ "engines": {
+ "node": "*"
}
},
"node_modules/jquery-minicolors": {
"version": "2.1.10",
"resolved": "https://registry.npmjs.org/jquery-minicolors/-/jquery-minicolors-2.1.10.tgz",
- "integrity": "sha1-sp7qVB2aMrTiaSMWj7LBYnGGc3k=",
+ "integrity": "sha512-vXG4hz0h97VtmXXXrG6ceM0kjANjMziWfT1L0TZ1PaTEN2AYdJZWCndrGX/ep4AWMGgXsnEfGl/h95Gjm/4eKw==",
"dependencies": {
"jquery": ">= 1.7.x"
}
},
- "node_modules/jquery-ui": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.0.tgz",
- "integrity": "sha512-Osf7ECXNTYHtKBkn9xzbIf9kifNrBhfywFEKxOeB/OVctVmLlouV9mfc2qXCp6uyO4Pn72PXKOnj09qXetopCw==",
- "dependencies": {
- "jquery": ">=1.8.0 <4.0.0"
- }
- },
- "node_modules/jquery-ui-dist": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.2.tgz",
- "integrity": "sha512-oVDRd1NLtTbBwpRKAYdIRgpWVDzeBhfy7Gu0RmY6JEaZtmBq6kDn1pm5SgDiAotrnDS+RoTRXO6xvcNTxA9tOA==",
- "dependencies": {
- "jquery": ">=1.8.0 <4.0.0"
- }
- },
- "node_modules/json-format": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-format/-/json-format-1.0.1.tgz",
- "integrity": "sha1-FD9n5irxKda//tKIpGJl6iPQ3ww=",
- "dev": true
- },
- "node_modules/JSON2": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/JSON2/-/JSON2-0.1.0.tgz",
- "integrity": "sha1-jXSTBApj1YNa919H3suDq2yMB5A=",
- "engines": {
- "node": "*"
- }
- },
"node_modules/jsonlint": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.3.tgz",
@@ -504,37 +120,522 @@
"node": ">= 0.6"
}
},
- "node_modules/JSV": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz",
- "integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=",
+ "node_modules/d3-chord": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
+ "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
+ "dependencies": {
+ "d3-path": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/font-awesome": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
+ "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==",
+ "engines": {
+ "node": ">=0.10.3"
+ }
+ },
+ "node_modules/robust-predicates": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz",
+ "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g=="
+ },
+ "node_modules/ev-emitter": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-2.1.2.tgz",
+ "integrity": "sha512-jQ5Ql18hdCQ4qS+RCrbLfz1n+Pags27q5TwMKvZyhp5hh2UULUYZUy1keqj6k6SYsdqIYjnmz7xyyEY0V67B8Q=="
+ },
+ "node_modules/jquery": {
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz",
+ "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ=="
+ },
+ "node_modules/d3-zoom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
+ "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "2 - 3",
+ "d3-transition": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/delaunator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz",
+ "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==",
+ "dependencies": {
+ "robust-predicates": "^3.0.0"
+ }
+ },
+ "node_modules/d3": {
+ "version": "7.6.1",
+ "resolved": "https://registry.npmjs.org/d3/-/d3-7.6.1.tgz",
+ "integrity": "sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==",
+ "dependencies": {
+ "d3-axis": "3",
+ "d3-zoom": "3",
+ "d3-fetch": "3",
+ "d3-random": "3",
+ "d3-path": "3",
+ "d3-time": "3",
+ "d3-force": "3",
+ "d3-delaunay": "6",
+ "d3-chord": "3",
+ "d3-brush": "3",
+ "d3-hierarchy": "3",
+ "d3-dsv": "3",
+ "d3-selection": "3",
+ "d3-drag": "3",
+ "d3-transition": "3",
+ "d3-time-format": "4",
+ "d3-dispatch": "3",
+ "d3-scale-chromatic": "3",
+ "d3-ease": "3",
+ "d3-format": "3",
+ "d3-contour": "4",
+ "d3-quadtree": "3",
+ "d3-geo": "3",
+ "d3-color": "3",
+ "d3-timer": "3",
+ "d3-array": "3",
+ "d3-shape": "3",
+ "d3-polygon": "3",
+ "d3-scale": "4",
+ "d3-interpolate": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/slickgrid": {
+ "version": "2.4.45",
+ "resolved": "https://registry.npmjs.org/slickgrid/-/slickgrid-2.4.45.tgz",
+ "integrity": "sha512-WvygGTaLU9LnMWZSxqW1agwq8IcDGeCZ289vP1E07eh3ffyLm5TGQsYHXvTwWCHtriZBw+L9RFK/h7TsIMcoLQ==",
+ "dependencies": {
+ "jquery": ">=1.8.0",
+ "jquery-ui": ">=1.8.0"
+ }
+ },
+ "node_modules/d3-geo": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz",
+ "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==",
+ "dependencies": {
+ "d3-array": "2.5.0 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-time-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "dependencies": {
+ "d3-time": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
+ "integrity": "sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg==",
+ "bin": {
+ "strip-ansi": "cli.js"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
+ "integrity": "sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==",
+ "dependencies": {
+ "ansi-styles": "~1.0.0",
+ "has-color": "~0.1.0",
+ "strip-ansi": "~0.1.0"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/d3-force": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
+ "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-quadtree": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/jquery-ui": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz",
+ "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==",
+ "dependencies": {
+ "jquery": ">=1.8.0 <4.0.0"
+ }
+ },
+ "node_modules/JSON2": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/JSON2/-/JSON2-0.1.0.tgz",
+ "integrity": "sha512-MRguCg79vy8Kx15/CXzoO5pEPi0tQq7T70mL/t1Hv3G+hVfJVO2BZqX3sl2kbWW08GAmzQYSRfWRtQhmK/eaYA==",
"engines": {
"node": "*"
}
},
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/angular": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular/-/angular-1.8.3.tgz",
+ "integrity": "sha512-5qjkWIQQVsHj4Sb5TcEs4WZWpFeVFHXwxEBHUhrny41D8UrBAd6T/6nPPAsLngJCReIOqi95W3mxdveveutpZw==",
+ "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward."
+ },
+ "node_modules/reset.css": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/reset.css/-/reset.css-2.0.2.tgz",
+ "integrity": "sha512-HG5RQLYcAxou3yw+Gnzwan1jJCbOcIBZjwoD/YLWuAd8kkuDI/ZqC0uRhY4ReKOOJaM1Y1kvwebHOwK4P8Sevg=="
+ },
+ "node_modules/d3-selection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
+ "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "dependencies": {
+ "delaunator": "5"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/json-format": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-format/-/json-format-1.0.1.tgz",
+ "integrity": "sha512-MoKIg/lBeQALqjYnqEanikfo3zBKRwclpXJexdF0FUniYAAN2ypEIXBEtpQb+9BkLFtDK1fyTLAsnGlyGfLGxw==",
+ "dev": true
+ },
+ "node_modules/d3-transition": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
+ "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-dispatch": "1 - 3",
+ "d3-ease": "1 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "d3-selection": "2 - 3"
+ }
+ },
+ "node_modules/d3-drag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
+ "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-selection": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
- "node_modules/moment": {
- "version": "2.29.2",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz",
- "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==",
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/d3-hierarchy": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
+ "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
"engines": {
- "node": "*"
+ "node": ">=12"
}
},
+ "node_modules/angular-route": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-route/-/angular-route-1.8.3.tgz",
+ "integrity": "sha512-kpIcRmDR2+o1FxDVVYy8Rvfab86/7LDbOgTRb9T+X9ewPQiBRuDEnZtM3oJYBiQLvAXDYTJXHV48n/bGE9Mv2g==",
+ "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward."
+ },
"node_modules/nomnom": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.0.tgz",
- "integrity": "sha1-8XRItQxW8o0ZIdDoiZKgZrTxUVs=",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
+ "integrity": "sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ==",
"deprecated": "Package no longer supported. Contact support@npmjs.com for more info.",
"dependencies": {
"chalk": "~0.4.0",
"underscore": "~1.6.0"
}
},
+ "node_modules/xmlhttprequest": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+ "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/internmap": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/angular-material": {
+ "version": "1.1.26",
+ "resolved": "https://registry.npmjs.org/angular-material/-/angular-material-1.1.26.tgz",
+ "integrity": "sha512-DBLsoOP1D1E14EQsECZYabt3Jh1PpvsG8k1aZgaP/Ml57n4stpClzLhCsuTNbtB/pqq9CL8XtpCfB6fhVRWqIQ==",
+ "deprecated": "For the actively supported Angular Material, see https://www.npmjs.com/package/@angular/material. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward.",
+ "peerDependencies": {
+ "angular": "^1.7.2",
+ "angular-animate": "^1.7.2",
+ "angular-aria": "^1.7.2",
+ "angular-messages": "^1.7.2"
+ }
+ },
+ "node_modules/d3-contour": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
+ "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
+ "dependencies": {
+ "d3-array": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-array": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.3.tgz",
+ "integrity": "sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==",
+ "dependencies": {
+ "internmap": "1 - 2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/jquery-ui-dist": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.2.tgz",
+ "integrity": "sha512-oVDRd1NLtTbBwpRKAYdIRgpWVDzeBhfy7Gu0RmY6JEaZtmBq6kDn1pm5SgDiAotrnDS+RoTRXO6xvcNTxA9tOA==",
+ "dependencies": {
+ "jquery": ">=1.8.0 <4.0.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/rw": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
+ },
+ "node_modules/url-search-params": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/url-search-params/-/url-search-params-0.6.1.tgz",
+ "integrity": "sha512-haKLRCc3JyU8uVBKNRgWJUu+iTgvfaiDZ3RT8OO3Dx0Ypq1G6cY1HhhcAOUL1y1+rfYR+5UcOyxgNcSa7g+Xbg==",
+ "deprecated": "now available as @ungap/url-search-params"
+ },
+ "node_modules/angular-resource": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-resource/-/angular-resource-1.8.3.tgz",
+ "integrity": "sha512-x3+4w2SyIDEIe6PUBTzcjDFI5MhZNWAPELUxkYK0QMOkOo4w3BN/qhpd+fO1deFiDS23mZKqT8kfctO1IDkCDA==",
+ "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward."
+ },
+ "node_modules/moment": {
+ "version": "2.29.4",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
+ "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/has-color": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
+ "integrity": "sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
+ "integrity": "sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/d3-random": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
+ "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/angular-mocks": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.8.3.tgz",
+ "integrity": "sha512-vqsT6zwu80cZ8RY7qRQBZuy6Fq5X7/N5hkV9LzNT0c8b546rw4ErGK6muW1u2JnDKYa7+jJuaGM702bWir4HGw=="
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/d3-dispatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
+ "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-timer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
+ "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/qtip2": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/qtip2/-/qtip2-3.0.3.tgz",
+ "integrity": "sha512-vfSEVYg1teA4g3RhT9fnBXzEQrkgyU5CrQE8j6WzZs5LBupG+Nq97mFq4BmDKcA6mGSMFiIqm70+ydvWW1KnGg==",
+ "dependencies": {
+ "imagesloaded": ">=3.0.0",
+ "jquery": ">=1.6.0"
+ }
+ },
+ "node_modules/d3-polygon": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
+ "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/angular-animate": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.8.3.tgz",
+ "integrity": "sha512-/LtTKvy5sD6MZbV0v+nHgOIpnFF0mrUp+j5WIxVprVhcrJriYpuCZf4S7Owj1o76De/J0eRzANUozNJ6hVepnQ==",
+ "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward."
+ },
+ "node_modules/d3-quadtree": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
+ "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-ease": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
+ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-shape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+ "dependencies": {
+ "d3-path": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-brush": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
+ "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "3",
+ "d3-transition": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/npm-force-resolutions": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/npm-force-resolutions/-/npm-force-resolutions-0.0.10.tgz",
@@ -549,140 +650,174 @@
"npm-force-resolutions": "index.js"
}
},
- "node_modules/qtip2": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/qtip2/-/qtip2-3.0.3.tgz",
- "integrity": "sha1-ffCIrkQSwkpAZN5p6CTLPPdiENw=",
- "dependencies": {
- "imagesloaded": ">=3.0.0",
- "jquery": ">=1.6.0"
- }
- },
- "node_modules/reset.css": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/reset.css/-/reset.css-2.0.2.tgz",
- "integrity": "sha1-nAEwnIILcujyGevMjhQRlJYE99c="
- },
- "node_modules/rw": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
- "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q="
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/slickgrid": {
- "version": "2.4.38",
- "resolved": "https://registry.npmjs.org/slickgrid/-/slickgrid-2.4.38.tgz",
- "integrity": "sha512-BFbRXOkpbF44vCr6MxEpO/A7ruiPSINN7WoKaDkLza62CX14kq7Me6v77Q/bDsZsOeRsHudpRZufmt1GQixq5g==",
- "dependencies": {
- "jquery": ">=1.8.0",
- "jquery-ui": ">=1.8.0"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
+ "node_modules/d3-format": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
+ "node_modules/jquery-form": {
+ "version": "3.50.0",
+ "resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-3.50.0.tgz",
+ "integrity": "sha512-WcBPCGF5U/ECu5p/2IkezCBcTBqGPwlbCIKyueWAgXxReNhpaOpSpG/dMr9yra42+ylFELzsuoDWuMCuc3lftQ==",
"dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
+ "jquery": ">=1.5"
}
},
- "node_modules/strip-ansi": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
- "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
- "bin": {
- "strip-ansi": "cli.js"
+ "node_modules/d3-axis": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
+ "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "dependencies": {
+ "d3-color": "1 - 3"
},
"engines": {
- "node": ">=0.8.0"
+ "node": ">=12"
}
},
+ "node_modules/imagesloaded": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-5.0.0.tgz",
+ "integrity": "sha512-/0JGSubc1MTCoDKVmonLHgbifBWHdyLkun+R/151E1c5n79hiSxcd7cB7mPXFgojYu8xnRZv7GYxzKoxW8BetQ==",
+ "dependencies": {
+ "ev-emitter": "^2.1.2"
+ }
+ },
+ "node_modules/angular-messages": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-messages/-/angular-messages-1.8.3.tgz",
+ "integrity": "sha512-f/ywtg32lqzX8FnXkBJOyn13lbCbo333/xy/5TTFcsH/gZdXoiuERj+dLTOs8xHCkOeFQhFx0VD0DgtMgSag7A=="
+ },
"node_modules/underscore": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz",
"integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g=="
},
- "node_modules/url-search-params": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/url-search-params/-/url-search-params-0.6.1.tgz",
- "integrity": "sha1-Ott4WLgH1WuB56vzudrkl4wD+Z0=",
- "deprecated": "now available as @ungap/url-search-params"
- },
- "node_modules/xmlhttprequest": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
- "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=",
+ "node_modules/d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
"engines": {
- "node": ">=0.4.0"
+ "node": ">=12"
}
+ },
+ "node_modules/d3-fetch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
+ "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
+ "dependencies": {
+ "d3-dsv": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/angular-sanitize": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.8.3.tgz",
+ "integrity": "sha512-2rxdqzlUVafUeWOwvY/FtyWk1pFTyCtzreeiTytG9m4smpuAEKaIJAjYeVwWsoV+nlTOcgpwV4W1OCmR+BQbUg==",
+ "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward."
+ },
+ "node_modules/d3-scale-chromatic": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz",
+ "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-interpolate": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/angular-aria": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-aria/-/angular-aria-1.8.3.tgz",
+ "integrity": "sha512-qTXclmTW/KGw5JNKKQPcCKKq6hCBZ39jYINmLgMsjUHBAoxULaMRRTaRj/L2VTOjKvK5f9enkx+EUqRqzXDSFQ==",
+ "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward."
}
},
"dependencies": {
+ "JSON2": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/JSON2/-/JSON2-0.1.0.tgz",
+ "integrity": "sha512-MRguCg79vy8Kx15/CXzoO5pEPi0tQq7T70mL/t1Hv3G+hVfJVO2BZqX3sl2kbWW08GAmzQYSRfWRtQhmK/eaYA=="
+ },
+ "JSV": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz",
+ "integrity": "sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw=="
+ },
"angular": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular/-/angular-1.8.2.tgz",
- "integrity": "sha512-IauMOej2xEe7/7Ennahkbb5qd/HFADiNuLSESz9Q27inmi32zB0lnAsFeLEWcox3Gd1F6YhNd1CP7/9IukJ0Gw=="
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular/-/angular-1.8.3.tgz",
+ "integrity": "sha512-5qjkWIQQVsHj4Sb5TcEs4WZWpFeVFHXwxEBHUhrny41D8UrBAd6T/6nPPAsLngJCReIOqi95W3mxdveveutpZw=="
},
"angular-animate": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.8.2.tgz",
- "integrity": "sha512-Jbr9+grNMs9Kj57xuBU3Ju3NOPAjS1+g2UAwwDv7su1lt0/PLDy+9zEwDiu8C8xJceoTbmBNKiWGPJGBdCQLlA=="
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.8.3.tgz",
+ "integrity": "sha512-/LtTKvy5sD6MZbV0v+nHgOIpnFF0mrUp+j5WIxVprVhcrJriYpuCZf4S7Owj1o76De/J0eRzANUozNJ6hVepnQ=="
},
"angular-aria": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-aria/-/angular-aria-1.8.2.tgz",
- "integrity": "sha512-xWT1Lm+Xug2GM6nGNMioBP4hXt3sj2eGaExa4cVCZUYSVWezgyuD1RiLgzJzwTkBGYplHQUzQaz3yDY8jVI6yQ=="
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-aria/-/angular-aria-1.8.3.tgz",
+ "integrity": "sha512-qTXclmTW/KGw5JNKKQPcCKKq6hCBZ39jYINmLgMsjUHBAoxULaMRRTaRj/L2VTOjKvK5f9enkx+EUqRqzXDSFQ=="
},
"angular-material": {
"version": "1.1.26",
"resolved": "https://registry.npmjs.org/angular-material/-/angular-material-1.1.26.tgz",
- "integrity": "sha512-DBLsoOP1D1E14EQsECZYabt3Jh1PpvsG8k1aZgaP/Ml57n4stpClzLhCsuTNbtB/pqq9CL8XtpCfB6fhVRWqIQ==",
- "requires": {}
+ "integrity": "sha512-DBLsoOP1D1E14EQsECZYabt3Jh1PpvsG8k1aZgaP/Ml57n4stpClzLhCsuTNbtB/pqq9CL8XtpCfB6fhVRWqIQ=="
},
"angular-messages": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-messages/-/angular-messages-1.8.2.tgz",
- "integrity": "sha512-M1qNh/30cLJi4yJJ+3YB8saPonRcavz5Dquqz0T/aUySKJhIkUoeCkmF+BcLH4SJ5PBp04yy4CZUUeNRVi7jZA=="
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-messages/-/angular-messages-1.8.3.tgz",
+ "integrity": "sha512-f/ywtg32lqzX8FnXkBJOyn13lbCbo333/xy/5TTFcsH/gZdXoiuERj+dLTOs8xHCkOeFQhFx0VD0DgtMgSag7A=="
},
"angular-mocks": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.8.2.tgz",
- "integrity": "sha512-I5L3P0l21HPdVsP4A4qWmENt4ePjjbkDFdAzOaM7QiibFySbt14DptPbt2IjeG4vFBr4vSLbhIz8Fk03DISl8Q=="
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.8.3.tgz",
+ "integrity": "sha512-vqsT6zwu80cZ8RY7qRQBZuy6Fq5X7/N5hkV9LzNT0c8b546rw4ErGK6muW1u2JnDKYa7+jJuaGM702bWir4HGw=="
},
"angular-resource": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-resource/-/angular-resource-1.8.2.tgz",
- "integrity": "sha512-CbTu8ypkVZMBLm+Wd+jI9xR7QEVCeUgN8WXsr9Yi9l0s/8ZQa5kEIuYX3F/75Ej8Xs1Jp9DoKjAyvACI6Q8IJA=="
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-resource/-/angular-resource-1.8.3.tgz",
+ "integrity": "sha512-x3+4w2SyIDEIe6PUBTzcjDFI5MhZNWAPELUxkYK0QMOkOo4w3BN/qhpd+fO1deFiDS23mZKqT8kfctO1IDkCDA=="
},
"angular-route": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-route/-/angular-route-1.8.2.tgz",
- "integrity": "sha512-49LJYxuaQ/ZDiu9dD2xo1LkazqObkGjw0a7dUF7UKCT8EELgBsMd6QrI6aEVGtI62ppkiFkxqmiV8fcwYdXpug=="
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-route/-/angular-route-1.8.3.tgz",
+ "integrity": "sha512-kpIcRmDR2+o1FxDVVYy8Rvfab86/7LDbOgTRb9T+X9ewPQiBRuDEnZtM3oJYBiQLvAXDYTJXHV48n/bGE9Mv2g=="
},
"angular-sanitize": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.8.2.tgz",
- "integrity": "sha512-OB6Goa+QN3byf5asQ7XRl7DKZejm/F/ZOqa9z1skqYVOWA2hoBxoCmt9E7+i7T/TbxZP5zYzKxNZVVJNu860Hg=="
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.8.3.tgz",
+ "integrity": "sha512-2rxdqzlUVafUeWOwvY/FtyWk1pFTyCtzreeiTytG9m4smpuAEKaIJAjYeVwWsoV+nlTOcgpwV4W1OCmR+BQbUg=="
},
"ansi-styles": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
- "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg="
+ "integrity": "sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA=="
},
"buffer-from": {
"version": "1.1.2",
@@ -693,7 +828,7 @@
"chalk": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
- "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
+ "integrity": "sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==",
"requires": {
"ansi-styles": "~1.0.0",
"has-color": "~0.1.0",
@@ -701,314 +836,326 @@
}
},
"commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
},
"d3": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/d3/-/d3-4.13.0.tgz",
- "integrity": "sha512-l8c4+0SldjVKLaE2WG++EQlqD7mh/dmQjvi2L2lKPadAVC+TbJC4ci7Uk9bRi+To0+ansgsS0iWfPjD7DBy+FQ==",
+ "version": "7.6.1",
+ "resolved": "https://registry.npmjs.org/d3/-/d3-7.6.1.tgz",
+ "integrity": "sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==",
"requires": {
- "d3-array": "1.2.1",
- "d3-axis": "1.0.8",
- "d3-brush": "1.0.4",
- "d3-chord": "1.0.4",
- "d3-collection": "1.0.4",
- "d3-color": "1.0.3",
- "d3-dispatch": "1.0.3",
- "d3-drag": "1.2.1",
- "d3-dsv": "1.0.8",
- "d3-ease": "1.0.3",
- "d3-force": "1.1.0",
- "d3-format": "1.2.2",
- "d3-geo": "1.9.1",
- "d3-hierarchy": "1.1.5",
- "d3-interpolate": "1.1.6",
- "d3-path": "1.0.5",
- "d3-polygon": "1.0.3",
- "d3-quadtree": "1.0.3",
- "d3-queue": "3.0.7",
- "d3-random": "1.1.0",
- "d3-request": "1.0.6",
- "d3-scale": "1.0.7",
- "d3-selection": "1.3.0",
- "d3-shape": "1.2.0",
- "d3-time": "1.0.8",
- "d3-time-format": "2.1.1",
- "d3-timer": "1.0.7",
- "d3-transition": "1.1.1",
- "d3-voronoi": "1.1.2",
- "d3-zoom": "1.7.1"
+ "d3-array": "3",
+ "d3-axis": "3",
+ "d3-brush": "3",
+ "d3-chord": "3",
+ "d3-color": "3",
+ "d3-contour": "4",
+ "d3-delaunay": "6",
+ "d3-dispatch": "3",
+ "d3-drag": "3",
+ "d3-dsv": "3",
+ "d3-ease": "3",
+ "d3-fetch": "3",
+ "d3-force": "3",
+ "d3-format": "3",
+ "d3-geo": "3",
+ "d3-hierarchy": "3",
+ "d3-interpolate": "3",
+ "d3-path": "3",
+ "d3-polygon": "3",
+ "d3-quadtree": "3",
+ "d3-random": "3",
+ "d3-scale": "4",
+ "d3-scale-chromatic": "3",
+ "d3-selection": "3",
+ "d3-shape": "3",
+ "d3-time": "3",
+ "d3-time-format": "4",
+ "d3-timer": "3",
+ "d3-transition": "3",
+ "d3-zoom": "3"
}
},
"d3-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz",
- "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw=="
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.3.tgz",
+ "integrity": "sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==",
+ "requires": {
+ "internmap": "1 - 2"
+ }
},
"d3-axis": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz",
- "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo="
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
+ "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="
},
"d3-brush": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz",
- "integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
+ "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
"requires": {
- "d3-dispatch": "1",
- "d3-drag": "1",
- "d3-interpolate": "1",
- "d3-selection": "1",
- "d3-transition": "1"
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "3",
+ "d3-transition": "3"
}
},
"d3-chord": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz",
- "integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
+ "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
"requires": {
- "d3-array": "1",
- "d3-path": "1"
+ "d3-path": "1 - 3"
}
},
- "d3-collection": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz",
- "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI="
- },
"d3-color": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz",
- "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs="
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="
+ },
+ "d3-contour": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
+ "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
+ "requires": {
+ "d3-array": "^3.2.0"
+ }
+ },
+ "d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "requires": {
+ "delaunator": "5"
+ }
},
"d3-dispatch": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz",
- "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg="
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
+ "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="
},
"d3-drag": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz",
- "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
+ "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
"requires": {
- "d3-dispatch": "1",
- "d3-selection": "1"
+ "d3-dispatch": "1 - 3",
+ "d3-selection": "3"
}
},
"d3-dsv": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.8.tgz",
- "integrity": "sha512-IVCJpQ+YGe3qu6odkPQI0KPqfxkhbP/oM1XhhE/DFiYmcXKfCRub4KXyiuehV1d4drjWVXHUWx4gHqhdZb6n/A==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
+ "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
"requires": {
- "commander": "2",
- "iconv-lite": "0.4",
+ "commander": "7",
+ "iconv-lite": "0.6",
"rw": "1"
}
},
"d3-ease": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz",
- "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4="
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
+ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="
+ },
+ "d3-fetch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
+ "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
+ "requires": {
+ "d3-dsv": "1 - 3"
+ }
},
"d3-force": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz",
- "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
+ "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
"requires": {
- "d3-collection": "1",
- "d3-dispatch": "1",
- "d3-quadtree": "1",
- "d3-timer": "1"
+ "d3-dispatch": "1 - 3",
+ "d3-quadtree": "1 - 3",
+ "d3-timer": "1 - 3"
}
},
"d3-format": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.2.tgz",
- "integrity": "sha512-zH9CfF/3C8zUI47nsiKfD0+AGDEuM8LwBIP7pBVpyR4l/sKkZqITmMtxRp04rwBrlshIZ17XeFAaovN3++wzkw=="
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA=="
},
"d3-geo": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.9.1.tgz",
- "integrity": "sha512-l9wL/cEQkyZQYXw3xbmLsH3eQ5ij+icNfo4r0GrLa5rOCZR/e/3am45IQ0FvQ5uMsv+77zBRunLc9ufTWSQYFA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz",
+ "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==",
"requires": {
- "d3-array": "1"
+ "d3-array": "2.5.0 - 3"
}
},
"d3-hierarchy": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz",
- "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY="
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
+ "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="
},
"d3-interpolate": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz",
- "integrity": "sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
"requires": {
- "d3-color": "1"
+ "d3-color": "1 - 3"
}
},
"d3-path": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz",
- "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q="
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="
},
"d3-polygon": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz",
- "integrity": "sha1-FoiOkCZGCTPysXllKtN4Ik04LGI="
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
+ "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="
},
"d3-quadtree": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz",
- "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg="
- },
- "d3-queue": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz",
- "integrity": "sha1-yTouVLQXwJWRKdfXP2z31Ckudhg="
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
+ "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="
},
"d3-random": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz",
- "integrity": "sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM="
- },
- "d3-request": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz",
- "integrity": "sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w==",
- "requires": {
- "d3-collection": "1",
- "d3-dispatch": "1",
- "d3-dsv": "1",
- "xmlhttprequest": "1"
- }
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
+ "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="
},
"d3-scale": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz",
- "integrity": "sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
"requires": {
- "d3-array": "^1.2.0",
- "d3-collection": "1",
- "d3-color": "1",
- "d3-format": "1",
- "d3-interpolate": "1",
- "d3-time": "1",
- "d3-time-format": "2"
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
+ }
+ },
+ "d3-scale-chromatic": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz",
+ "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==",
+ "requires": {
+ "d3-color": "1 - 3",
+ "d3-interpolate": "1 - 3"
}
},
"d3-selection": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.0.tgz",
- "integrity": "sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA=="
- },
- "d3-selection-multi": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d3-selection-multi/-/d3-selection-multi-1.0.1.tgz",
- "integrity": "sha1-zWwlQT0EosuXRw54byzYd/PjT1g=",
- "requires": {
- "d3-selection": "1",
- "d3-transition": "1"
- }
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
+ "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="
},
"d3-shape": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz",
- "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
"requires": {
- "d3-path": "1"
+ "d3-path": "^3.1.0"
}
},
"d3-time": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.8.tgz",
- "integrity": "sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ=="
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+ "requires": {
+ "d3-array": "2 - 3"
+ }
},
"d3-time-format": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.1.tgz",
- "integrity": "sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
"requires": {
- "d3-time": "1"
+ "d3-time": "1 - 3"
}
},
"d3-timer": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz",
- "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA=="
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
+ "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="
},
"d3-transition": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.1.tgz",
- "integrity": "sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
+ "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
"requires": {
- "d3-color": "1",
- "d3-dispatch": "1",
- "d3-ease": "1",
- "d3-interpolate": "1",
- "d3-selection": "^1.1.0",
- "d3-timer": "1"
+ "d3-color": "1 - 3",
+ "d3-dispatch": "1 - 3",
+ "d3-ease": "1 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-timer": "1 - 3"
}
},
- "d3-voronoi": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz",
- "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw="
- },
"d3-zoom": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.7.1.tgz",
- "integrity": "sha512-sZHQ55DGq5BZBFGnRshUT8tm2sfhPHFnOlmPbbwTkAoPeVdRTkB4Xsf9GCY0TSHrTD8PeJPZGmP/TpGicwJDJQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
+ "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
"requires": {
- "d3-dispatch": "1",
- "d3-drag": "1",
- "d3-interpolate": "1",
- "d3-selection": "1",
- "d3-transition": "1"
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "2 - 3",
+ "d3-transition": "2 - 3"
+ }
+ },
+ "delaunator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz",
+ "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==",
+ "requires": {
+ "robust-predicates": "^3.0.0"
}
},
"ev-emitter": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz",
- "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q=="
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-2.1.2.tgz",
+ "integrity": "sha512-jQ5Ql18hdCQ4qS+RCrbLfz1n+Pags27q5TwMKvZyhp5hh2UULUYZUy1keqj6k6SYsdqIYjnmz7xyyEY0V67B8Q=="
},
"font-awesome": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
- "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM="
+ "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg=="
},
"has-color": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
- "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8="
+ "integrity": "sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw=="
},
"iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"requires": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
}
},
"imagesloaded": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-4.1.4.tgz",
- "integrity": "sha512-ltiBVcYpc/TYTF5nolkMNsnREHW+ICvfQ3Yla2Sgr71YFwQ86bDwV9hgpFhFtrGPuwEx5+LqOHIrdXBdoWwwsA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-5.0.0.tgz",
+ "integrity": "sha512-/0JGSubc1MTCoDKVmonLHgbifBWHdyLkun+R/151E1c5n79hiSxcd7cB7mPXFgojYu8xnRZv7GYxzKoxW8BetQ==",
"requires": {
- "ev-emitter": "^1.0.0"
+ "ev-emitter": "^2.1.2"
}
},
+ "internmap": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="
+ },
"jquery": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
- "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz",
+ "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ=="
},
"jquery-form": {
"version": "3.50.0",
"resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-3.50.0.tgz",
- "integrity": "sha1-18lptR4JThLaaZHrYf9a8l9ZeY8=",
+ "integrity": "sha512-WcBPCGF5U/ECu5p/2IkezCBcTBqGPwlbCIKyueWAgXxReNhpaOpSpG/dMr9yra42+ylFELzsuoDWuMCuc3lftQ==",
"requires": {
"jquery": ">=1.5"
}
@@ -1016,15 +1163,15 @@
"jquery-minicolors": {
"version": "2.1.10",
"resolved": "https://registry.npmjs.org/jquery-minicolors/-/jquery-minicolors-2.1.10.tgz",
- "integrity": "sha1-sp7qVB2aMrTiaSMWj7LBYnGGc3k=",
+ "integrity": "sha512-vXG4hz0h97VtmXXXrG6ceM0kjANjMziWfT1L0TZ1PaTEN2AYdJZWCndrGX/ep4AWMGgXsnEfGl/h95Gjm/4eKw==",
"requires": {
"jquery": ">= 1.7.x"
}
},
"jquery-ui": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.0.tgz",
- "integrity": "sha512-Osf7ECXNTYHtKBkn9xzbIf9kifNrBhfywFEKxOeB/OVctVmLlouV9mfc2qXCp6uyO4Pn72PXKOnj09qXetopCw==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz",
+ "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==",
"requires": {
"jquery": ">=1.8.0 <4.0.0"
}
@@ -1040,14 +1187,9 @@
"json-format": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-format/-/json-format-1.0.1.tgz",
- "integrity": "sha1-FD9n5irxKda//tKIpGJl6iPQ3ww=",
+ "integrity": "sha512-MoKIg/lBeQALqjYnqEanikfo3zBKRwclpXJexdF0FUniYAAN2ypEIXBEtpQb+9BkLFtDK1fyTLAsnGlyGfLGxw==",
"dev": true
},
- "JSON2": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/JSON2/-/JSON2-0.1.0.tgz",
- "integrity": "sha1-jXSTBApj1YNa919H3suDq2yMB5A="
- },
"jsonlint": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.3.tgz",
@@ -1057,28 +1199,30 @@
"nomnom": "^1.5.x"
}
},
- "JSV": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz",
- "integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c="
- },
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"moment": {
- "version": "2.29.2",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz",
- "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg=="
+ "version": "2.29.4",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
+ "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
},
"nomnom": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.0.tgz",
- "integrity": "sha1-8XRItQxW8o0ZIdDoiZKgZrTxUVs=",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
+ "integrity": "sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ==",
"requires": {
"chalk": "~0.4.0",
- "underscore": "~1.6.0"
+ "underscore": "1.13.2"
+ },
+ "dependencies": {
+ "underscore": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz",
+ "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g=="
+ }
}
},
"npm-force-resolutions": {
@@ -1095,7 +1239,7 @@
"qtip2": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/qtip2/-/qtip2-3.0.3.tgz",
- "integrity": "sha1-ffCIrkQSwkpAZN5p6CTLPPdiENw=",
+ "integrity": "sha512-vfSEVYg1teA4g3RhT9fnBXzEQrkgyU5CrQE8j6WzZs5LBupG+Nq97mFq4BmDKcA6mGSMFiIqm70+ydvWW1KnGg==",
"requires": {
"imagesloaded": ">=3.0.0",
"jquery": ">=1.6.0"
@@ -1104,12 +1248,17 @@
"reset.css": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/reset.css/-/reset.css-2.0.2.tgz",
- "integrity": "sha1-nAEwnIILcujyGevMjhQRlJYE99c="
+ "integrity": "sha512-HG5RQLYcAxou3yw+Gnzwan1jJCbOcIBZjwoD/YLWuAd8kkuDI/ZqC0uRhY4ReKOOJaM1Y1kvwebHOwK4P8Sevg=="
+ },
+ "robust-predicates": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz",
+ "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g=="
},
"rw": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
- "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q="
+ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
},
"safer-buffer": {
"version": "2.1.2",
@@ -1117,9 +1266,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"slickgrid": {
- "version": "2.4.38",
- "resolved": "https://registry.npmjs.org/slickgrid/-/slickgrid-2.4.38.tgz",
- "integrity": "sha512-BFbRXOkpbF44vCr6MxEpO/A7ruiPSINN7WoKaDkLza62CX14kq7Me6v77Q/bDsZsOeRsHudpRZufmt1GQixq5g==",
+ "version": "2.4.45",
+ "resolved": "https://registry.npmjs.org/slickgrid/-/slickgrid-2.4.45.tgz",
+ "integrity": "sha512-WvygGTaLU9LnMWZSxqW1agwq8IcDGeCZ289vP1E07eh3ffyLm5TGQsYHXvTwWCHtriZBw+L9RFK/h7TsIMcoLQ==",
"requires": {
"jquery": ">=1.8.0",
"jquery-ui": ">=1.8.0"
@@ -1144,21 +1293,23 @@
"strip-ansi": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
- "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE="
+ "integrity": "sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg=="
},
"underscore": {
- "version": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz",
"integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g=="
},
"url-search-params": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/url-search-params/-/url-search-params-0.6.1.tgz",
- "integrity": "sha1-Ott4WLgH1WuB56vzudrkl4wD+Z0="
+ "integrity": "sha512-haKLRCc3JyU8uVBKNRgWJUu+iTgvfaiDZ3RT8OO3Dx0Ypq1G6cY1HhhcAOUL1y1+rfYR+5UcOyxgNcSa7g+Xbg=="
},
"xmlhttprequest": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
- "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
+ "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
+ "dev": true
}
}
-}
+}
\ No newline at end of file
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 1fb7de320e..6fbb5dd4f9 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
@@ -20,33 +20,32 @@
"preinstall": "npm --ignore-scripts install npm-force-resolutions && npm-force-resolutions"
},
"dependencies": {
- "angular": "1.8.2",
- "angular-animate": "1.8.2",
- "angular-aria": "1.8.2",
+ "angular": "1.8.3",
+ "angular-animate": "1.8.3",
+ "angular-aria": "1.8.3",
"angular-material": "1.1.26",
- "angular-messages": "1.8.2",
- "angular-mocks": "1.8.2",
- "angular-resource": "1.8.2",
- "angular-route": "1.8.2",
- "angular-sanitize": "1.8.2",
- "d3": "4.13.0",
- "d3-selection-multi": "1.0.1",
+ "angular-messages": "1.8.3",
+ "angular-mocks": "1.8.3",
+ "angular-resource": "1.8.3",
+ "angular-route": "1.8.3",
+ "angular-sanitize": "1.8.3",
+ "d3": "7.6.1",
"font-awesome": "4.7.0",
- "jquery": "3.6.0",
+ "jquery": "3.6.4",
"jquery-form": "3.50.0",
"jquery-minicolors": "2.1.10",
"jquery-ui-dist": "1.13.2",
"JSON2": "0.1.0",
"jsonlint": "1.6.3",
"lodash": "4.17.21",
- "moment": "2.29.2",
+ "moment": "2.29.4",
"qtip2": "3.0.3",
"reset.css": "2.0.2",
- "slickgrid": "2.4.38",
+ "slickgrid": "2.4.45",
"url-search-params": "0.6.1"
},
"devDependencies": {
- "npm-force-resolutions": "0.0.10"
+ "npm-force-resolutions": "^0.0.10"
},
"resolutions": {
"underscore": "1.13.2"
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties
index 664389c0b7..4c39bcd776 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/resources/filters/canvas.properties
@@ -26,6 +26,7 @@ nf.canvas.script.tags=\n\
\n\
\n\
+\n\
\n\
\n\
\n\
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 fa6f20e016..3284677eae 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
@@ -47,8 +47,7 @@
-
-
+
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 fa8d368356..64e0c9697d 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
@@ -33,8 +33,7 @@
-
-
+
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 89e4629f15..7a90f28c26 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
@@ -40,7 +40,7 @@
-
+
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 e7a0dc8cb1..273896547b 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
@@ -32,7 +32,7 @@
-
+
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
index 17db5f12ea..4fc73ba7da 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
@@ -1033,7 +1033,7 @@
var descriptors = gridContainer.data('descriptors');
var propertyDescriptor = descriptors[item.property];
- var controllerServiceLookup = d3.map();
+ var controllerServiceLookup = new Map();
var options = [];
$.each(response.controllerServiceTypes, function (i, controllerServiceType) {
controllerServiceLookup.set(i, controllerServiceType);
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-processor-component.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-processor-component.js
index 1a39e95865..2be3679537 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-processor-component.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/header/components/nf-ng-processor-component.js
@@ -486,9 +486,9 @@
dataType: 'json'
}).done(function (response) {
var tags = [];
- var groups = d3.set();
- var restrictedUsage = d3.map();
- var requiredPermissions = d3.map();
+ var groups = new Set();
+ var restrictedUsage = new Map();
+ var requiredPermissions = new Map();
// begin the update
processorTypesData.beginUpdate();
@@ -584,7 +584,7 @@
text: 'all groups',
value: ''
}];
- groups.each(function (group) {
+ groups.forEach(function (group) {
options.push({
text: group,
value: group
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/helpers/d3-helpers.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/helpers/d3-helpers.js
new file mode 100644
index 0000000000..b88603de38
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/helpers/d3-helpers.js
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* global define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define([],
+ function () {
+ return (nf.ng.D3Helpers = factory());
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ng.D3Helpers =
+ factory());
+ } else {
+ nf.ng.D3Helpers = factory();
+ }
+}(this, function () {
+ 'use strict';
+
+ return {
+ multiAttr: function(selection, attrs) {
+ Object.keys(attrs).forEach(function (key) {
+ selection.attr(key, attrs[key]);
+ });
+ return selection;
+ }
+ };
+}));
\ No newline at end of file
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js
index 7cfbd2a1fa..6745d3094b 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-actions.js
@@ -1286,7 +1286,7 @@
nfSnippet.create(snippet).done(function (response) {
// remove the snippet, effectively removing the components
nfSnippet.remove(response.snippet.id).done(function () {
- var components = d3.map();
+ var components = new Map();
// add the id to the type's array
var addComponent = function (type, id) {
@@ -1313,7 +1313,7 @@
});
// remove all the non connections in the snippet first
- components.each(function (ids, type) {
+ components.forEach(function (ids, type) {
if (type !== 'Connection') {
nfCanvasUtils.getComponentByType(type).remove(ids);
}
@@ -1919,7 +1919,7 @@
* @param {array} selection The selection
*/
alignVertical: function (selection) {
- var updates = d3.map();
+ var updates = new Map();
// ensure every component is writable
if (nfCanvasUtils.canModify(selection) === false) {
nfDialog.showOkDialog({
@@ -1987,7 +1987,7 @@
* @param {array} selection The selection
*/
alignHorizontal: function (selection) {
- var updates = d3.map();
+ var updates = new Map();
// ensure every component is writable
if (nfCanvasUtils.canModify(selection) === false) {
nfDialog.showOkDialog({
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-birdseye.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-birdseye.js
index 6cacb7f64b..e19dc2de09 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-birdseye.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-birdseye.js
@@ -24,9 +24,10 @@
'nf.Common',
'nf.CanvasUtils',
'nf.ContextMenu',
- 'nf.Label'],
- function ($, d3, nfCommon, nfCanvasUtils, nfContextMenu, nfLabel) {
- return (nf.Birdseye = factory($, d3, nfCommon, nfCanvasUtils, nfContextMenu, nfLabel));
+ 'nf.Label',
+ 'nf.ng.D3Helpers'],
+ function ($, d3, nfCommon, nfCanvasUtils, nfContextMenu, nfLabel, d3Helpers) {
+ return (nf.Birdseye = factory($, d3, nfCommon, nfCanvasUtils, nfContextMenu, nfLabel, d3Helpers));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.Birdseye =
@@ -35,16 +36,18 @@
require('nf.Common'),
require('nf.CanvasUtils'),
require('nf.ContextMenu'),
- require('nf.Label')));
+ require('nf.Label'),
+ require('nf.ng.D3Helpers')));
} else {
nf.Birdseye = factory(root.$,
root.d3,
root.nf.Common,
root.nf.CanvasUtils,
root.nf.ContextMenu,
- root.nf.Label);
+ root.nf.Label,
+ root.nf.ng.D3Helpers);
}
-}(this, function ($, d3, nfCommon, nfCanvasUtils, nfContextMenu, nfLabel) {
+}(this, function ($, d3, nfCommon, nfCanvasUtils, nfContextMenu, nfLabel, d3Helpers) {
'use strict';
var nfGraph;
@@ -147,8 +150,9 @@
componentGroup.attr('transform', 'translate(' + birdseyeTranslate + ')');
// update the brush
- d3.select('rect.birdseye-brush')
- .attrs({
+ d3Helpers.multiAttr(
+ d3.select('rect.birdseye-brush'),
+ {
'width': screenWidth,
'height': screenHeight,
'stroke-width': (2 / birdseyeScale),
@@ -280,9 +284,9 @@
source: 'birdseye'
};
})
- .on('drag', function (d) {
- d.x += d3.event.dx;
- d.y += d3.event.dy;
+ .on('drag', function (event, d) {
+ d.x += event.dx;
+ d.y += event.dy;
// update the location of the brush
d3.select(this).attr('transform', function () {
@@ -290,7 +294,7 @@
});
// transform the canvas
- nfCanvasUtils.translateCanvas([-d3.event.dx, -d3.event.dy]);
+ nfCanvasUtils.translateCanvas([-event.dx, -event.dy]);
})
.on('end', function () {
// update component visibility
@@ -304,8 +308,9 @@
});
// context area
- birdseyeGroup.append('g')
- .attrs({
+ d3Helpers.multiAttr(
+ birdseyeGroup.append('g'),
+ {
'pointer-events': 'all',
'class': 'birdseye-brush-container'
})
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-utils.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-utils.js
index fff859bbd3..c70bfb327b 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-utils.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-canvas-utils.js
@@ -57,8 +57,8 @@
var nfGraph;
var trimLengthCaches = {};
- var restrictedUsage = d3.map();
- var requiredPermissions = d3.map();
+ var restrictedUsage = new Map();
+ var requiredPermissions = new Map();
var config = {
storage: {
@@ -103,7 +103,7 @@
nfSnippet.create(snippet).done(function (response) {
// move the snippet into the target
nfSnippet.move(response.snippet.id, groupId).done(function () {
- var componentMap = d3.map();
+ var componentMap = new Map();
// add the id to the type's array
var addComponent = function (type, id) {
@@ -119,7 +119,7 @@
});
// refresh all component types as necessary (handle components that have been removed)
- componentMap.each(function (ids, type) {
+ componentMap.forEach(function (ids, type) {
nfCanvasUtils.getComponentByType(type).remove(ids);
});
@@ -808,11 +808,9 @@
var line = [];
var tspan = selection.append('tspan')
- .attrs({
- 'x': x,
- 'y': y,
- 'width': width
- });
+ .attr('x', x)
+ .attr('y', y)
+ .attr('width', width);
// go through each word
var word = words.pop();
@@ -833,11 +831,9 @@
// create the tspan for the next line
tspan = selection.append('tspan')
- .attrs({
- 'x': x,
- 'dy': '1.2em',
- 'width': width
- });
+ .attr('x', x)
+ .attr('dy', '1.2em')
+ .attr('width', width);
// if we've reached the last line, use single line ellipsis
if (++i >= lineCount) {
@@ -952,9 +948,9 @@
* @param {selection} selection The image
*/
disableImageHref: function (selection) {
- selection.on('click.disableImageHref', function () {
- if (d3.event.ctrlKey || d3.event.shiftKey) {
- d3.event.preventDefault();
+ selection.on('click.disableImageHref', function (event) {
+ if (event.ctrlKey || event.shiftKey) {
+ event.preventDefault();
}
});
},
@@ -1029,11 +1025,11 @@
* @param {selection} target The target of the tooltip
*/
canvasTooltip: function (tip, target) {
- target.on('mouseenter', function () {
- tip.style('top', (d3.event.pageY + 15) + 'px').style('left', (d3.event.pageX + 15) + 'px').style('display', 'block');
+ target.on('mouseenter', function (event) {
+ tip.style('top', (event.pageY + 15) + 'px').style('left', (event.pageX + 15) + 'px').style('display', 'block');
})
.on('mousemove', function () {
- tip.style('top', (d3.event.pageY + 15) + 'px').style('left', (d3.event.pageX + 15) + 'px');
+ tip.style('top', (event.pageY + 15) + 'px').style('left', (event.pageX + 15) + 'px');
})
.on('mouseleave', function () {
tip.style('display', 'none');
@@ -2089,7 +2085,7 @@
* @param additionalRequiredPermissions
*/
addComponentRestrictions: function (additionalRestrictedUsages, additionalRequiredPermissions) {
- additionalRestrictedUsages.each(function (componentRestrictions, requiredPermissionId) {
+ additionalRestrictedUsages.forEach(function (componentRestrictions, requiredPermissionId) {
if (!restrictedUsage.has(requiredPermissionId)) {
restrictedUsage.set(requiredPermissionId, []);
}
@@ -2098,7 +2094,7 @@
restrictedUsage.get(requiredPermissionId).push(componentRestriction);
});
});
- additionalRequiredPermissions.each(function (requiredPermissionLabel, requiredPermissionId) {
+ additionalRequiredPermissions.forEach(function (requiredPermissionLabel, requiredPermissionId) {
if (!requiredPermissions.has(requiredPermissionId)) {
requiredPermissions.set(requiredPermissionId, requiredPermissionLabel);
}
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 77104bc3ce..e31afa850a 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
@@ -35,9 +35,10 @@
'nf.ContextMenu',
'nf.Actions',
'nf.ProcessGroup',
- 'nf.ParameterContexts'],
- function ($, d3, nfCommon, nfDialog, nfGraph, nfShell, nfNgBridge, nfClusterSummary, nfErrorHandler, nfAuthorizationStorage, nfStorage, nfCanvasUtils, nfBirdseye, nfContextMenu, nfActions, nfProcessGroup, nfParameterContexts) {
- return (nf.Canvas = factory($, d3, nfCommon, nfDialog, nfGraph, nfShell, nfNgBridge, nfClusterSummary, nfErrorHandler, nfAuthorizationStorage, nfStorage, nfCanvasUtils, nfBirdseye, nfContextMenu, nfActions, nfProcessGroup, nfParameterContexts));
+ 'nf.ParameterContexts',
+ 'nf.ng.D3Helpers'],
+ function ($, d3, nfCommon, nfDialog, nfGraph, nfShell, nfNgBridge, nfClusterSummary, nfErrorHandler, nfAuthorizationStorage, nfStorage, nfCanvasUtils, nfBirdseye, nfContextMenu, nfActions, nfProcessGroup, nfParameterContexts, d3Helpers) {
+ return (nf.Canvas = factory($, d3, nfCommon, nfDialog, nfGraph, nfShell, nfNgBridge, nfClusterSummary, nfErrorHandler, nfAuthorizationStorage, nfStorage, nfCanvasUtils, nfBirdseye, nfContextMenu, nfActions, nfProcessGroup, nfParameterContexts, d3Helpers));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.Canvas =
@@ -57,7 +58,8 @@
require('nf.ContextMenu'),
require('nf.Actions'),
require('nf.ProcessGroup'),
- require('nf.ParameterContexts')));
+ require('nf.ParameterContexts'),
+ require('nf.ng.D3Helpers')));
} else {
nf.Canvas = factory(root.$,
root.d3,
@@ -75,9 +77,10 @@
root.nf.ContextMenu,
root.nf.Actions,
root.nf.ProcessGroup,
- root.nf.ParameterContexts);
+ root.nf.ParameterContexts,
+ root.nf.ng.D3Helpers);
}
-}(this, function ($, d3, nfCommon, nfDialog, nfGraph, nfShell, nfNgBridge, nfClusterSummary, nfErrorHandler, nfAuthorizationStorage, nfStorage, nfCanvasUtils, nfBirdseye, nfContextMenu, nfActions, nfProcessGroup, nfParameterContexts) {
+}(this, function ($, d3, nfCommon, nfDialog, nfGraph, nfShell, nfNgBridge, nfClusterSummary, nfErrorHandler, nfAuthorizationStorage, nfStorage, nfCanvasUtils, nfBirdseye, nfContextMenu, nfActions, nfProcessGroup, nfParameterContexts, d3Helpers) {
'use strict';
var SCALE = 1;
@@ -366,7 +369,7 @@
// create the canvas
svg = d3.select('#canvas-container').append('svg')
- .on('contextmenu', function () {
+ .on('contextmenu', function (event) {
// reset the canvas click flag
canvasClicked = false;
@@ -377,20 +380,21 @@
nfCanvasUtils.setURLParameters();
// show the context menu on the canvas
- nfContextMenu.show();
+ nfContextMenu.show(event);
// prevent default browser behavior
- d3.event.preventDefault();
+ event.preventDefault();
});
// create the definitions element
var defs = svg.append('defs');
// create arrow definitions for the various line types
- defs.selectAll('marker')
+ d3Helpers.multiAttr(
+ defs.selectAll('marker')
.data(['normal', 'ghost', 'unauthorized', 'full'])
- .enter().append('marker')
- .attrs({
+ .enter().append('marker'),
+ {
'id': function (d) {
return d;
},
@@ -416,46 +420,56 @@
.attr('d', 'M2,3 L0,6 L6,3 L0,0 z');
// filter for drop shadow
- var componentDropShadowFilter = defs.append('filter')
- .attrs({
- 'id': 'component-drop-shadow',
- 'height': '140%',
- 'y': '-20%'
- });
+ var componentDropShadowFilter = d3Helpers.multiAttr(
+ defs.append('filter'),
+ {
+ id: 'component-drop-shadow',
+ height: '140%',
+ y: '-20%'
+ }
+ );
// blur
- componentDropShadowFilter.append('feGaussianBlur')
- .attrs({
+ d3Helpers.multiAttr(
+ componentDropShadowFilter.append('feGaussianBlur'),
+ {
'in': 'SourceAlpha',
'stdDeviation': 3,
'result': 'blur'
- });
+ }
+ );
// offset
- componentDropShadowFilter.append('feOffset')
- .attrs({
+ d3Helpers.multiAttr(
+ componentDropShadowFilter.append('feOffset'),
+ {
'in': 'blur',
'dx': 0,
'dy': 1,
'result': 'offsetBlur'
- });
+ }
+ );
// color/opacity
- componentDropShadowFilter.append('feFlood')
- .attrs({
+ d3Helpers.multiAttr(
+ componentDropShadowFilter.append('feFlood'),
+ {
'flood-color': '#000000',
'flood-opacity': 0.4,
'result': 'offsetColor'
- });
+ }
+ );
// combine
- componentDropShadowFilter.append('feComposite')
- .attrs({
+ d3Helpers.multiAttr(
+ componentDropShadowFilter.append('feComposite'),
+ {
'in': 'offsetColor',
'in2': 'offsetBlur',
'operator': 'in',
'result': 'offsetColorBlur'
- });
+ }
+ );
// stack the effect under the source graph
var componentDropShadowFeMerge = componentDropShadowFilter.append('feMerge');
@@ -465,46 +479,56 @@
.attr('in', 'SourceGraphic');
// filter for drop shadow
- var connectionFullDropShadowFilter = defs.append('filter')
- .attrs({
- 'id': 'connection-full-drop-shadow',
- 'height': '140%',
- 'y': '-20%'
- });
+ var connectionFullDropShadowFilter = d3Helpers.multiAttr(
+ defs.append('filter'),
+ {
+ id: 'connection-full-drop-shadow',
+ height: '140%',
+ y: '-20%'
+ }
+ );
// blur
- connectionFullDropShadowFilter.append('feGaussianBlur')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionFullDropShadowFilter.append('feGaussianBlur'),
+ {
'in': 'SourceAlpha',
'stdDeviation': 3,
'result': 'blur'
- });
+ }
+ );
// offset
- connectionFullDropShadowFilter.append('feOffset')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionFullDropShadowFilter.append('feOffset'),
+ {
'in': 'blur',
'dx': 0,
'dy': 1,
'result': 'offsetBlur'
- });
+ }
+ );
// color/opacity
- connectionFullDropShadowFilter.append('feFlood')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionFullDropShadowFilter.append('feFlood'),
+ {
'flood-color': '#ba554a',
'flood-opacity': 1,
'result': 'offsetColor'
- });
+ }
+ );
// combine
- connectionFullDropShadowFilter.append('feComposite')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionFullDropShadowFilter.append('feComposite'),
+ {
'in': 'offsetColor',
'in2': 'offsetBlur',
'operator': 'in',
'result': 'offsetColorBlur'
- });
+ }
+ );
// stack the effect under the source graph
var connectionFullFeMerge = connectionFullDropShadowFilter.append('feMerge');
@@ -514,27 +538,29 @@
.attr('in', 'SourceGraphic');
// create the canvas element
- canvas = svg.append('g')
- .attrs({
+ canvas = d3Helpers.multiAttr(
+ svg.append('g'),
+ {
'transform': 'translate(' + TRANSLATE + ') scale(' + SCALE + ')',
'pointer-events': 'all',
'id': 'canvas'
- });
+ }
+ );
// handle canvas events
- svg.on('mousedown.selection', function () {
+ svg.on('mousedown.selection', function (event) {
canvasClicked = true;
- if (d3.event.button !== 0) {
+ if (event.button !== 0) {
// prevent further propagation (to parents and others handlers
// on the same element to prevent zoom behavior)
- d3.event.stopImmediatePropagation();
+ event.stopImmediatePropagation();
return;
}
// show selection box if shift is held down
- if (d3.event.shiftKey) {
- var position = d3.mouse(canvas.node());
+ if (event.shiftKey) {
+ var position = d3.pointer(event, canvas.node());
canvas.append('rect')
.attr('rx', 6)
.attr('ry', 6)
@@ -553,21 +579,21 @@
// prevent further propagation (to parents and others handlers
// on the same element to prevent zoom behavior)
- d3.event.stopImmediatePropagation();
+ event.stopImmediatePropagation();
// prevents the browser from changing to a text selection cursor
- d3.event.preventDefault();
+ event.preventDefault();
}
})
- .on('mousemove.selection', function () {
+ .on('mousemove.selection', function (event) {
// update selection box if shift is held down
- if (d3.event.shiftKey) {
+ if (event.shiftKey) {
// get the selection box
var selectionBox = d3.select('rect.component-selection');
if (!selectionBox.empty()) {
// get the original position
var originalPosition = selectionBox.datum();
- var position = d3.mouse(canvas.node());
+ var position = d3.pointer(event, canvas.node());
var d = {};
if (originalPosition[0] < position[0]) {
@@ -587,10 +613,14 @@
}
// update the selection box
- selectionBox.attrs(d);
+ selectionBox
+ .attr('width', d.width)
+ .attr('height', d.height)
+ .attr('x', d.x)
+ .attr('y', d.y);
// prevent further propagation (to parents)
- d3.event.stopPropagation();
+ event.stopPropagation();
}
}
})
@@ -673,10 +703,12 @@
'height': canvasHeight + 'px',
'bottom': bottom + 'px'
});
- svg.attrs({
- 'height': canvasContainer.height(),
- 'width': $(window).width()
- });
+ d3Helpers.multiAttr(
+ svg,
+ {
+ 'height': canvasContainer.height(),
+ 'width': $(window).width()
+ });
//breadcrumbs
nfNgBridge.injector.get('breadcrumbsCtrl').updateBreadcrumbsCss({'bottom': bottom + 'px'});
@@ -1166,16 +1198,16 @@
// hide the context menu
nfContextMenu.hide();
})
- .on('zoom', function () {
+ .on('zoom', function (event) {
// update the current translation and scale
- if (!isNaN(d3.event.transform.x)) {
- x = d3.event.transform.x;
+ if (!isNaN(event.transform.x)) {
+ x = event.transform.x;
}
- if (!isNaN(d3.event.transform.y)) {
- y = d3.event.transform.y;
+ if (!isNaN(event.transform.y)) {
+ y = event.transform.y;
}
- if (!isNaN(d3.event.transform.k)) {
- k = d3.event.transform.k;
+ if (!isNaN(event.transform.k)) {
+ k = event.transform.k;
}
// indicate that we are panning to prevent deselection in zoom.end below
@@ -1184,13 +1216,13 @@
// refresh the canvas
refreshed = nfCanvas.View.refresh({
persist: false,
- transition: shouldTransition(d3.event.sourceEvent),
+ transition: shouldTransition(event.sourceEvent),
refreshComponents: false,
refreshBirdseye: false
});
})
- .on('end', function () {
- if (!isBirdseyeEvent(d3.event.sourceEvent)) {
+ .on('end', function (event) {
+ if (!isBirdseyeEvent(event.sourceEvent)) {
// ensure the canvas was actually refreshed
if (nfCommon.isDefinedAndNotNull(refreshed)) {
nfGraph.updateVisibility();
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-version.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-version.js
index b8b50381d6..e515a323a5 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-version.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-component-version.js
@@ -96,9 +96,9 @@
*/
var resetDialog = function () {
// clear the versions
- var versions = versionMap.keys();
+ var versions = Array.from(versionMap.keys());
$.each(versions, function (_, version) {
- versionMap.remove(version);
+ versionMap['delete'](version);
});
// clear the service apis
@@ -149,7 +149,7 @@
return {
init: function (settings) {
- versionMap = d3.map();
+ versionMap = new Map();
nfSettings = settings;
// initialize the component version dialog
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connectable.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connectable.js
index 807c759a26..c43fc746ca 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connectable.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connectable.js
@@ -22,23 +22,26 @@
define(['d3',
'nf.Connection',
'nf.ConnectionConfiguration',
- 'nf.CanvasUtils'],
- function (d3, nfConnection, nfConnectionConfiguration, nfCanvasUtils) {
- return (nf.Connectable = factory(d3, nfConnection, nfConnectionConfiguration, nfCanvasUtils));
+ 'nf.CanvasUtils',
+ 'nf.ng.D3Helpers'],
+ function (d3, nfConnection, nfConnectionConfiguration, nfCanvasUtils, d3Helpers) {
+ return (nf.Connectable = factory(d3, nfConnection, nfConnectionConfiguration, nfCanvasUtils, d3Helpers));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.Connectable =
factory(require('d3'),
require('nf.Connection'),
require('nf.ConnectionConfiguration'),
- require('nf.CanvasUtils')));
+ require('nf.CanvasUtils'),
+ require('nf.ng.D3Helpers')));
} else {
nf.Connectable = factory(root.d3,
root.nf.Connection,
root.nf.ConnectionConfiguration,
- root.nf.CanvasUtils);
+ root.nf.CanvasUtils,
+ root.nf.ng.D3Helpers);
}
-}(this, function (d3, nfConnection, nfConnectionConfiguration, nfCanvasUtils) {
+}(this, function (d3, nfConnection, nfConnectionConfiguration, nfCanvasUtils, d3Helpers) {
'use strict';
var connect;
@@ -62,8 +65,8 @@
*
* @returns {boolean}
*/
- var allowConnection = function () {
- return !d3.event.shiftKey && d3.select('rect.drag-selection').empty() && d3.select('rect.component-selection').empty();
+ var allowConnection = function (event) {
+ return !event.shiftKey && d3.select('rect.drag-selection').empty() && d3.select('rect.component-selection').empty();
};
return {
@@ -72,16 +75,16 @@
// dragging behavior for the connector
connect = d3.drag()
- .subject(function (d) {
- origin = d3.mouse(canvas.node());
+ .subject(function (event, d) {
+ origin = d3.pointer(event, canvas.node());
return {
x: origin[0],
y: origin[1]
};
})
- .on('start', function (d) {
+ .on('start', function (event) {
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
// unselect the previous components
nfCanvasUtils.getSelection().classed('selected', false);
@@ -96,20 +99,22 @@
var sourceData = source.datum();
// start the drag line and insert it first to keep it on the bottom
- var position = d3.mouse(canvas.node());
- canvas.insert('path', ':first-child')
- .datum({
- 'sourceId': sourceData.id,
- 'sourceWidth': sourceData.dimensions.width,
- 'x': position[0],
- 'y': position[1]
- })
- .attrs({
+ const position = d3.pointer(event, canvas.node());
+ d3Helpers.multiAttr(
+ canvas.insert('path', ':first-child')
+ .datum({
+ sourceId: sourceData.id,
+ sourceWidth: sourceData.dimensions.width / 2,
+ x: sourceData.position.x + (sourceData.dimensions.width / 2),
+ y: sourceData.position.y + (sourceData.dimensions.height / 2)
+ }),
+ {
'class': 'connector',
'd': function (pathDatum) {
return 'M' + pathDatum.x + ' ' + pathDatum.y + 'L' + pathDatum.x + ' ' + pathDatum.y;
}
- });
+ }
+ );
// updates the location of the connection img
d3.select(this).attr('transform', function () {
@@ -119,10 +124,10 @@
// re-append the image to keep it on top
canvas.node().appendChild(this);
})
- .on('drag', function (d) {
+ .on('drag', function (event) {
// updates the location of the connection img
d3.select(this).attr('transform', function () {
- return 'translate(' + d3.event.x + ', ' + (d3.event.y + 50) + ')';
+ return 'translate(' + event.x + ', ' + (event.y + 50) + ')';
});
// mark node's connectable if supported
@@ -133,7 +138,7 @@
// click and contextmenu events to appear like an attempt to connection the
// component to itself. requiring the mouse to have actually moved before
// checking the eligiblity of the destination addresses the issue
- return (Math.abs(origin[0] - d3.event.x) > 10 || Math.abs(origin[1] - d3.event.y) > 10) &&
+ return (Math.abs(origin[0] - event.x) > 10 || Math.abs(origin[1] - event.y) > 10) &&
nfCanvasUtils.isValidConnectionDestination(d3.select(this));
});
@@ -170,13 +175,13 @@
return 'M' + pathDatum.x + ' ' + pathDatum.y + 'L' + end.x + ' ' + end.y;
}
} else {
- return 'M' + pathDatum.x + ' ' + pathDatum.y + 'L' + d3.event.x + ' ' + d3.event.y;
+ return 'M' + pathDatum.x + ' ' + pathDatum.y + 'L' + event.x + ' ' + event.y;
}
});
})
- .on('end', function (d) {
+ .on('end', function (event, d) {
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
// get the add connect img
var addConnect = d3.select(this);
@@ -197,7 +202,7 @@
var sourceData = source.datum();
// get the mouse position relative to the source
- var position = d3.mouse(source.node());
+ var position = d3.pointer(event, source.node());
// if the position is outside the component, remove the add connect img
if (position[0] < 0 || position[0] > sourceData.dimensions.width || position[1] < 0 || position[1] > sourceData.dimensions.height) {
@@ -243,8 +248,8 @@
activate: function (components) {
components
.classed('connectable', true)
- .on('mouseenter.connectable', function (d) {
- if (allowConnection()) {
+ .on('mouseenter.connectable', function (event, d) {
+ if (allowConnection(event)) {
var selection = d3.select(this);
// ensure the current component supports connection source
@@ -255,17 +260,16 @@
var x = (d.dimensions.width / 2) - 14;
var y = (d.dimensions.height / 2) + 14;
- selection.append('text')
+ selection
+ .append('text')
+ .attr('class', 'add-connect')
+ .attr('transform', 'translate(' + x + ', ' + y + ')')
+ .text('\ue834')
.datum({
origX: x,
origY: y
})
.call(connect)
- .attrs({
- 'class': 'add-connect',
- 'transform': 'translate(' + x + ', ' + y + ')'
- })
- .text('\ue834');
}
}
}
@@ -280,8 +284,8 @@
// Using mouseover/out to workaround chrome issue #122746
.on('mouseover.connectable', function () {
// mark that we are hovering when appropriate
- d3.select(this).classed('hover', function () {
- return allowConnection();
+ d3.select(this).classed('hover', function (event) {
+ return allowConnection(event);
});
})
.on('mouseout.connection', function () {
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection.js
index ad1b086801..424ec9a5ff 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection.js
@@ -27,9 +27,10 @@
'nf.ErrorHandler',
'nf.Client',
'nf.CanvasUtils',
- 'lodash'],
- function ($, d3, nfCommon, nfDialog, nfStorage, nfErrorHandler, nfClient, nfCanvasUtils, _) {
- return (nf.Connection = factory($, d3, nfCommon, nfDialog, nfStorage, nfErrorHandler, nfClient, nfCanvasUtils, _));
+ 'lodash',
+ 'nf.ng.D3Helpers'],
+ function ($, d3, nfCommon, nfDialog, nfStorage, nfErrorHandler, nfClient, nfCanvasUtils, _, d3Helpers) {
+ return (nf.Connection = factory($, d3, nfCommon, nfDialog, nfStorage, nfErrorHandler, nfClient, nfCanvasUtils, _, d3Helpers));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.Connection =
@@ -41,7 +42,8 @@
require('nf.ErrorHandler'),
require('nf.Client'),
require('nf.CanvasUtils'),
- require('lodash-code')));
+ require('lodash-code'),
+ require('nf.ng.D3Helpers')));
} else {
nf.Connection = factory(root.$,
root.d3,
@@ -51,9 +53,10 @@
root.nf.ErrorHandler,
root.nf.Client,
root.nf.CanvasUtils,
- root._);
+ root._,
+ root.nf.ng.D3Helpers);
}
-}(this, function ($, d3, nfCommon, nfDialog, nfStorage, nfErrorHandler, nfClient, nfCanvasUtils, _) {
+}(this, function ($, d3, nfCommon, nfDialog, nfStorage, nfErrorHandler, nfClient, nfCanvasUtils, _, d3Helpers) {
'use strict';
var nfSelectable;
@@ -294,7 +297,7 @@
* Selects the connection elements against the current connection map.
*/
var select = function () {
- return connectionContainer.selectAll('g.connection').data(connectionMap.values(), function (d) {
+ return connectionContainer.selectAll('g.connection').data(Array.from(connectionMap.values()), function (d) {
return d.id;
});
};
@@ -311,8 +314,9 @@
return entered;
}
- var connection = entered.append('g')
- .attrs({
+ var connection = d3Helpers.multiAttr(
+ entered.append('g'),
+ {
'id': function (d) {
return 'id-' + d.id;
},
@@ -321,28 +325,31 @@
.classed('selected', selected);
// create a connection between the two components
- connection.append('path')
- .attrs({
+ d3Helpers.multiAttr(
+ connection.append('path'),
+ {
'class': 'connection-path',
'pointer-events': 'none'
});
// path to show when selection
- connection.append('path')
- .attrs({
+ d3Helpers.multiAttr(
+ connection.append('path'),
+ {
'class': 'connection-selection-path',
'pointer-events': 'none'
});
// path to make selection easier
- connection.append('path')
- .attrs({
+ d3Helpers.multiAttr(
+ connection.append('path'),
+ {
'class': 'connection-path-selectable',
'pointer-events': 'stroke'
})
- .on('mousedown.selection', function () {
+ .on('mousedown.selection', function (event) {
// select the connection when clicking the selectable path
- nfSelectable.select(d3.select(this.parentNode));
+ nfSelectable.select(event, d3.select(this.parentNode));
// update URL deep linking params
nfCanvasUtils.setURLParameters();
@@ -423,7 +430,7 @@
// determines whether the connection is full based on the data size threshold
var isFullBytes = function (d) {
- return d.status.aggregateSnapshot.percentUseBytes === 100
+ return d.status.aggregateSnapshot.percentUseBytes === 100;
};
// determines whether the connection is in warning based on the data size threshold
@@ -498,9 +505,9 @@
// update connection behavior
updated.select('path.connection-path-selectable')
- .on('dblclick', function (d) {
+ .on('dblclick', function (event, d) {
if (d.permissions.canWrite && d.permissions.canRead) {
- var position = d3.mouse(this.parentNode);
+ var position = d3.pointer(event, this.parentNode);
// find where to put this bend point
var bendIndex = getNearestSegment({
@@ -533,7 +540,7 @@
// save the new state
save(d, connection);
- d3.event.stopPropagation();
+ event.stopPropagation();
} else {
return null;
}
@@ -617,22 +624,25 @@
d.end = end;
// update the connection paths
- nfCanvasUtils.transition(connection.select('path.connection-path'), transition)
- .attrs({
+ d3Helpers.multiAttr(
+ nfCanvasUtils.transition(connection.select('path.connection-path'), transition),
+ {
'd': function () {
var datum = [d.start].concat(d.bends, [d.end]);
return lineGenerator(datum);
}
});
- nfCanvasUtils.transition(connection.select('path.connection-selection-path'), transition)
- .attrs({
+ d3Helpers.multiAttr(
+ nfCanvasUtils.transition(connection.select('path.connection-selection-path'), transition),
+ {
'd': function () {
var datum = [d.start].concat(d.bends, [d.end]);
return lineGenerator(datum);
}
});
- nfCanvasUtils.transition(connection.select('path.connection-path-selectable'), transition)
- .attrs({
+ d3Helpers.multiAttr(
+ nfCanvasUtils.transition(connection.select('path.connection-path-selectable'), transition),
+ {
'd': function () {
var datum = [d.start].concat(d.bends, [d.end]);
return lineGenerator(datum);
@@ -658,16 +668,17 @@
startpoints = startpoints.data([d.start]);
// create a point for the start
- var startpointsEntered = startpoints.enter().append('rect')
- .attrs({
+ var startpointsEntered = d3Helpers.multiAttr(
+ startpoints.enter().append('rect'),
+ {
'class': 'startpoint linepoint',
'pointer-events': 'all',
'width': 8,
'height': 8
})
- .on('mousedown.selection', function () {
+ .on('mousedown.selection', function (event) {
// select the connection when clicking the label
- nfSelectable.select(d3.select(this.parentNode));
+ nfSelectable.select(event, d3.select(this.parentNode));
// update URL deep linking params
nfCanvasUtils.setURLParameters();
@@ -690,16 +701,17 @@
var endpoints = endpoints.data([d.end]);
// create a point for the end
- var endpointsEntered = endpoints.enter().append('rect')
- .attrs({
+ var endpointsEntered = d3Helpers.multiAttr(
+ endpoints.enter().append('rect'),
+ {
'class': 'endpoint linepoint',
'pointer-events': 'all',
'width': 8,
'height': 8
})
- .on('mousedown.selection', function () {
+ .on('mousedown.selection', function (event) {
// select the connection when clicking the label
- nfSelectable.select(d3.select(this.parentNode));
+ nfSelectable.select(event, d3.select(this.parentNode));
// update URL deep linking params
nfCanvasUtils.setURLParameters();
@@ -723,16 +735,17 @@
var midpoints = midpoints.data(d.bends);
// create a point for the end
- var midpointsEntered = midpoints.enter().append('rect')
- .attrs({
+ var midpointsEntered = d3Helpers.multiAttr(
+ midpoints.enter().append('rect'),
+ {
'class': 'midpoint linepoint',
'pointer-events': 'all',
'width': 8,
'height': 8
})
- .on('dblclick', function (p) {
+ .on('dblclick', function (event, p) {
// stop even propagation
- d3.event.stopPropagation();
+ event.stopPropagation();
var connection = d3.select(this.parentNode);
var connectionData = connection.datum();
@@ -780,9 +793,9 @@
// save the updated connection
save(connectionData, connection);
})
- .on('mousedown.selection', function () {
+ .on('mousedown.selection', function (event) {
// select the connection when clicking the label
- nfSelectable.select(d3.select(this.parentNode));
+ nfSelectable.select(event, d3.select(this.parentNode));
// update URL deep linking params
nfCanvasUtils.setURLParameters();
@@ -816,14 +829,15 @@
// visible so we need to render it
if (connectionLabelContainer.empty()) {
// connection label container
- connectionLabelContainer = connection.insert('g', 'rect.startpoint')
- .attrs({
+ connectionLabelContainer = d3Helpers.multiAttr(
+ connection.insert('g', 'rect.startpoint'),
+ {
'class': 'connection-label-container',
'pointer-events': 'all'
})
- .on('mousedown.selection', function () {
+ .on('mousedown.selection', function (event) {
// select the connection when clicking the label
- nfSelectable.select(d3.select(this.parentNode));
+ nfSelectable.select(event, d3.select(this.parentNode));
// update URL deep linking params
nfCanvasUtils.setURLParameters();
@@ -831,8 +845,9 @@
.call(nfContextMenu.activate).call(nfQuickSelect.activate);
// connection label
- connectionLabelContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionLabelContainer.append('rect'),
+ {
'class': 'body',
'width': dimensions.width,
'x': 0,
@@ -840,8 +855,9 @@
});
// processor border
- connectionLabelContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionLabelContainer.append('rect'),
+ {
'class': 'border',
'width': dimensions.width,
'fill': 'transparent',
@@ -868,45 +884,51 @@
if (isGroup(d.component.source)) {
// see if the connection from label is already rendered
if (connectionFrom.empty()) {
- connectionFrom = connectionLabelContainer.append('g')
- .attrs({
+ connectionFrom = d3Helpers.multiAttr(
+ connectionLabelContainer.append('g'),
+ {
'class': 'connection-from-container'
});
// background
- backgrounds.push(connectionFrom.append('rect')
- .attrs({
+ backgrounds.push(d3Helpers.multiAttr(
+ connectionFrom.append('rect'),
+ {
'class': 'connection-label-background',
'width': dimensions.width,
'height': rowHeight
}));
// border
- borders.push(connectionFrom.append('rect')
- .attrs({
+ borders.push(d3Helpers.multiAttr(
+ connectionFrom.append('rect'),
+ {
'class': 'connection-label-border',
'width': dimensions.width,
'height': 1
}));
- connectionFrom.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionFrom.append('text'),
+ {
'class': 'stats-label',
'x': 5,
'y': 14
})
.text('From');
- connectionFrom.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionFrom.append('text'),
+ {
'class': 'stats-value connection-from',
'x': 43,
'y': 14,
'width': 130
});
- connectionFrom.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionFrom.append('text'),
+ {
'class': 'connection-from-run-status',
'x': 208,
'y': 14
@@ -977,45 +999,51 @@
if (isGroup(d.component.destination)) {
// see if the connection to label is already rendered
if (connectionTo.empty()) {
- connectionTo = connectionLabelContainer.append('g')
- .attrs({
+ connectionTo = d3Helpers.multiAttr(
+ connectionLabelContainer.append('g'),
+ {
'class': 'connection-to-container'
});
// background
- backgrounds.push(connectionTo.append('rect')
- .attrs({
+ backgrounds.push(d3Helpers.multiAttr(
+ connectionTo.append('rect'),
+ {
'class': 'connection-label-background',
'width': dimensions.width,
'height': rowHeight
}));
// border
- borders.push(connectionTo.append('rect')
- .attrs({
+ borders.push(d3Helpers.multiAttr(
+ connectionTo.append('rect'),
+ {
'class': 'connection-label-border',
'width': dimensions.width,
'height': 1
}));
- connectionTo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionTo.append('text'),
+ {
'class': 'stats-label',
'x': 5,
'y': 14
})
.text('To');
- connectionTo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionTo.append('text'),
+ {
'class': 'stats-value connection-to',
'x': 25,
'y': 14,
'width': 145
});
- connectionTo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionTo.append('text'),
+ {
'class': 'connection-to-run-status',
'x': 208,
'y': 14
@@ -1089,37 +1117,42 @@
if (!nfCommon.isBlank(connectionNameValue)) {
// see if the connection name label is already rendered
if (connectionName.empty()) {
- connectionName = connectionLabelContainer.append('g')
- .attrs({
+ connectionName = d3Helpers.multiAttr(
+ connectionLabelContainer.append('g'),
+ {
'class': 'connection-name-container'
});
// background
- backgrounds.push(connectionName.append('rect')
- .attrs({
+ backgrounds.push(d3Helpers.multiAttr(
+ connectionName.append('rect'),
+ {
'class': 'connection-label-background',
'width': dimensions.width,
'height': rowHeight
}));
// border
- borders.push(connectionName.append('rect')
- .attrs({
+ borders.push(d3Helpers.multiAttr(
+ connectionName.append('rect'),
+ {
'class': 'connection-label-border',
'width': dimensions.width,
'height': 1
}));
- connectionName.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionName.append('text'),
+ {
'class': 'stats-label',
'x': 5,
'y': 14
})
.text('Name');
- connectionName.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionName.append('text'),
+ {
'class': 'stats-value connection-name',
'x': 45,
'y': 14,
@@ -1169,58 +1202,66 @@
// see if the queue label is already rendered
var queued = connectionLabelContainer.select('g.queued-container');
if (queued.empty()) {
- queued = connectionLabelContainer.append('g')
- .attrs({
+ queued = d3Helpers.multiAttr(
+ connectionLabelContainer.append('g'),
+ {
'class': 'queued-container'
});
// background
- backgrounds.push(queued.append('rect')
- .attrs({
+ backgrounds.push(d3Helpers.multiAttr(
+ queued.append('rect'),
+ {
'class': 'connection-label-background',
'width': dimensions.width,
'height': rowHeight + HEIGHT_FOR_BACKPRESSURE
}));
// border
- borders.push(queued.append('rect')
- .attrs({
+ borders.push(d3Helpers.multiAttr(
+ queued.append('rect'),
+ {
'class': 'connection-label-border',
'width': dimensions.width,
'height': 1
}));
- queued.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ queued.append('text'),
+ {
'class': 'stats-label',
'x': 5,
'y': 14
})
.text('Queued');
- var queuedText = queued.append('text')
- .attrs({
+ var queuedText = d3Helpers.multiAttr(
+ queued.append('text'),
+ {
'class': 'stats-value queued',
'x': 55,
'y': 14
});
// queued count
- queuedText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ queuedText.append('tspan'),
+ {
'class': 'count'
});
// queued size
- queuedText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ queuedText.append('tspan'),
+ {
'class': 'size'
});
// load balance icon
// x is set dynamically to slide to right, depending on whether expiration icon is shown.
- queued.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ queued.append('text'),
+ {
'class': 'load-balance-icon',
'y': 14
})
@@ -1230,8 +1271,9 @@
.append('title');
// expiration icon
- queued.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ queued.append('text'),
+ {
'class': 'expiration-icon',
'x': 208,
'y': 14
@@ -1244,15 +1286,17 @@
var yBackpressureOffset = rowHeight + HEIGHT_FOR_BACKPRESSURE - 4;
// backpressure object threshold
- var backpressureObjectContainer = queued.append('g')
- .attrs({
+ var backpressureObjectContainer = d3Helpers.multiAttr(
+ queued.append('g'),
+ {
'transform': 'translate(' + backpressureCountOffset + ', ' + yBackpressureOffset + ')',
'class': 'backpressure-object-container'
});
// start
- backpressureObjectContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ backpressureObjectContainer.append('rect'),
+ {
'class': 'backpressure-tick object',
'width': 1,
'height': 3,
@@ -1261,8 +1305,9 @@
});
// bar
- backpressureObjectContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ backpressureObjectContainer.append('rect'),
+ {
'class': 'backpressure-object',
'width': backpressureBarWidth,
'height': 3,
@@ -1271,8 +1316,9 @@
});
// end
- backpressureObjectContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ backpressureObjectContainer.append('rect'),
+ {
'class': 'backpressure-tick object',
'width': 1,
'height': 3,
@@ -1281,8 +1327,9 @@
});
// percent full
- backpressureObjectContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ backpressureObjectContainer.append('rect'),
+ {
'class': 'backpressure-percent object',
'width': 0,
'height': 3,
@@ -1291,8 +1338,9 @@
});
// prediction indicator
- backpressureObjectContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ backpressureObjectContainer.append('rect'),
+ {
'class': 'backpressure-tick object-prediction',
'width': 1,
'height': 3,
@@ -1302,15 +1350,17 @@
// backpressure data size threshold
- var backpressureDataSizeContainer = queued.append('g')
- .attrs({
+ var backpressureDataSizeContainer = d3Helpers.multiAttr(
+ queued.append('g'),
+ {
'transform': 'translate(' + backpressureDataSizeOffset + ', ' + yBackpressureOffset + ')',
'class': 'backpressure-data-size-container'
});
// start
- backpressureDataSizeContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ backpressureDataSizeContainer.append('rect'),
+ {
'class': 'backpressure-tick data-size',
'width': 1,
'height': 3,
@@ -1319,8 +1369,9 @@
});
// bar
- backpressureDataSizeContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ backpressureDataSizeContainer.append('rect'),
+ {
'class': 'backpressure-data-size',
'width': backpressureBarWidth,
'height': 3,
@@ -1330,8 +1381,9 @@
.append('title');
// end
- backpressureDataSizeContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ backpressureDataSizeContainer.append('rect'),
+ {
'class': 'backpressure-tick data-size',
'width': 1,
'height': 3,
@@ -1340,8 +1392,9 @@
});
// percent full
- backpressureDataSizeContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ backpressureDataSizeContainer.append('rect'),
+ {
'class': 'backpressure-percent data-size',
'width': 0,
'height': 3,
@@ -1350,8 +1403,9 @@
});
// prediction indicator
- backpressureDataSizeContainer.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ backpressureDataSizeContainer.append('rect'),
+ {
'class': 'backpressure-tick data-size-prediction',
'width': 1,
'height': 3,
@@ -1413,42 +1467,42 @@
return true;
}
}).classed('load-balance-icon-active fa-rotate-90', function (d) {
- return d.permissions.canRead && d.component.loadBalanceStatus === 'LOAD_BALANCE_ACTIVE';
+ return d.permissions.canRead && d.component.loadBalanceStatus === 'LOAD_BALANCE_ACTIVE';
- }).classed('load-balance-icon-184', function() {
- return d.permissions.canRead && isExpirationConfigured(d.component);
+ }).classed('load-balance-icon-184', function () {
+ return d.permissions.canRead && isExpirationConfigured(d.component);
- }).classed('load-balance-icon-200', function() {
- return d.permissions.canRead && !isExpirationConfigured(d.component);
+ }).classed('load-balance-icon-200', function () {
+ return d.permissions.canRead && !isExpirationConfigured(d.component);
- }).attr('x', function() {
- return d.permissions.canRead && isExpirationConfigured(d.component) ? 192 : 208;
+ }).attr('x', function () {
+ return d.permissions.canRead && isExpirationConfigured(d.component) ? 192 : 208;
- }).select('title').text(function () {
- if (d.permissions.canRead) {
- var loadBalanceStrategy = nfCommon.getComboOptionText(nfCommon.loadBalanceStrategyOptions, d.component.loadBalanceStrategy);
- if ('PARTITION_BY_ATTRIBUTE' === d.component.loadBalanceStrategy) {
- loadBalanceStrategy += ' (' + d.component.loadBalancePartitionAttribute + ')'
- }
-
- var loadBalanceCompression = 'no compression';
- switch (d.component.loadBalanceCompression) {
- case 'COMPRESS_ATTRIBUTES_ONLY':
- loadBalanceCompression = '\'Attribute\' compression';
- break;
- case 'COMPRESS_ATTRIBUTES_AND_CONTENT':
- loadBalanceCompression = '\'Attribute and content\' compression';
- break;
- }
- var loadBalanceStatus = 'LOAD_BALANCE_ACTIVE' === d.component.loadBalanceStatus ? ' Actively balancing...' : '';
- return 'Load Balance is configured'
- + ' with \'' + loadBalanceStrategy + '\' strategy'
- + ' and ' + loadBalanceCompression + '.'
- + loadBalanceStatus;
- } else {
- return '';
+ }).select('title').text(function () {
+ if (d.permissions.canRead) {
+ var loadBalanceStrategy = nfCommon.getComboOptionText(nfCommon.loadBalanceStrategyOptions, d.component.loadBalanceStrategy);
+ if ('PARTITION_BY_ATTRIBUTE' === d.component.loadBalanceStrategy) {
+ loadBalanceStrategy += ' (' + d.component.loadBalancePartitionAttribute + ')';
}
- });
+
+ var loadBalanceCompression = 'no compression';
+ switch (d.component.loadBalanceCompression) {
+ case 'COMPRESS_ATTRIBUTES_ONLY':
+ loadBalanceCompression = '\'Attribute\' compression';
+ break;
+ case 'COMPRESS_ATTRIBUTES_AND_CONTENT':
+ loadBalanceCompression = '\'Attribute and content\' compression';
+ break;
+ }
+ var loadBalanceStatus = 'LOAD_BALANCE_ACTIVE' === d.component.loadBalanceStatus ? ' Actively balancing...' : '';
+ return 'Load Balance is configured'
+ + ' with \'' + loadBalanceStrategy + '\' strategy'
+ + ' and ' + loadBalanceCompression + '.'
+ + loadBalanceStatus;
+ } else {
+ return '';
+ }
+ });
// determine whether or not to show the expiration icon
connectionLabelContainer.select('text.expiration-icon')
@@ -1546,9 +1600,9 @@
// only show predicted percent if it is non-negative
var predictionIntervalSeconds = _.get(predictions, 'predictionIntervalSeconds', 60 * 5);
if (_.isNumber(predictedPercentCount) && predictedPercentCount > -1) {
- tooltipLines.push('Predicted queue (next ' + (predictionIntervalSeconds / 60 ) + ' mins): ' + _.clamp(predictedPercentCount, 0, 100) + '%')
+ tooltipLines.push('Predicted queue (next ' + (predictionIntervalSeconds / 60) + ' mins): ' + _.clamp(predictedPercentCount, 0, 100) + '%');
} else {
- tooltipLines.push('Predicted queue (next ' + (predictionIntervalSeconds / 60 ) + ' mins): NA' )
+ tooltipLines.push('Predicted queue (next ' + (predictionIntervalSeconds / 60) + ' mins): NA');
}
// only show an estimate if it is valid (non-negative but less than the max number supported)
@@ -1559,7 +1613,7 @@
tooltipLines.push('Estimated time to back pressure: ' + (isAtBackPressure(d) ? 'now' : 'NA'));
}
} else {
- tooltipLines.push('Queue Prediction is not configured')
+ tooltipLines.push('Queue Prediction is not configured');
}
if (_.isEmpty(tooltipLines)) {
@@ -1567,7 +1621,7 @@
} else if (_.size(tooltipLines) === 1) {
return tooltipLines[0];
} else {
- tooltipContent = nfCommon.formatUnorderedList(tooltipLines)
+ tooltipContent = nfCommon.formatUnorderedList(tooltipLines);
}
} else {
tooltipContent = 'Back Pressure Object Threshold is not configured';
@@ -1597,9 +1651,9 @@
// only show predicted percent if it is non-negative
var predictionIntervalSeconds = _.get(predictions, 'predictionIntervalSeconds', 60 * 5);
if (_.isNumber(predictedPercentBytes) && predictedPercentBytes > -1) {
- tooltipLines.push('Predicted queue (next ' + (predictionIntervalSeconds / 60) + ' mins): ' + _.clamp(predictedPercentBytes, 0, 100) + '%')
+ tooltipLines.push('Predicted queue (next ' + (predictionIntervalSeconds / 60) + ' mins): ' + _.clamp(predictedPercentBytes, 0, 100) + '%');
} else {
- tooltipLines.push('Predicted queue (next ' + (predictionIntervalSeconds / 60 ) + ' mins): NA' )
+ tooltipLines.push('Predicted queue (next ' + (predictionIntervalSeconds / 60) + ' mins): NA');
}
// only show an estimate if it is valid (non-negative but less than the max number supported)
@@ -1610,7 +1664,7 @@
tooltipLines.push('Estimated time to back pressure: ' + (isAtBackPressure(d) ? 'now' : 'NA'));
}
} else {
- tooltipLines.push('Queue Prediction is not configured')
+ tooltipLines.push('Queue Prediction is not configured');
}
if (_.isEmpty(tooltipLines)) {
@@ -1618,7 +1672,7 @@
} else if (_.size(tooltipLines) === 1) {
return tooltipLines[0];
} else {
- tooltipContent = nfCommon.formatUnorderedList(tooltipLines)
+ tooltipContent = nfCommon.formatUnorderedList(tooltipLines);
}
} else {
tooltipContent = 'Back Pressure Data Size Threshold is not configured';
@@ -1640,9 +1694,10 @@
// penalized icon
var connectionLabelContainer = updated.select('g.connection-label-container');
if (connectionLabelContainer.select('text.penalized-icon').empty()) {
- connectionLabelContainer.select('g.queued-container')
- .append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ connectionLabelContainer.select('g.queued-container')
+ .append('text'),
+ {
'class': 'penalized-icon',
'y': 14
})
@@ -1655,7 +1710,7 @@
// determine whether or not to show the penalized icon
connectionLabelContainer.select('text.penalized-icon')
.classed('hidden', function (d) {
- var flowFileAvailability = _.get(d, 'status.aggregateSnapshot.flowFileAvailability', null)
+ var flowFileAvailability = _.get(d, 'status.aggregateSnapshot.flowFileAvailability', null);
return flowFileAvailability !== 'HEAD_OF_QUEUE_PENALIZED';
})
.attr('x', function () {
@@ -1669,8 +1724,8 @@
return 208 - offset;
})
.select('title').text(function () {
- return 'A FlowFile is currently penalized and data cannot be processed at this time.';
- });
+ return 'A FlowFile is currently penalized and data cannot be processed at this time.';
+ });
// update data size
var dataSizeDeferred = $.Deferred(function (deferred) {
@@ -1681,9 +1736,10 @@
});
var backpressurePercentDataSize = updated.select('rect.backpressure-percent.data-size');
- backpressurePercentDataSize.transition()
- .duration(400)
- .attrs({
+ d3Helpers.multiAttr(
+ backpressurePercentDataSize.transition()
+ .duration(400),
+ {
'width': function (d) {
if (nfCommon.isDefinedAndNotNull(d.status.aggregateSnapshot.percentUseBytes)) {
return (backpressureBarWidth * d.status.aggregateSnapshot.percentUseBytes) / 100;
@@ -1704,9 +1760,10 @@
});
var backpressurePercentDataSizePrediction = updated.select('rect.backpressure-tick.data-size-prediction');
- backpressurePercentDataSizePrediction.transition()
- .duration(400)
- .attrs({
+ d3Helpers.multiAttr(
+ backpressurePercentDataSizePrediction.transition()
+ .duration(400),
+ {
'x': function (d) {
// clamp the prediction between 0 and 100 percent
var predicted = _.get(d, 'status.aggregateSnapshot.predictions.predictedPercentBytes', 0);
@@ -1726,25 +1783,25 @@
var actual = _.get(d, 'status.aggregateSnapshot.predictions.percentUseBytes', 0);
var predicted = _.get(d, 'status.aggregateSnapshot.predictions.predictedPercentBytes', 0);
return predicted < actual;
- })
- });
+ });
+ });
updated.select('g.backpressure-data-size-container')
- .each(function(d) {
+ .each(function (d) {
var tip = d3.select('#back-pressure-size-tip-' + d.id);
// create a DOM element for the tooltip if ones does not already exist
if (tip.empty()) {
tip = d3.select('#connection-tooltips')
.append('div')
- .attr('id', function() {
- return 'back-pressure-size-tip-' + d.id
+ .attr('id', function () {
+ return 'back-pressure-size-tip-' + d.id;
})
.attr('class', 'tooltip nifi-tooltip');
}
// update the tooltip
- tip.html(function() {
+ tip.html(function () {
return $('').append(getBackPressureSizeTip(d)).html();
});
@@ -1761,9 +1818,10 @@
});
var backpressurePercentObject = updated.select('rect.backpressure-percent.object');
- backpressurePercentObject.transition()
- .duration(400)
- .attrs({
+ d3Helpers.multiAttr(
+ backpressurePercentObject.transition()
+ .duration(400),
+ {
'width': function (d) {
if (nfCommon.isDefinedAndNotNull(d.status.aggregateSnapshot.percentUseCount)) {
return (backpressureBarWidth * d.status.aggregateSnapshot.percentUseCount) / 100;
@@ -1783,11 +1841,11 @@
deferred.resolve();
});
-
var backpressurePercentObjectPrediction = updated.select('rect.backpressure-tick.object-prediction');
- backpressurePercentObjectPrediction.transition()
- .duration(400)
- .attrs({
+ d3Helpers.multiAttr(
+ backpressurePercentObjectPrediction.transition()
+ .duration(400),
+ {
'x': function (d) {
// clamp the prediction between 0 and 100 percent
var predicted = _.get(d, 'status.aggregateSnapshot.predictions.predictedPercentCount', 0);
@@ -1802,30 +1860,31 @@
return 'none';
}
}
- }).on('end', function () {
+ })
+ .on('end', function () {
backpressurePercentObjectPrediction.classed('prediction-down', function (d) {
var actual = _.get(d, 'status.aggregateSnapshot.percentUseCount', 0);
var predicted = _.get(d, 'status.aggregateSnapshot.predictions.predictedPercentCount', 0);
return predicted < actual;
- })
+ });
});
updated.select('g.backpressure-object-container')
- .each(function(d) {
+ .each(function (d) {
var tip = d3.select('#back-pressure-count-tip-' + d.id);
// create a DOM element for the tooltip if ones does not already exist
if (tip.empty()) {
tip = d3.select('#connection-tooltips')
.append('div')
- .attr('id', function() {
- return 'back-pressure-count-tip-' + d.id
+ .attr('id', function () {
+ return 'back-pressure-count-tip-' + d.id;
})
.attr('class', 'tooltip nifi-tooltip');
}
// update the tooltip
- tip.html(function() {
+ tip.html(function () {
return $('').append(getBackPressureCountTip(d)).html();
});
@@ -1836,11 +1895,12 @@
// update connection once progress bars have transitioned
$.when(dataSizeDeferred, objectCountDeferred).done(function () {
// connection stroke
- updated.select('path.connection-path')
- .classed('full', function (d) {
- return isFullCount(d) || isFullBytes(d);
- })
- .attrs({
+ d3Helpers.multiAttr(
+ updated.select('path.connection-path')
+ .classed('full', function (d) {
+ return isFullCount(d) || isFullBytes(d);
+ }),
+ {
'marker-end': getEndMarker
});
@@ -1851,8 +1911,9 @@
});
// drop shadow
- updated.select('rect.body')
- .attrs({
+ d3Helpers.multiAttr(
+ updated.select('rect.body'),
+ {
'filter': getDropShadow
});
});
@@ -1917,6 +1978,7 @@
* @param nfSelectableRef The nfSelectable module.
* @param nfContextMenuRef The nfContextMenu module.
* @param nfQuickSelectRef The nfQuickSelect module.
+ * @param nfConnectionConfigurationRef The nfConnectionConfigurationRef module.
*/
init: function (nfSelectableRef, nfContextMenuRef, nfQuickSelectRef, nfConnectionConfigurationRef) {
nfSelectable = nfSelectableRef;
@@ -1924,13 +1986,14 @@
nfQuickSelect = nfQuickSelectRef;
nfConnectionConfiguration = nfConnectionConfigurationRef;
- connectionMap = d3.map();
- removedCache = d3.map();
- addedCache = d3.map();
+ connectionMap = new Map();
+ removedCache = new Map();
+ addedCache = new Map();
// create the connection container
- connectionContainer = d3.select('#canvas').append('g')
- .attrs({
+ connectionContainer = d3Helpers.multiAttr(
+ d3.select('#canvas').append('g'),
+ {
'pointer-events': 'stroke',
'class': 'connections'
});
@@ -1947,14 +2010,14 @@
// handle bend point drag events
bendPointDrag = d3.drag()
- .on('start', function () {
+ .on('start', function (event) {
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
})
- .on('drag', function (d) {
- snapEnabled = !d3.event.sourceEvent.shiftKey;
- d.x = snapEnabled ? (Math.round(d3.event.x/snapAlignmentPixels) * snapAlignmentPixels) : d3.event.x;
- d.y = snapEnabled ? (Math.round(d3.event.y/snapAlignmentPixels) * snapAlignmentPixels) : d3.event.y;
+ .on('drag', function (event, d) {
+ snapEnabled = !event.sourceEvent.shiftKey;
+ d.x = snapEnabled ? (Math.round(event.x / snapAlignmentPixels) * snapAlignmentPixels) : event.x;
+ d.y = snapEnabled ? (Math.round(event.y / snapAlignmentPixels) * snapAlignmentPixels) : event.y;
// redraw this connection
d3.select(this.parentNode).call(updateConnections, {
@@ -1962,7 +2025,7 @@
'updateLabel': false
});
})
- .on('end', function () {
+ .on('end', function (event) {
var connection = d3.select(this.parentNode);
var connectionData = connection.datum();
var bends = connection.selectAll('rect.midpoint').data();
@@ -2001,21 +2064,21 @@
}
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
});
// handle endpoint drag events
endpointDrag = d3.drag()
- .on('start', function (d) {
+ .on('start', function (event, d) {
// indicate that dragging has begun
d.dragging = true;
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
})
- .on('drag', function (d) {
- d.x = d3.event.x - 8;
- d.y = d3.event.y - 8;
+ .on('drag', function (event, d) {
+ d.x = event.x - 8;
+ d.y = event.y - 8;
// ensure the new destination is valid
d3.select('g.hover').classed('connectable-destination', function () {
@@ -2028,7 +2091,7 @@
'updateLabel': false
});
})
- .on('end', function (d) {
+ .on('end', function (event, d) {
// indicate that dragging as stopped
d.dragging = false;
@@ -2136,17 +2199,17 @@
}
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
});
// label drag behavior
labelDrag = d3.drag()
- .on('start', function (d) {
+ .on('start', function (event, d) {
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
})
- .on('drag', function (d) {
- if (d.bends.length > 1) {
+ .on('drag', function (event, d) {
+ if (nfCommon.isDefinedAndNotNull(d) && d.bends.length > 1) {
// get the dragged component
var drag = d3.select('rect.label-drag');
@@ -2180,11 +2243,11 @@
} else {
// update the position of the drag selection
drag.attr('x', function (d) {
- d.x += d3.event.dx;
+ d.x += event.dx;
return d.x;
})
.attr('y', function (d) {
- d.y += d3.event.dy;
+ d.y += event.dy;
return d.y;
});
}
@@ -2224,7 +2287,7 @@
});
}
})
- .on('end', function (d) {
+ .on('end', function (event, d) {
if (d.bends.length > 1) {
// get the drag selection
var drag = d3.select('rect.label-drag');
@@ -2258,7 +2321,7 @@
}
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
});
},
@@ -2321,8 +2384,8 @@
return false;
}
- var connections = d3.map();
- var components = d3.map();
+ var connections = new Map();
+ var components = new Map();
var isDisconnected = true;
// include connections
@@ -2349,7 +2412,7 @@
if (isDisconnected) {
// go through each connection to ensure its source and destination are included
- connections.each(function (connection, id) {
+ connections.forEach(function (connection, id) {
if (isDisconnected) {
// determine whether this connection and its components are included within the selection
isDisconnected = components.has(nfCanvasUtils.getConnectionSourceComponentId(connection)) && components.has(nfCanvasUtils.getConnectionDestinationComponentId(connection));
@@ -2388,7 +2451,7 @@
// determine how to handle the specified connection
if ($.isArray(connectionEntities)) {
- $.each(connectionMap.keys(), function (_, key) {
+ $.each(Array.from(connectionMap.keys()), function (_, key) {
var currentConnectionEntity = connectionMap.get(key);
var isPresent = $.grep(connectionEntities, function (proposedConnectionEntity) {
return proposedConnectionEntity.id === currentConnectionEntity.id;
@@ -2396,7 +2459,7 @@
// if the current connection is not present and was not recently added, remove it
if (isPresent.length === 0 && !addedCache.has(key)) {
- connectionMap.remove(key);
+ connectionMap['delete'](key);
}
});
$.each(connectionEntities, function (_, connectionEntity) {
@@ -2464,11 +2527,11 @@
if ($.isArray(connectionIds)) {
$.each(connectionIds, function (_, connectionId) {
removedCache.set(connectionId, now);
- connectionMap.remove(connectionId);
+ connectionMap['delete'](connectionId);
});
} else {
removedCache.set(connectionIds, now);
- connectionMap.remove(connectionIds);
+ connectionMap['delete'](connectionIds);
}
// apply the selection and handle all removed connections
@@ -2479,7 +2542,7 @@
* Removes all processors.
*/
removeAll: function () {
- nfConnection.remove(connectionMap.keys());
+ nfConnection.remove(Array.from(connectionMap.keys()));
},
/**
@@ -2531,7 +2594,7 @@
*/
getComponentConnections: function (id) {
var connections = [];
- connectionMap.each(function (entry, _) {
+ connectionMap.forEach(function (entry, _) {
// see if this component is the source or destination of this connection
if (nfCanvasUtils.getConnectionSourceComponentId(entry) === id || nfCanvasUtils.getConnectionDestinationComponentId(entry) === id) {
connections.push(entry);
@@ -2548,7 +2611,7 @@
*/
get: function (id) {
if (nfCommon.isUndefined(id)) {
- return connectionMap.values();
+ return Array.from(connectionMap.values());
} else {
return connectionMap.get(id);
}
@@ -2561,9 +2624,9 @@
*/
expireCaches: function (timestamp) {
var expire = function (cache) {
- cache.each(function (entryTimestamp, id) {
+ cache.forEach(function (entryTimestamp, id) {
if (timestamp > entryTimestamp) {
- cache.remove(id);
+ cache['delete'](id);
}
});
};
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-context-menu.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-context-menu.js
index cb09577fc9..cfc6f95317 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-context-menu.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-context-menu.js
@@ -917,7 +917,7 @@
/**
* Shows the context menu.
*/
- show: function () {
+ show: function (event) {
// hide the menu if currently visible
nf.ContextMenu.hide();
@@ -930,7 +930,7 @@
var selection = nfCanvasUtils.getSelection();
// get the location for the context menu
- var position = d3.mouse(canvasBody);
+ var position = d3.pointer(event, canvasBody);
// determines if the specified menu positioned at x would overflow the available width
var overflowRight = function (x, menu) {
@@ -1104,13 +1104,13 @@
* @param {selection} components The components to enable the context menu for
*/
activate: function (components) {
- components.on('contextmenu.selection', function () {
+ components.on('contextmenu.selection', function (event) {
// get the clicked component to update selection
- nfContextMenu.show();
+ nfContextMenu.show(event);
// stop propagation and prevent default
- d3.event.preventDefault();
- d3.event.stopPropagation();
+ event.preventDefault();
+ event.stopPropagation();
});
}
};
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
index 8046f7d642..9c09beb398 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
@@ -829,15 +829,15 @@
* @param {object} controllerService
*/
var getReferencingControllerServiceIds = function (controllerService) {
- var ids = d3.set();
- ids.add(controllerService.id);
+ var ids = new Set();
+ ids.push(controllerService.id);
var checkReferencingServices = function (referencingComponents) {
$.each(referencingComponents, function (_, referencingComponentEntity) {
var referencingComponent = referencingComponentEntity.component;
if (referencingComponent.referenceType === 'ControllerService') {
// add the id
- ids.add(referencingComponent.id);
+ ids.push(referencingComponent.id);
// consider it's referencing components if appropriate
if (referencingComponent.referenceCycle === false) {
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-services.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-services.js
index 7dff947913..1c8b1995ec 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-services.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-services.js
@@ -541,9 +541,9 @@
}).done(function (response) {
var id = 0;
var tags = [];
- var groups = d3.set();
- var restrictedUsage = d3.map();
- var requiredPermissions = d3.map();
+ var groups = new Set();
+ var restrictedUsage = new Map();
+ var requiredPermissions = new Map();
// begin the update
controllerServiceTypesData.beginUpdate();
@@ -638,7 +638,7 @@
text: 'all groups',
value: ''
}];
- groups.each(function (group) {
+ groups.forEach(function (group) {
options.push({
text: group,
value: group
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-draggable.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-draggable.js
index 37904a3ecd..7148d05b9e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-draggable.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-draggable.js
@@ -70,7 +70,7 @@
* @param {selection} dragSelection The current drag selection
*/
var updateComponentsPosition = function (dragSelection) {
- var updates = d3.map();
+ var updates = new Map();
// determine the drag delta
var dragData = dragSelection.datum();
@@ -158,11 +158,11 @@
// handle component drag events
drag = d3.drag()
- .on('start', function () {
+ .on('start', function (event) {
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
})
- .on('drag', function () {
+ .on('drag', function (event) {
var dragSelection = d3.select('rect.drag-selection');
// lazily create the drag selection box
@@ -216,19 +216,19 @@
} else {
// update the position of the drag selection
// snap align the position unless the user is holding shift
- snapEnabled = !d3.event.sourceEvent.shiftKey;
+ snapEnabled = !event.sourceEvent.shiftKey;
dragSelection.attr('x', function (d) {
- d.x += d3.event.dx;
+ d.x += event.dx;
return snapEnabled ? (Math.round(d.x/snapAlignmentPixels) * snapAlignmentPixels) : d.x;
}).attr('y', function (d) {
- d.y += d3.event.dy;
+ d.y += event.dy;
return snapEnabled ? (Math.round(d.y/snapAlignmentPixels) * snapAlignmentPixels) : d.y;
});
}
})
- .on('end', function () {
+ .on('end', function (event) {
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
// get the drag selection
var dragSelection = d3.select('rect.drag-selection');
@@ -362,11 +362,11 @@
* @param updates
*/
refreshConnections: function (updates) {
- if (updates.size() > 0) {
+ if (updates.size > 0) {
// wait for all updates to complete
- $.when.apply(window, updates.values()).done(function () {
+ $.when.apply(window, Array.from(updates.values())).done(function () {
var dragged = $.makeArray(arguments);
- var connections = d3.set();
+ var connections = new Set();
// refresh this component
$.each(dragged, function (_, component) {
@@ -383,7 +383,7 @@
});
// refresh the connections
- connections.each(function (connectionId) {
+ connections.forEach(function (connectionId) {
nfConnection.refresh(connectionId);
});
}).always(function () {
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-funnel.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-funnel.js
index a18640798c..1565637440 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-funnel.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-funnel.js
@@ -23,9 +23,10 @@
'd3',
'nf.Common',
'nf.Client',
- 'nf.CanvasUtils'],
- function ($, d3, nfCommon, nfClient, nfCanvasUtils) {
- return (nf.Funnel = factory($, d3, nfCommon, nfClient, nfCanvasUtils));
+ 'nf.CanvasUtils',
+ 'nf.ng.D3Helpers'],
+ function ($, d3, nfCommon, nfClient, nfCanvasUtils, d3Helpers) {
+ return (nf.Funnel = factory($, d3, nfCommon, nfClient, nfCanvasUtils, d3Helpers));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.Funnel =
@@ -33,15 +34,17 @@
require('d3'),
require('nf.Common'),
require('nf.Client'),
- require('nf.CanvasUtils')));
+ require('nf.CanvasUtils'),
+ require('nf.ng.D3Helpers')));
} else {
nf.Funnel = factory(root.$,
root.d3,
root.nf.Common,
root.nf.Client,
- root.nf.CanvasUtils);
+ root.nf.CanvasUtils,
+ root.nf.ng.D3Helpers);
}
-}(this, function ($, d3, nfCommon, nfClient, nfCanvasUtils) {
+}(this, function ($, d3, nfCommon, nfClient, nfCanvasUtils, d3Helpers) {
'use strict';
var nfConnectable;
@@ -81,7 +84,7 @@
* Selects the funnel elements against the current funnel map.
*/
var select = function () {
- return funnelContainer.selectAll('g.funnel').data(funnelMap.values(), function (d) {
+ return funnelContainer.selectAll('g.funnel').data(Array.from(funnelMap.values()), function (d) {
return d.id;
});
};
@@ -98,8 +101,9 @@
return entered;
}
- var funnel = entered.append('g')
- .attrs({
+ var funnel = d3Helpers.multiAttr(
+ entered.append('g'),
+ {
'id': function (d) {
return 'id-' + d.id;
},
@@ -109,8 +113,9 @@
.call(nfCanvasUtils.position);
// funnel border
- funnel.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ funnel.append('rect'),
+ {
'rx': 2,
'ry': 2,
'class': 'border',
@@ -125,8 +130,9 @@
});
// funnel body
- funnel.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ funnel.append('rect'),
+ {
'rx': 2,
'ry': 2,
'class': 'body',
@@ -141,8 +147,9 @@
});
// funnel icon
- funnel.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ funnel.append('text'),
+ {
'class': 'funnel-icon',
'x': 9,
'y': 34
@@ -209,13 +216,14 @@
nfSelectable = nfSelectableRef;
nfContextMenu = nfContextMenuRef;
- funnelMap = d3.map();
- removedCache = d3.map();
- addedCache = d3.map();
+ funnelMap = new Map();
+ removedCache = new Map();
+ addedCache = new Map();
// create the funnel container
- funnelContainer = d3.select('#canvas').append('g')
- .attrs({
+ funnelContainer = d3Helpers.multiAttr(
+ d3.select('#canvas').append('g'),
+ {
'pointer-events': 'all',
'class': 'funnels'
});
@@ -294,7 +302,7 @@
};
if ($.isArray(funnelEntities)) {
- $.each(funnelMap.keys(), function (_, key) {
+ $.each(Array.from(funnelMap.keys()), function (_, key) {
var currentFunnelEntity = funnelMap.get(key);
var isPresent = $.grep(funnelEntities, function (proposedFunnelEntity) {
return proposedFunnelEntity.id === currentFunnelEntity.id;
@@ -302,7 +310,7 @@
// if the current funnel is not present and was not recently added, remove it
if (isPresent.length === 0 && !addedCache.has(key)) {
- funnelMap.remove(key);
+ funnelMap['delete'](key);
}
});
$.each(funnelEntities, function (_, funnelEntity) {
@@ -334,7 +342,7 @@
*/
get: function (id) {
if (nfCommon.isUndefined(id)) {
- return funnelMap.values();
+ return Array.from(funnelMap.values());
} else {
return funnelMap.get(id);
}
@@ -393,11 +401,11 @@
if ($.isArray(funnelIds)) {
$.each(funnelIds, function (_, funnelId) {
removedCache.set(funnelId, now);
- funnelMap.remove(funnelId);
+ funnelMap['delete'](funnelId);
});
} else {
removedCache.set(funnelIds, now);
- funnelMap.remove(funnelIds);
+ funnelMap['delete'](funnelIds);
}
// apply the selection and handle all removed funnels
@@ -408,7 +416,7 @@
* Removes all processors.
*/
removeAll: function () {
- nfFunnel.remove(funnelMap.keys());
+ nfFunnel.remove(Array.from(funnelMap.keys()));
},
/**
@@ -418,9 +426,9 @@
*/
expireCaches: function (timestamp) {
var expire = function (cache) {
- cache.each(function (entryTimestamp, id) {
+ cache.forEach(function (entryTimestamp, id) {
if (timestamp > entryTimestamp) {
- cache.remove(id);
+ cache['delete'](id);
}
});
};
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-label.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-label.js
index bee6e47f1f..92ce9e74b4 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-label.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-label.js
@@ -24,9 +24,10 @@
'nf.Storage',
'nf.Common',
'nf.Client',
- 'nf.CanvasUtils'],
- function ($, d3, nfStorage, nfCommon, nfClient, nfCanvasUtils) {
- return (nf.Label = factory($, d3, nfStorage, nfCommon, nfClient, nfCanvasUtils));
+ 'nf.CanvasUtils',
+ 'nf.ng.D3Helpers'],
+ function ($, d3, nfStorage, nfCommon, nfClient, nfCanvasUtils, d3Helpers) {
+ return (nf.Label = factory($, d3, nfStorage, nfCommon, nfClient, nfCanvasUtils, d3Helpers));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.Label =
@@ -35,16 +36,18 @@
require('nf.Storage'),
require('nf.Common'),
require('nf.Client'),
- require('nf.CanvasUtils')));
+ require('nf.CanvasUtils'),
+ require('nf.ng.D3Helpers')));
} else {
nf.Label = factory(root.$,
root.d3,
root.nf.Storage,
root.nf.Common,
root.nf.Client,
- root.nf.CanvasUtils);
+ root.nf.CanvasUtils,
+ root.nf.ng.D3Helpers);
}
-}(this, function ($, d3, nfStorage, nfCommon, nfClient, nfCanvasUtils) {
+}(this, function ($, d3, nfStorage, nfCommon, nfClient, nfCanvasUtils, d3Helpers) {
'use strict';
var nfConnectable;
@@ -100,7 +103,7 @@
* Selects the labels elements against the current label map.
*/
var select = function () {
- return labelContainer.selectAll('g.label').data(labelMap.values(), function (d) {
+ return labelContainer.selectAll('g.label').data(Array.from(labelMap.values()), function (d) {
return d.id;
});
};
@@ -128,8 +131,9 @@
return entered;
}
- var label = entered.append('g')
- .attrs({
+ var label = d3Helpers.multiAttr(
+ entered.append('g'),
+ {
'id': function (d) {
return 'id-' + d.id;
},
@@ -139,24 +143,27 @@
.call(nfCanvasUtils.position);
// label border
- label.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ label.append('rect'),
+ {
'class': 'border',
'fill': 'transparent',
'stroke': 'transparent'
});
// label
- label.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ label.append('rect'),
+ {
'class': 'body',
'filter': 'url(#component-drop-shadow)',
'stroke-width': 0
});
// label value
- label.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ label.append('text'),
+ {
'xml:space': 'preserve',
'font-weight': 'bold',
'fill': 'black',
@@ -180,8 +187,9 @@
}
// update the border using the configured color
- updated.select('rect.border')
- .attrs({
+ d3Helpers.multiAttr(
+ updated.select('rect.border'),
+ {
'width': function (d) {
return d.dimensions.width;
},
@@ -194,8 +202,9 @@
});
// update the body fill using the configured color
- updated.select('rect.body')
- .attrs({
+ d3Helpers.multiAttr(
+ updated.select('rect.body'),
+ {
'width': function (d) {
return d.dimensions.width;
},
@@ -289,8 +298,9 @@
var points = labelPoint.data(pointData);
// create a point for the end
- var pointsEntered = points.enter().append('rect')
- .attrs({
+ var pointsEntered = d3Helpers.multiAttr(
+ points.enter().append('rect'),
+ {
'class': 'labelpoint',
'width': 10,
'height': 10
@@ -346,37 +356,38 @@
nfContextMenu = nfContextMenuRef;
nfQuickSelect = nfQuickSelectRef;
- labelMap = d3.map();
- removedCache = d3.map();
- addedCache = d3.map();
+ labelMap = new Map();
+ removedCache = new Map();
+ addedCache = new Map();
// create the label container
- labelContainer = d3.select('#canvas').append('g')
- .attrs({
+ labelContainer = d3Helpers.multiAttr(
+ d3.select('#canvas').append('g'),
+ {
'pointer-events': 'all',
'class': 'labels'
});
// handle bend point drag events
labelPointDrag = d3.drag()
- .on('start', function () {
+ .on('start', function (event) {
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
})
- .on('drag', function () {
+ .on('drag', function (event) {
var label = d3.select(this.parentNode);
var labelData = label.datum();
// update the dimensions and ensure they are still within bounds
// snap between aligned sizes unless the user is holding shift
- snapEnabled = !d3.event.sourceEvent.shiftKey;
- labelData.dimensions.width = Math.max(MIN_WIDTH, snapEnabled ? (Math.round(d3.event.x/snapAlignmentPixels) * snapAlignmentPixels) : d3.event.x);
- labelData.dimensions.height = Math.max(MIN_HEIGHT, snapEnabled ? (Math.round(d3.event.y/snapAlignmentPixels) * snapAlignmentPixels) : d3.event.y);
+ snapEnabled = !event.sourceEvent.shiftKey;
+ labelData.dimensions.width = Math.max(MIN_WIDTH, snapEnabled ? (Math.round(event.x/snapAlignmentPixels) * snapAlignmentPixels) : event.x);
+ labelData.dimensions.height = Math.max(MIN_HEIGHT, snapEnabled ? (Math.round(event.y/snapAlignmentPixels) * snapAlignmentPixels) : event.y);
// redraw this connection
updateLabels(label);
})
- .on('end', function () {
+ .on('end', function (event) {
var label = d3.select(this.parentNode);
var labelData = label.datum();
@@ -437,7 +448,7 @@
}
// stop further propagation
- d3.event.sourceEvent.stopPropagation();
+ event.sourceEvent.stopPropagation();
});
},
@@ -513,7 +524,7 @@
};
if ($.isArray(labelEntities)) {
- $.each(labelMap.keys(), function (_, key) {
+ $.each(Array.from(labelMap.keys()), function (_, key) {
var currentLabelEntity = labelMap.get(key);
var isPresent = $.grep(labelEntities, function (proposedLabelEntity) {
return proposedLabelEntity.id === currentLabelEntity.id;
@@ -521,7 +532,7 @@
// if the current label is not present and was not recently added, remove it
if (isPresent.length === 0 && !addedCache.has(key)) {
- labelMap.remove(key);
+ labelMap['delete'](key);
}
});
$.each(labelEntities, function (_, labelEntity) {
@@ -553,7 +564,7 @@
*/
get: function (id) {
if (nfCommon.isUndefined(id)) {
- return labelMap.values();
+ return Array.from(labelMap.values());
} else {
return labelMap.get(id);
}
@@ -612,11 +623,11 @@
if ($.isArray(labelIds)) {
$.each(labelIds, function (_, labelId) {
removedCache.set(labelId, now);
- labelMap.remove(labelId);
+ labelMap['delete'](labelId);
});
} else {
removedCache.set(labelIds, now);
- labelMap.remove(labelIds);
+ labelMap['delete'](labelIds);
}
// apply the selection and handle all removed labels
@@ -627,7 +638,7 @@
* Removes all label.
*/
removeAll: function () {
- nfLabel.remove(labelMap.keys());
+ nfLabel.remove(Array.from(labelMap.keys()));
},
/**
@@ -637,9 +648,9 @@
*/
expireCaches: function (timestamp) {
var expire = function (cache) {
- cache.each(function (entryTimestamp, id) {
+ cache.forEach(function (entryTimestamp, id) {
if (timestamp > entryTimestamp) {
- cache.remove(id);
+ cache['delete'](id);
}
});
};
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port.js
index 1f59f0510e..b6aa449d87 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-port.js
@@ -24,9 +24,10 @@
'nf.Connection',
'nf.Common',
'nf.Client',
- 'nf.CanvasUtils'],
- function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils) {
- return (nf.Port = factory($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils));
+ 'nf.CanvasUtils',
+ 'nf.ng.D3Helpers'],
+ function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, d3Helpers) {
+ return (nf.Port = factory($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, d3Helpers));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.Port =
@@ -35,16 +36,18 @@
require('nf.Connection'),
require('nf.Common'),
require('nf.Client'),
- require('nf.CanvasUtils')));
+ require('nf.CanvasUtils'),
+ require('nf.ng.D3Helpers')));
} else {
nf.Port = factory(root.$,
root.d3,
root.nf.Connection,
root.nf.Common,
root.nf.Client,
- root.nf.CanvasUtils);
+ root.nf.CanvasUtils,
+ root.nf.ng.D3Helpers);
}
-}(this, function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils) {
+}(this, function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, d3Helpers) {
'use strict';
var nfConnectable;
@@ -96,7 +99,7 @@
* Selects the port elements against the current port map.
*/
var select = function () {
- return portContainer.selectAll('g.input-port, g.output-port').data(portMap.values(), function (d) {
+ return portContainer.selectAll('g.input-port, g.output-port').data(Array.from(portMap.values()), function (d) {
return d.id;
});
};
@@ -129,8 +132,9 @@
return entered;
}
- var port = entered.append('g')
- .attrs({
+ var port = d3Helpers.multiAttr(
+ entered.append('g'),
+ {
'id': function (d) {
return 'id-' + d.id;
},
@@ -146,8 +150,9 @@
.call(nfCanvasUtils.position);
// port border
- port.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ port.append('rect'),
+ {
'class': 'border',
'width': function (d) {
return d.dimensions.width;
@@ -160,8 +165,9 @@
});
// port body
- port.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ port.append('rect'),
+ {
'class': 'body',
'width': function (d) {
return d.dimensions.width;
@@ -174,8 +180,9 @@
});
// port remote banner
- port.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ port.append('rect'),
+ {
'class': 'remote-banner',
'width': remotePortDimensions.width,
'height': OFFSET_VALUE,
@@ -184,8 +191,9 @@
.classed('hidden', isLocalPort);
// port icon
- port.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ port.append('text'),
+ {
'class': 'port-icon',
'x': 10,
'y': offsetY(38)
@@ -199,8 +207,9 @@
});
// port name
- port.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ port.append('text'),
+ {
'x': 70,
'y': offsetY(25),
'width': 95,
@@ -230,25 +239,27 @@
}
// port border authorization
- updated.select('rect.border')
- .classed('unauthorized', function (d) {
- return d.permissions.canRead === false;
- })
- .attrs({
+ d3Helpers.multiAttr(
+ updated.select('rect.border'),
+ {
'height': function(d) {
return d.dimensions.height;
}
+ })
+ .classed('unauthorized', function (d) {
+ return d.permissions.canRead === false;
});
// port body authorization
- updated.select('rect.body')
- .classed('unauthorized', function (d) {
- return d.permissions.canRead === false;
- })
- .attrs({
+ d3Helpers.multiAttr(
+ updated.select('rect.body'),
+ {
'height': function(d) {
return d.dimensions.height;
}
+ })
+ .classed('unauthorized', function (d) {
+ return d.permissions.canRead === false;
});
updated.each(function (portData) {
@@ -265,8 +276,9 @@
details = port.append('g').attr('class', 'port-details');
// port transmitting icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'port-transmission-icon',
'x': 10,
'y': 18
@@ -274,8 +286,9 @@
.classed('hidden', isLocalPort);
// bulletin background
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'class': 'bulletin-background',
'x': remotePortDimensions.width - OFFSET_VALUE,
'width': OFFSET_VALUE,
@@ -284,8 +297,9 @@
.classed('hidden', isLocalPort);
// bulletin icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'bulletin-icon',
'x': remotePortDimensions.width - 18,
'y': 18
@@ -294,8 +308,9 @@
.classed('hidden', isLocalPort);
// run status icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'run-status-icon',
'x': 50,
'y': offsetY(25)
@@ -305,8 +320,9 @@
// comments
// --------
- details.append('path')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('path'),
+ {
'class': 'component-comments',
'transform': 'translate(' + (portData.dimensions.width - 2) + ', ' + (portData.dimensions.height - 10) + ')',
'd': 'm0,0 l0,8 l-8,0 z'
@@ -317,16 +333,18 @@
// -------------------
// active thread count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'active-thread-count-icon',
'y': offsetY(43)
})
.text('\ue83f');
// active thread icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'active-thread-count',
'y': offsetY(43)
});
@@ -338,8 +356,9 @@
port.select('rect.remote-banner')
.classed('hidden', isLocalPort);
- port.select('text.port-icon')
- .attrs({
+ d3Helpers.multiAttr(
+ port.select('text.port-icon'),
+ {
'y': offsetY(38)
});
@@ -353,7 +372,8 @@
.classed('hidden', isLocalPort);
// update the port name
- port.select('text.port-name')
+ d3Helpers.multiAttr(
+ port.select('text.port-name')
.each(function (d) {
var portName = d3.select(this);
var name = d.component.name;
@@ -369,7 +389,7 @@
} else {
nfCanvasUtils.multilineEllipsis(portName, 2, name, 'port-name');
}
- }).attrs({
+ }), {
'y': offsetY(25)
}).append('title').text(function (d) {
return d.component.name;
@@ -464,8 +484,9 @@
}
// update the run status
- updated.select('text.run-status-icon')
- .attrs({
+ d3Helpers.multiAttr(
+ updated.select('text.run-status-icon'),
+ {
'fill': function (d) {
var fill = '#728e9b';
@@ -536,8 +557,9 @@
}
});
- updated.select('text.port-transmission-icon')
- .attrs({
+ d3Helpers.multiAttr(
+ updated.select('text.port-transmission-icon'),
+ {
'font-family': function (d) {
if (d.status.transmitting === true) {
return 'FontAwesome';
@@ -641,13 +663,14 @@
nfContextMenu = nfContextMenuRef;
nfQuickSelect = nfQuickSelectRef;
- portMap = d3.map();
- removedCache = d3.map();
- addedCache = d3.map();
+ portMap = new Map();
+ removedCache = new Map();
+ addedCache = new Map();
// create the port container
- portContainer = d3.select('#canvas').append('g')
- .attrs({
+ portContainer = d3Helpers.multiAttr(
+ d3.select('#canvas').append('g'),
+ {
'pointer-events': 'all',
'class': 'ports'
});
@@ -734,7 +757,7 @@
// determine how to handle the specified port status
if ($.isArray(portEntities)) {
- $.each(portMap.keys(), function (_, key) {
+ $.each(Array.from(portMap.keys()), function (_, key) {
var currentPortEntity = portMap.get(key);
var isPresent = $.grep(portEntities, function (proposedPortEntity) {
return proposedPortEntity.id === currentPortEntity.id;
@@ -742,7 +765,7 @@
// if the current port is not present and was not recently added, remove it
if (isPresent.length === 0 && !addedCache.has(key)) {
- portMap.remove(key);
+ portMap['delete'](key);
}
});
$.each(portEntities, function (_, portNode) {
@@ -774,7 +797,7 @@
*/
get: function (id) {
if (nfCommon.isUndefined(id)) {
- return portMap.values();
+ return Array.from(portMap.values());
} else {
return portMap.get(id);
}
@@ -840,11 +863,11 @@
if ($.isArray(portIds)) {
$.each(portIds, function (_, portId) {
removedCache.set(portId, now);
- portMap.remove(portId);
+ portMap['delete'](portId);
});
} else {
removedCache.set(portIds, now);
- portMap.remove(portIds);
+ portMap['delete'](portIds);
}
// apply the selection and handle all removed ports
@@ -855,7 +878,7 @@
* Removes all ports..
*/
removeAll: function () {
- nfPort.remove(portMap.keys());
+ nfPort.remove(Array.from(portMap.keys()));
},
/**
@@ -865,9 +888,9 @@
*/
expireCaches: function (timestamp) {
var expire = function (cache) {
- cache.each(function (entryTimestamp, id) {
+ cache.forEach(function (entryTimestamp, id) {
if (timestamp > entryTimestamp) {
- cache.remove(id);
+ cache['delete'](id);
}
});
};
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group.js
index 463433a8b6..a080537fb9 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-process-group.js
@@ -25,9 +25,10 @@
'nf.Common',
'nf.Client',
'nf.CanvasUtils',
- 'nf.Dialog'],
- function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, nfDialog) {
- return (nf.ProcessGroup = factory($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, nfDialog));
+ 'nf.Dialog',
+ 'nf.ng.D3Helpers'],
+ function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, nfDialog, d3Helpers) {
+ return (nf.ProcessGroup = factory($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, nfDialog, d3Helpers));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.ProcessGroup =
@@ -37,7 +38,8 @@
require('nf.Common'),
require('nf.Client'),
require('nf.CanvasUtils'),
- require('nf.Dialog')));
+ require('nf.Dialog'),
+ require('nf.ng.D3Helpers')));
} else {
nf.ProcessGroup = factory(root.$,
root.d3,
@@ -45,9 +47,10 @@
root.nf.Common,
root.nf.Client,
root.nf.CanvasUtils,
- root.nf.Dialog);
+ root.nf.Dialog,
+ root.nf.ng.D3Helpers);
}
-}(this, function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, nfDialog) {
+}(this, function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, nfDialog, d3Helpers) {
'use strict';
var nfConnectable;
@@ -98,7 +101,7 @@
* Selects the process group elements against the current process group map.
*/
var select = function () {
- return processGroupContainer.selectAll('g.process-group').data(processGroupMap.values(), function (d) {
+ return processGroupContainer.selectAll('g.process-group').data(Array.from(processGroupMap.values()), function (d) {
return d.id;
});
};
@@ -115,8 +118,9 @@
return entered;
}
- var processGroup = entered.append('g')
- .attrs({
+ var processGroup = d3Helpers.multiAttr(
+ entered.append('g'),
+ {
'id': function (d) {
return 'id-' + d.id;
},
@@ -130,8 +134,9 @@
// ----
// process group border
- processGroup.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroup.append('rect'),
+ {
'class': 'border',
'width': function (d) {
return d.dimensions.width;
@@ -144,8 +149,9 @@
});
// process group body
- processGroup.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroup.append('rect'),
+ {
'class': 'body',
'width': function (d) {
return d.dimensions.width;
@@ -158,8 +164,9 @@
});
// process group name background
- processGroup.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroup.append('rect'),
+ {
'width': function (d) {
return d.dimensions.width;
},
@@ -168,8 +175,9 @@
});
// process group name
- processGroup.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroup.append('text'),
+ {
'x': 10,
'y': 20,
'width': 300,
@@ -178,15 +186,16 @@
});
// process group name
- processGroup.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroup.append('text'),
+ {
'x': 10,
'y': 21,
'class': 'version-control'
});
// always support selecting and navigation
- processGroup.on('dblclick', function (d) {
+ processGroup.on('dblclick', function (event, d) {
// enter this group on double click
nfProcessGroup.enterGroup(d.id);
})
@@ -275,19 +284,21 @@
// contents background
// -------------------
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'x': 0,
'y': 32,
'width': function () {
- return processGroupData.dimensions.width
+ return processGroupData.dimensions.width;
},
'height': 24,
'fill': '#e3e8eb'
});
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'x': 0,
'y': function () {
return processGroupData.dimensions.height - 24;
@@ -304,118 +315,130 @@
// --------
// transmitting icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'x': 10,
'y': 49,
'class': 'process-group-transmitting process-group-contents-icon',
'font-family': 'FontAwesome'
})
.text('\uf140')
- .append("title")
- .text("Transmitting Remote Process Groups");
-
+ .append('title')
+ .text('Transmitting Remote Process Groups');
// transmitting count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': 49,
'class': 'process-group-transmitting-count process-group-contents-count'
});
// not transmitting icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': 49,
'class': 'process-group-not-transmitting process-group-contents-icon',
'font-family': 'flowfont'
})
.text('\ue80a')
- .append("title")
- .text("Not Transmitting Remote Process Groups");
+ .append('title')
+ .text('Not Transmitting Remote Process Groups');
// not transmitting count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': 49,
'class': 'process-group-not-transmitting-count process-group-contents-count'
});
// running icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': 49,
'class': 'process-group-running process-group-contents-icon',
'font-family': 'FontAwesome'
})
.text('\uf04b')
- .append("title")
- .text("Running Components");
+ .append('title')
+ .text('Running Components');
// running count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': 49,
'class': 'process-group-running-count process-group-contents-count'
});
// stopped icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': 49,
'class': 'process-group-stopped process-group-contents-icon',
'font-family': 'FontAwesome'
})
.text('\uf04d')
- .append("title")
- .text("Stopped Components");
+ .append('title')
+ .text('Stopped Components');
// stopped count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': 49,
'class': 'process-group-stopped-count process-group-contents-count'
});
// invalid icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': 49,
'class': 'process-group-invalid process-group-contents-icon',
'font-family': 'FontAwesome'
})
.text('\uf071')
- .append("title")
- .text("Invalid Components");
+ .append('title')
+ .text('Invalid Components');
// invalid count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': 49,
'class': 'process-group-invalid-count process-group-contents-count'
});
// disabled icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': 49,
'class': 'process-group-disabled process-group-contents-icon',
'font-family': 'flowfont'
})
.text('\ue802')
- .append("title")
- .text("Disabled Components");
+ .append('title')
+ .text('Disabled Components');
// disabled count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': 49,
'class': 'process-group-disabled-count process-group-contents-count'
});
// up to date icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'x': 10,
'y': function () {
return processGroupData.dimensions.height - 7;
@@ -424,12 +447,13 @@
'font-family': 'FontAwesome'
})
.text('\uf00c')
- .append("title")
- .text("Up to date Versioned Process Groups");
+ .append('title')
+ .text('Up to date Versioned Process Groups');
// up to date count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': function () {
return processGroupData.dimensions.height - 7;
},
@@ -437,8 +461,9 @@
});
// locally modified icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': function () {
return processGroupData.dimensions.height - 7;
},
@@ -446,12 +471,13 @@
'font-family': 'FontAwesome'
})
.text('\uf069')
- .append("title")
- .text("Locally modified Versioned Process Groups");
+ .append('title')
+ .text('Locally modified Versioned Process Groups');
// locally modified count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': function () {
return processGroupData.dimensions.height - 7;
},
@@ -459,8 +485,9 @@
});
// stale icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': function () {
return processGroupData.dimensions.height - 7;
},
@@ -468,12 +495,13 @@
'font-family': 'FontAwesome'
})
.text('\uf0aa')
- .append("title")
- .text("Stale Versioned Process Groups");
+ .append('title')
+ .text('Stale Versioned Process Groups');
// stale count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': function () {
return processGroupData.dimensions.height - 7;
},
@@ -481,8 +509,9 @@
});
// locally modified and stale icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': function () {
return processGroupData.dimensions.height - 7;
},
@@ -490,12 +519,13 @@
'font-family': 'FontAwesome'
})
.text('\uf06a')
- .append("title")
- .text("Locally modified and stale Versioned Process Groups");
+ .append('title')
+ .text('Locally modified and stale Versioned Process Groups');
// locally modified and stale count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': function () {
return processGroupData.dimensions.height - 7;
},
@@ -503,8 +533,9 @@
});
// sync failure icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': function () {
return processGroupData.dimensions.height - 7;
},
@@ -512,12 +543,13 @@
'font-family': 'FontAwesome'
})
.text('\uf128')
- .append("title")
- .text("Sync failure Versioned Process Groups");
+ .append('title')
+ .text('Sync failure Versioned Process Groups');
// sync failure count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'y': function () {
return processGroupData.dimensions.height - 7;
},
@@ -529,8 +561,9 @@
// ----------------
// queued
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processGroupData.dimensions.width;
},
@@ -541,8 +574,9 @@
});
// border
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processGroupData.dimensions.width;
},
@@ -553,8 +587,9 @@
});
// in
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processGroupData.dimensions.width;
},
@@ -565,8 +600,9 @@
});
// border
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processGroupData.dimensions.width;
},
@@ -577,8 +613,9 @@
});
// read/write
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processGroupData.dimensions.width;
},
@@ -589,8 +626,9 @@
});
// border
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processGroupData.dimensions.width;
},
@@ -601,8 +639,9 @@
});
// out
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processGroupData.dimensions.width;
},
@@ -617,14 +656,16 @@
// -----
// stats label container
- var processGroupStatsLabel = details.append('g')
- .attrs({
+ var processGroupStatsLabel = d3Helpers.multiAttr(
+ details.append('g'),
+ {
'transform': 'translate(6, 75)'
});
// queued label
- processGroupStatsLabel.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroupStatsLabel.append('text'),
+ {
'width': 73,
'height': 10,
'x': 4,
@@ -634,8 +675,9 @@
.text('Queued');
// in label
- processGroupStatsLabel.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroupStatsLabel.append('text'),
+ {
'width': 73,
'height': 10,
'x': 4,
@@ -645,8 +687,9 @@
.text('In');
// read/write label
- processGroupStatsLabel.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroupStatsLabel.append('text'),
+ {
'width': 73,
'height': 10,
'x': 4,
@@ -656,8 +699,9 @@
.text('Read/Write');
// out label
- processGroupStatsLabel.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroupStatsLabel.append('text'),
+ {
'width': 73,
'height': 10,
'x': 4,
@@ -667,14 +711,16 @@
.text('Out');
// stats value container
- var processGroupStatsValue = details.append('g')
- .attrs({
+ var processGroupStatsValue = d3Helpers.multiAttr(
+ details.append('g'),
+ {
'transform': 'translate(95, 75)'
});
// queued value
- var queuedText = processGroupStatsValue.append('text')
- .attrs({
+ var queuedText = d3Helpers.multiAttr(
+ processGroupStatsValue.append('text'),
+ {
'width': 180,
'height': 10,
'x': 4,
@@ -683,20 +729,23 @@
});
// queued count
- queuedText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ queuedText.append('tspan'),
+ {
'class': 'count'
});
// queued size
- queuedText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ queuedText.append('tspan'),
+ {
'class': 'size'
});
// in value
- var inText = processGroupStatsValue.append('text')
- .attrs({
+ var inText = d3Helpers.multiAttr(
+ processGroupStatsValue.append('text'),
+ {
'width': 180,
'height': 10,
'x': 4,
@@ -705,32 +754,37 @@
});
// in count
- inText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ inText.append('tspan'),
+ {
'class': 'count'
});
// in size
- inText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ inText.append('tspan'),
+ {
'class': 'size'
});
// in
- inText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ inText.append('tspan'),
+ {
'class': 'ports'
});
// in (remote)
- inText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ inText.append('tspan'),
+ {
'class': 'public-ports'
});
// read/write value
- processGroupStatsValue.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroupStatsValue.append('text'),
+ {
'width': 180,
'height': 10,
'x': 4,
@@ -739,8 +793,9 @@
});
// out value
- var outText = processGroupStatsValue.append('text')
- .attrs({
+ var outText = d3Helpers.multiAttr(
+ processGroupStatsValue.append('text'),
+ {
'width': 180,
'height': 10,
'x': 4,
@@ -749,38 +804,44 @@
});
// out ports
- outText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ outText.append('tspan'),
+ {
'class': 'ports'
});
// out ports (remote)
- outText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ outText.append('tspan'),
+ {
'class': 'public-ports'
});
// out count
- outText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ outText.append('tspan'),
+ {
'class': 'count'
});
// out size
- outText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ outText.append('tspan'),
+ {
'class': 'size'
});
// stats value container
- var processGroupStatsInfo = details.append('g')
- .attrs({
+ var processGroupStatsInfo = d3Helpers.multiAttr(
+ details.append('g'),
+ {
'transform': 'translate(335, 75)'
});
// in info
- processGroupStatsInfo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroupStatsInfo.append('text'),
+ {
'width': 25,
'height': 10,
'x': 4,
@@ -790,8 +851,9 @@
.text('5 min');
// read/write info
- processGroupStatsInfo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroupStatsInfo.append('text'),
+ {
'width': 25,
'height': 10,
'x': 4,
@@ -801,8 +863,9 @@
.text('5 min');
// out info
- processGroupStatsInfo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroupStatsInfo.append('text'),
+ {
'width': 25,
'height': 10,
'x': 4,
@@ -815,8 +878,9 @@
// comments
// --------
- details.append('path')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('path'),
+ {
'class': 'component-comments',
'transform': 'translate(' + (processGroupData.dimensions.width - 2) + ', ' + (processGroupData.dimensions.height - 10) + ')',
'd': 'm0,0 l0,8 l-8,0 z'
@@ -827,16 +891,18 @@
// -------------------
// active thread count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'active-thread-count-icon',
'y': 20
})
.text('\ue83f');
// active thread icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'active-thread-count',
'y': 20
});
@@ -846,8 +912,9 @@
// ---------
// bulletin background
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'class': 'bulletin-background',
'x': function () {
return processGroupData.dimensions.width - 24;
@@ -858,8 +925,9 @@
});
// bulletin icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'bulletin-icon',
'x': function () {
return processGroupData.dimensions.width - 17;
@@ -885,7 +953,7 @@
.text(function (d) {
return d.activeRemotePortCount;
});
- transmittingCount.append("title").text("Transmitting Remote Process Groups");
+ transmittingCount.append('title').text('Transmitting Remote Process Groups');
// update not transmitting
var notTransmitting = details.select('text.process-group-not-transmitting')
@@ -907,7 +975,7 @@
.text(function (d) {
return d.inactiveRemotePortCount;
});
- notTransmittingCount.append("title").text("Not transmitting Remote Process Groups")
+ notTransmittingCount.append('title').text('Not transmitting Remote Process Groups');
// update running
var running = details.select('text.process-group-running')
@@ -929,7 +997,7 @@
.text(function (d) {
return d.runningCount;
});
- runningCount.append("title").text("Running Components");
+ runningCount.append('title').text('Running Components');
// update stopped
var stopped = details.select('text.process-group-stopped')
@@ -951,7 +1019,7 @@
.text(function (d) {
return d.stoppedCount;
});
- stoppedCount.append("title").text("Stopped Components");
+ stoppedCount.append('title').text('Stopped Components');
// update invalid
var invalid = details.select('text.process-group-invalid')
@@ -973,7 +1041,7 @@
.text(function (d) {
return d.invalidCount;
});
- invalidCount.append("title").text("Invalid Components");
+ invalidCount.append('title').text('Invalid Components');
// update disabled
var disabled = details.select('text.process-group-disabled')
@@ -995,7 +1063,7 @@
.text(function (d) {
return d.disabledCount;
});
- disabledCount.append("title").text("Disabled Components");
+ disabledCount.append('title').text('Disabled Components');
// up to date current
var upToDate = details.select('text.process-group-up-to-date')
@@ -1013,7 +1081,7 @@
.text(function (d) {
return d.upToDateCount;
});
- upToDateCount.append("title").text("Up to date Versioned Process Groups");
+ upToDateCount.append('title').text('Up to date Versioned Process Groups');
// update locally modified
var locallyModified = details.select('text.process-group-locally-modified')
@@ -1035,7 +1103,7 @@
.text(function (d) {
return d.locallyModifiedCount;
});
- locallyModifiedCount.append("title").text("Locally modified Versioned Process Groups");
+ locallyModifiedCount.append('title').text('Locally modified Versioned Process Groups');
// update stale
var stale = details.select('text.process-group-stale')
@@ -1057,7 +1125,7 @@
.text(function (d) {
return d.staleCount;
});
- staleCount.append("title").text("Stale Versioned Process Groups");
+ staleCount.append('title').text('Stale Versioned Process Groups');
// update locally modified and stale
var locallyModifiedAndStale = details.select('text.process-group-locally-modified-and-stale')
@@ -1079,7 +1147,7 @@
.text(function (d) {
return d.locallyModifiedAndStaleCount;
});
- locallyModifiedAndStaleCount.append("title").text("Locally modified and stale Versioned Process Groups");
+ locallyModifiedAndStaleCount.append('title').text('Locally modified and stale Versioned Process Groups');
// update sync failure
var syncFailure = details.select('text.process-group-sync-failure')
@@ -1101,36 +1169,34 @@
.text(function (d) {
return d.syncFailureCount;
});
- syncFailureCount.append("title").text("Sync failure Versioned Process Groups");
+ syncFailureCount.append('title').text('Sync failure Versioned Process Groups');
// update version control information
var versionControl = processGroup.select('text.version-control')
- .styles({
- 'visibility': isUnderVersionControl(processGroupData) ? 'visible' : 'hidden',
- 'fill': function () {
- if (isUnderVersionControl(processGroupData)) {
- var vciState = processGroupData.versionedFlowState;
- if (vciState === 'SYNC_FAILURE') {
- return '#666666';
- } else if (vciState === 'LOCALLY_MODIFIED_AND_STALE') {
- return '#BA554A';
- } else if (vciState === 'STALE') {
- return '#BA554A';
- } else if (vciState === 'LOCALLY_MODIFIED') {
- return '#666666';
- } else {
- return '#1A9964';
- }
+ .style('visibility', isUnderVersionControl(processGroupData) ? 'visible' : 'hidden')
+ .style('fill', function () {
+ if (isUnderVersionControl(processGroupData)) {
+ var vciState = processGroupData.versionedFlowState;
+ if (vciState === 'SYNC_FAILURE') {
+ return '#666666';
+ } else if (vciState === 'LOCALLY_MODIFIED_AND_STALE') {
+ return '#BA554A';
+ } else if (vciState === 'STALE') {
+ return '#BA554A';
+ } else if (vciState === 'LOCALLY_MODIFIED') {
+ return '#666666';
} else {
- return '#000';
+ return '#1A9964';
}
+ } else {
+ return '#000';
}
})
.text(function () {
if (isUnderVersionControl(processGroupData)) {
var vciState = processGroupData.versionedFlowState;
if (vciState === 'SYNC_FAILURE') {
- return '\uf128'
+ return '\uf128';
} else if (vciState === 'LOCALLY_MODIFIED_AND_STALE') {
return '\uf06a';
} else if (vciState === 'STALE') {
@@ -1148,37 +1214,37 @@
if (processGroupData.permissions.canRead) {
// version control tooltip
versionControl.each(function () {
- // get the tip
- var tip = d3.select('#version-control-tip-' + processGroupData.id);
+ // get the tip
+ var tip = d3.select('#version-control-tip-' + processGroupData.id);
- // if there are validation errors generate a tooltip
- if (isUnderVersionControl(processGroupData)) {
- // create the tip if necessary
- if (tip.empty()) {
- tip = d3.select('#process-group-tooltips').append('div')
- .attr('id', function () {
- return 'version-control-tip-' + processGroupData.id;
- })
- .attr('class', 'tooltip nifi-tooltip');
- }
-
- // update the tip
- tip.html(function () {
- var vci = processGroupData.component.versionControlInformation;
- var versionControlTip = $('').text('Tracking to "' + vci.flowName + '" Version ' + vci.version + ' in "' + vci.registryName + ' - ' + vci.bucketName + '"');
- var versionControlStateTip = $('').text(nfCommon.getVersionControlTooltip(vci));
- return $('').append(versionControlTip).append('
').append(versionControlStateTip).html();
- });
-
- // add the tooltip
- nfCanvasUtils.canvasTooltip(tip, d3.select(this));
- } else {
- // remove the tip if necessary
- if (!tip.empty()) {
- tip.remove();
- }
+ // if there are validation errors generate a tooltip
+ if (isUnderVersionControl(processGroupData)) {
+ // create the tip if necessary
+ if (tip.empty()) {
+ tip = d3.select('#process-group-tooltips').append('div')
+ .attr('id', function () {
+ return 'version-control-tip-' + processGroupData.id;
+ })
+ .attr('class', 'tooltip nifi-tooltip');
}
- });
+
+ // update the tip
+ tip.html(function () {
+ var vci = processGroupData.component.versionControlInformation;
+ var versionControlTip = $('').text('Tracking to "' + vci.flowName + '" Version ' + vci.version + ' in "' + vci.registryName + ' - ' + vci.bucketName + '"');
+ var versionControlStateTip = $('').text(nfCommon.getVersionControlTooltip(vci));
+ return $('').append(versionControlTip).append('
').append(versionControlStateTip).html();
+ });
+
+ // add the tooltip
+ nfCanvasUtils.canvasTooltip(tip, d3.select(this));
+ } else {
+ // remove the tip if necessary
+ if (!tip.empty()) {
+ tip.remove();
+ }
+ }
+ });
// update the process group comments
processGroup.select('path.component-comments')
@@ -1212,8 +1278,9 @@
});
// update the process group name
- processGroup.select('text.process-group-name')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroup.select('text.process-group-name'),
+ {
'x': function () {
if (isUnderVersionControl(processGroupData)) {
var versionControlX = parseInt(versionControl.attr('x'), 10);
@@ -1250,8 +1317,9 @@
processGroup.select('path.component-comments').style('visibility', 'hidden');
// clear the process group name
- processGroup.select('text.process-group-name')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroup.select('text.process-group-name'),
+ {
'x': 10,
'width': 316
})
@@ -1358,7 +1426,7 @@
// out count value
updated.select('text.process-group-out tspan.count')
.text(function (d) {
- return ' ' + String.fromCharCode(8594) + ' ' + nfCommon.substringBeforeFirst(d.status.aggregateSnapshot.output, ' ');
+ return ' ' + String.fromCharCode(8594) + ' ' + nfCommon.substringBeforeFirst(d.status.aggregateSnapshot.output, ' ');
});
// out size value
@@ -1435,13 +1503,14 @@
nfSelectable = nfSelectableRef;
nfContextMenu = nfContextMenuRef;
- processGroupMap = d3.map();
- removedCache = d3.map();
- addedCache = d3.map();
+ processGroupMap = new Map();
+ removedCache = new Map();
+ addedCache = new Map();
// create the process group container
- processGroupContainer = d3.select('#canvas').append('g')
- .attrs({
+ processGroupContainer = d3Helpers.multiAttr(
+ d3.select('#canvas').append('g'),
+ {
'pointer-events': 'all',
'class': 'process-groups'
});
@@ -1521,7 +1590,7 @@
// determine how to handle the specified process groups
if ($.isArray(processGroupEntities)) {
- $.each(processGroupMap.keys(), function (_, key) {
+ $.each(Array.from(processGroupMap.keys()), function (_, key) {
var currentProcessGroupEntity = processGroupMap.get(key);
var isPresent = $.grep(processGroupEntities, function (proposedProcessGroupEntity) {
return proposedProcessGroupEntity.id === currentProcessGroupEntity.id;
@@ -1529,7 +1598,7 @@
// if the current process group is not present and was not recently added, remove it
if (isPresent.length === 0 && !addedCache.has(key)) {
- processGroupMap.remove(key);
+ processGroupMap['delete'](key);
}
});
$.each(processGroupEntities, function (_, processGroupEntity) {
@@ -1561,7 +1630,7 @@
*/
get: function (id) {
if (nfCommon.isUndefined(id)) {
- return processGroupMap.values();
+ return Array.from(processGroupMap.values());
} else {
return processGroupMap.get(id);
}
@@ -1627,11 +1696,11 @@
if ($.isArray(processGroupIds)) {
$.each(processGroupIds, function (_, processGroupId) {
removedCache.set(processGroupId, now);
- processGroupMap.remove(processGroupId);
+ processGroupMap['delete'](processGroupId);
});
} else {
removedCache.set(processGroupIds, now);
- processGroupMap.remove(processGroupIds);
+ processGroupMap['delete'](processGroupIds);
}
// apply the selection and handle all removed process groups
@@ -1642,7 +1711,7 @@
* Removes all process groups.
*/
removeAll: function () {
- nfProcessGroup.remove(processGroupMap.keys());
+ nfProcessGroup.remove(Array.from(processGroupMap.keys()));
},
/**
@@ -1652,9 +1721,9 @@
*/
expireCaches: function (timestamp) {
var expire = function (cache) {
- cache.each(function (entryTimestamp, id) {
+ cache.forEach(function (entryTimestamp, id) {
if (timestamp > entryTimestamp) {
- cache.remove(id);
+ cache['delete'](id);
}
});
};
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor.js
index 056769930f..a16183e4d6 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor.js
@@ -24,9 +24,10 @@
'nf.Common',
'nf.Client',
'nf.ClusterSummary',
- 'nf.CanvasUtils'],
- function ($, d3, nfCommon, nfClient, nfClusterSummary, nfCanvasUtils) {
- return (nf.Processor = factory($, d3, nfCommon, nfClient, nfClusterSummary, nfCanvasUtils));
+ 'nf.CanvasUtils',
+ 'nf.ng.D3Helpers'],
+ function ($, d3, nfCommon, nfClient, nfClusterSummary, nfCanvasUtils, d3Helpers) {
+ return (nf.Processor = factory($, d3, nfCommon, nfClient, nfClusterSummary, nfCanvasUtils, d3Helpers));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.Processor =
@@ -35,16 +36,18 @@
require('nf.Common'),
require('nf.Client'),
require('nf.ClusterSummary'),
- require('nf.CanvasUtils')));
+ require('nf.CanvasUtils'),
+ require('nf.ng.D3Helpers')));
} else {
nf.Processor = factory(root.$,
root.d3,
root.nf.Common,
root.nf.Client,
root.nf.ClusterSummary,
- root.nf.CanvasUtils);
+ root.nf.CanvasUtils,
+ root.nf.ng.D3Helpers);
}
-}(this, function ($, d3, nfCommon, nfClient, nfClusterSummary, nfCanvasUtils) {
+}(this, function ($, d3, nfCommon, nfClient, nfClusterSummary, nfCanvasUtils, d3Helpers) {
'use strict';
var nfConnectable;
@@ -88,7 +91,7 @@
* Selects the processor elements against the current processor map.
*/
var select = function () {
- return processorContainer.selectAll('g.processor').data(processorMap.values(), function (d) {
+ return processorContainer.selectAll('g.processor').data(Array.from(processorMap.values()), function (d) {
return d.id;
});
};
@@ -105,8 +108,9 @@
return entered;
}
- var processor = entered.append('g')
- .attrs({
+ var processor = d3Helpers.multiAttr(
+ entered.append('g'),
+ {
'id': function (d) {
return 'id-' + d.id;
},
@@ -116,8 +120,9 @@
.call(nfCanvasUtils.position);
// processor border
- processor.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ processor.append('rect'),
+ {
'class': 'border',
'width': function (d) {
return d.dimensions.width;
@@ -130,8 +135,9 @@
});
// processor body
- processor.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ processor.append('rect'),
+ {
'class': 'body',
'width': function (d) {
return d.dimensions.width;
@@ -144,8 +150,9 @@
});
// processor name
- processor.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processor.append('text'),
+ {
'x': 75,
'y': 18,
'width': 230,
@@ -154,8 +161,9 @@
});
// processor icon container
- processor.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ processor.append('rect'),
+ {
'x': 0,
'y': 0,
'width': 50,
@@ -164,8 +172,9 @@
});
// processor icon
- processor.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processor.append('text'),
+ {
'x': 9,
'y': 35,
'class': 'processor-icon'
@@ -173,8 +182,9 @@
.text('\ue807');
// restricted icon background
- processor.append('circle')
- .attrs({
+ d3Helpers.multiAttr(
+ processor.append('circle'),
+ {
'r': 9,
'cx': 12,
'cy': 12,
@@ -182,8 +192,9 @@
});
// restricted icon
- processor.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processor.append('text'),
+ {
'x': 7.75,
'y': 17,
'class': 'restricted'
@@ -191,8 +202,9 @@
.text('\uf132');
// is primary icon background
- processor.append('circle')
- .attrs({
+ d3Helpers.multiAttr(
+ processor.append('circle'),
+ {
'r': 9,
'cx': 38,
'cy': 36,
@@ -200,16 +212,17 @@
});
// is primary icon
- processor.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processor.append('text'),
+ {
'x': 34.75,
'y': 40,
'class': 'is-primary'
})
.text('P')
.append('title').text(function (d) {
- return 'This component is only scheduled to execute on the Primary Node';
- });
+ return 'This component is only scheduled to execute on the Primary Node';
+ });
// make processors selectable
processor.call(nfSelectable.activate).call(nfContextMenu.activate).call(nfQuickSelect.activate);
@@ -255,8 +268,9 @@
details = processor.append('g').attr('class', 'processor-canvas-details');
// run status icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'run-status-icon',
'x': 55,
'y': 23,
@@ -265,8 +279,9 @@
});
// processor type
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'processor-type',
'x': 75,
'y': 32,
@@ -275,8 +290,9 @@
});
// processor type
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'processor-bundle',
'x': 75,
'y': 45,
@@ -291,8 +307,9 @@
// draw the processor statistics table
// in
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processorData.dimensions.width;
},
@@ -303,8 +320,9 @@
});
// border
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processorData.dimensions.width;
},
@@ -315,8 +333,9 @@
});
// read/write
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processorData.dimensions.width;
},
@@ -327,8 +346,9 @@
});
// border
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processorData.dimensions.width;
},
@@ -339,8 +359,9 @@
});
// out
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processorData.dimensions.width;
},
@@ -351,8 +372,9 @@
});
// border
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processorData.dimensions.width;
},
@@ -363,8 +385,9 @@
});
// tasks/time
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return processorData.dimensions.width;
},
@@ -375,14 +398,16 @@
});
// stats label container
- var processorStatsLabel = details.append('g')
- .attrs({
+ var processorStatsLabel = d3Helpers.multiAttr(
+ details.append('g'),
+ {
'transform': 'translate(10, 55)'
});
// in label
- processorStatsLabel.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processorStatsLabel.append('text'),
+ {
'width': 73,
'height': 10,
'y': 9,
@@ -391,8 +416,9 @@
.text('In');
// read/write label
- processorStatsLabel.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processorStatsLabel.append('text'),
+ {
'width': 73,
'height': 10,
'y': 27,
@@ -401,8 +427,9 @@
.text('Read/Write');
// out label
- processorStatsLabel.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processorStatsLabel.append('text'),
+ {
'width': 73,
'height': 10,
'y': 46,
@@ -411,8 +438,9 @@
.text('Out');
// tasks/time label
- processorStatsLabel.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processorStatsLabel.append('text'),
+ {
'width': 73,
'height': 10,
'y': 65,
@@ -421,14 +449,16 @@
.text('Tasks/Time');
// stats value container
- var processorStatsValue = details.append('g')
- .attrs({
+ var processorStatsValue = d3Helpers.multiAttr(
+ details.append('g'),
+ {
'transform': 'translate(85, 55)'
});
// in value
- var inText = processorStatsValue.append('text')
- .attrs({
+ var inText = d3Helpers.multiAttr(
+ processorStatsValue.append('text'),
+ {
'width': 180,
'height': 9,
'y': 9,
@@ -436,20 +466,23 @@
});
// in count
- inText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ inText.append('tspan'),
+ {
'class': 'count'
});
// in size
- inText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ inText.append('tspan'),
+ {
'class': 'size'
});
// read/write value
- processorStatsValue.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processorStatsValue.append('text'),
+ {
'width': 180,
'height': 10,
'y': 27,
@@ -457,8 +490,9 @@
});
// out value
- var outText = processorStatsValue.append('text')
- .attrs({
+ var outText = d3Helpers.multiAttr(
+ processorStatsValue.append('text'),
+ {
'width': 180,
'height': 10,
'y': 46,
@@ -466,20 +500,23 @@
});
// out count
- outText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ outText.append('tspan'),
+ {
'class': 'count'
});
// out size
- outText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ outText.append('tspan'),
+ {
'class': 'size'
});
// tasks/time value
- processorStatsValue.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processorStatsValue.append('text'),
+ {
'width': 180,
'height': 10,
'y': 65,
@@ -491,8 +528,9 @@
.attr('transform', 'translate(305, 55)');
// in info
- processorStatsInfo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processorStatsInfo.append('text'),
+ {
'width': 25,
'height': 10,
'y': 9,
@@ -501,8 +539,9 @@
.text('5 min');
// read/write info
- processorStatsInfo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processorStatsInfo.append('text'),
+ {
'width': 25,
'height': 10,
'y': 27,
@@ -511,8 +550,9 @@
.text('5 min');
// out info
- processorStatsInfo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processorStatsInfo.append('text'),
+ {
'width': 25,
'height': 10,
'y': 46,
@@ -521,8 +561,9 @@
.text('5 min');
// tasks/time info
- processorStatsInfo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processorStatsInfo.append('text'),
+ {
'width': 25,
'height': 10,
'y': 65,
@@ -534,8 +575,9 @@
// comments
// --------
- details.append('path')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('path'),
+ {
'class': 'component-comments',
'transform': 'translate(' + (processorData.dimensions.width - 2) + ', ' + (processorData.dimensions.height - 10) + ')',
'd': 'm0,0 l0,8 l-8,0 z'
@@ -546,16 +588,18 @@
// -------------------
// active thread count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'active-thread-count-icon',
'y': 46
})
.text('\ue83f');
// active thread background
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'active-thread-count',
'y': 46
});
@@ -565,8 +609,9 @@
// ---------
// bulletin background
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'class': 'bulletin-background',
'x': function (d) {
return processorData.dimensions.width - 24;
@@ -576,8 +621,9 @@
});
// bulletin icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'bulletin-icon',
'x': function (d) {
return processorData.dimensions.width - 17;
@@ -599,8 +645,8 @@
// apply ellipsis to the processor name as necessary
nfCanvasUtils.ellipsis(processorName, d.component.name, 'processor-name');
}).append('title').text(function (d) {
- return d.component.name;
- });
+ return d.component.name;
+ });
// update the processor type
processor.select('text.processor-type')
@@ -613,8 +659,8 @@
// apply ellipsis to the processor type as necessary
nfCanvasUtils.ellipsis(processorType, nfCommon.formatType(d.component), 'processor-type');
}).append('title').text(function (d) {
- return nfCommon.formatType(d.component);
- });
+ return nfCommon.formatType(d.component);
+ });
// update the processor bundle
processor.select('text.processor-bundle')
@@ -627,8 +673,8 @@
// apply ellipsis to the processor type as necessary
nfCanvasUtils.ellipsis(processorBundle, nfCommon.formatBundle(d.component.bundle), 'processor-bundle');
}).append('title').text(function (d) {
- return nfCommon.formatBundle(d.component.bundle);
- });
+ return nfCommon.formatBundle(d.component.bundle);
+ });
// update the processor comments
processor.select('path.component-comments')
@@ -837,8 +883,9 @@
}
// update the run status
- updated.select('text.run-status-icon')
- .attrs({
+ d3Helpers.multiAttr(
+ updated.select('text.run-status-icon'),
+ {
'fill': function (d) {
var fill = '#728e9b';
@@ -1013,13 +1060,14 @@
nfContextMenu = nfContextMenuRef;
nfQuickSelect = nfQuickSelectRef;
- processorMap = d3.map();
- removedCache = d3.map();
- addedCache = d3.map();
+ processorMap = new Map();
+ removedCache = new Map();
+ addedCache = new Map();
// create the processor container
- processorContainer = d3.select('#canvas').append('g')
- .attrs({
+ processorContainer = d3Helpers.multiAttr(
+ d3.select('#canvas').append('g'),
+ {
'pointer-events': 'all',
'class': 'processors'
});
@@ -1099,7 +1147,7 @@
// determine how to handle the specified processor
if ($.isArray(processorEntities)) {
- $.each(processorMap.keys(), function (_, key) {
+ $.each(Array.from(processorMap.keys()), function (_, key) {
var currentProcessorEntity = processorMap.get(key);
var isPresent = $.grep(processorEntities, function (proposedProcessorEntity) {
return proposedProcessorEntity.id === currentProcessorEntity.id;
@@ -1107,7 +1155,7 @@
// if the current processor is not present and was not recently added, remove it
if (isPresent.length === 0 && !addedCache.has(key)) {
- processorMap.remove(key);
+ processorMap['delete'](key);
}
});
$.each(processorEntities, function (_, processorEntity) {
@@ -1140,7 +1188,7 @@
*/
get: function (id) {
if (nfCommon.isUndefined(id)) {
- return processorMap.values();
+ return Array.from(processorMap.values());
} else {
return processorMap.get(id);
}
@@ -1206,11 +1254,11 @@
if ($.isArray(processorIds)) {
$.each(processorIds, function (_, processorId) {
removedCache.set(processorId, now);
- processorMap.remove(processorId);
+ processorMap['delete'](processorId);
});
} else {
removedCache.set(processorIds, now);
- processorMap.remove(processorIds);
+ processorMap['delete'](processorIds);
}
// apply the selection and handle all removed processors
@@ -1221,7 +1269,7 @@
* Removes all processors.
*/
removeAll: function () {
- nfProcessor.remove(processorMap.keys());
+ nfProcessor.remove(Array.from(processorMap.keys()));
},
/**
@@ -1231,9 +1279,9 @@
*/
expireCaches: function (timestamp) {
var expire = function (cache) {
- cache.each(function (entryTimestamp, id) {
+ cache.forEach(function (entryTimestamp, id) {
if (timestamp > entryTimestamp) {
- cache.remove(id);
+ cache['delete'](id);
}
});
};
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-quick-select.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-quick-select.js
index 93e9b1e45e..775808393a 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-quick-select.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-quick-select.js
@@ -51,7 +51,7 @@
/**
* Attempts to show configuration or details dialog for the specified slection.
*/
- quickSelect: function () {
+ quickSelect: function (event) {
var selection = nfCanvasUtils.getSelection();
if (nfCanvasUtils.isConfigurable(selection)) {
@@ -61,8 +61,8 @@
}
// stop propagation and prevent default
- d3.event.preventDefault();
- d3.event.stopPropagation();
+ event.preventDefault();
+ event.stopPropagation();
},
/**
@@ -71,9 +71,9 @@
* @param {selection} components
*/
activate: function (components) {
- components.on('dblclick', function () {
+ components.on('dblclick', function (event) {
// get the clicked component to update selection
- nfQuickSelect.quickSelect();
+ nfQuickSelect.quickSelect(event);
});
}
};
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group.js
index 61d2d4cbee..e63b28cbd2 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-remote-process-group.js
@@ -24,9 +24,10 @@
'nf.Connection',
'nf.Common',
'nf.Client',
- 'nf.CanvasUtils'],
- function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils) {
- return (nf.RemoteProcessGroup = factory($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils));
+ 'nf.CanvasUtils',
+ 'nf.ng.D3Helpers'],
+ function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, d3Helpers) {
+ return (nf.RemoteProcessGroup = factory($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, d3Helpers));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.RemoteProcessGroup =
@@ -35,16 +36,18 @@
require('nf.Connection'),
require('nf.Common'),
require('nf.Client'),
- require('nf.CanvasUtils')));
+ require('nf.CanvasUtils'),
+ require('nf.ng.D3Helpers')));
} else {
nf.RemoteProcessGroup = factory(root.$,
root.d3,
root.nf.Connection,
root.nf.Common,
root.nf.Client,
- root.nf.CanvasUtils);
+ root.nf.CanvasUtils,
+ root.nf.ng.D3Helpers);
}
-}(this, function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils) {
+}(this, function ($, d3, nfConnection, nfCommon, nfClient, nfCanvasUtils, d3Helpers) {
'use strict';
var nfConnectable;
@@ -87,7 +90,7 @@
* Selects the remote process group elements against the current remote process group map.
*/
var select = function () {
- return remoteProcessGroupContainer.selectAll('g.remote-process-group').data(remoteProcessGroupMap.values(), function (d) {
+ return remoteProcessGroupContainer.selectAll('g.remote-process-group').data(Array.from(remoteProcessGroupMap.values()), function (d) {
return d.id;
});
};
@@ -104,8 +107,9 @@
return entered;
}
- var remoteProcessGroup = entered.append('g')
- .attrs({
+ var remoteProcessGroup = d3Helpers.multiAttr(
+ entered.append('g'),
+ {
'id': function (d) {
return 'id-' + d.id;
},
@@ -119,8 +123,9 @@
// ----
// remote process group border
- remoteProcessGroup.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ remoteProcessGroup.append('rect'),
+ {
'class': 'border',
'width': function (d) {
return d.dimensions.width;
@@ -133,8 +138,9 @@
});
// remote process group body
- remoteProcessGroup.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ remoteProcessGroup.append('rect'),
+ {
'class': 'body',
'width': function (d) {
return d.dimensions.width;
@@ -147,8 +153,9 @@
});
// remote process group name background
- remoteProcessGroup.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ remoteProcessGroup.append('rect'),
+ {
'width': function (d) {
return d.dimensions.width;
},
@@ -157,8 +164,9 @@
});
// remote process group name
- remoteProcessGroup.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ remoteProcessGroup.append('text'),
+ {
'x': 30,
'y': 20,
'width': 305,
@@ -207,8 +215,9 @@
details = remoteProcessGroup.append('g').attr('class', 'remote-process-group-details');
// remote process group transmission status
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'remote-process-group-transmission-status',
'x': 10,
'y': 20
@@ -218,8 +227,9 @@
// details background
// ------------------
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'x': 0,
'y': 32,
'width': function () {
@@ -234,16 +244,18 @@
// -------
// remote process group secure transfer
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'remote-process-group-transmission-secure',
'x': 10,
'y': 48
});
// remote process group uri
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'x': 30,
'y': 48,
'width': 305,
@@ -256,8 +268,9 @@
// ----------------
// sent
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return remoteProcessGroupData.dimensions.width;
},
@@ -268,8 +281,9 @@
});
// border
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return remoteProcessGroupData.dimensions.width;
},
@@ -280,8 +294,9 @@
});
// received
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'width': function () {
return remoteProcessGroupData.dimensions.width;
},
@@ -296,14 +311,16 @@
// -----
// stats label container
- var remoteProcessGroupStatsLabel = details.append('g')
- .attrs({
+ var remoteProcessGroupStatsLabel = d3Helpers.multiAttr(
+ details.append('g'),
+ {
'transform': 'translate(6, 75)'
});
// sent label
- remoteProcessGroupStatsLabel.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ remoteProcessGroupStatsLabel.append('text'),
+ {
'width': 73,
'height': 10,
'x': 4,
@@ -313,8 +330,9 @@
.text('Sent');
// received label
- remoteProcessGroupStatsLabel.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ remoteProcessGroupStatsLabel.append('text'),
+ {
'width': 73,
'height': 10,
'x': 4,
@@ -324,14 +342,16 @@
.text('Received');
// stats value container
- var remoteProcessGroupStatsValue = details.append('g')
- .attrs({
+ var remoteProcessGroupStatsValue = d3Helpers.multiAttr(
+ details.append('g'),
+ {
'transform': 'translate(95, 75)'
});
// sent value
- var sentText = remoteProcessGroupStatsValue.append('text')
- .attrs({
+ var sentText = d3Helpers.multiAttr(
+ remoteProcessGroupStatsValue.append('text'),
+ {
'width': 180,
'height': 10,
'x': 4,
@@ -340,26 +360,30 @@
});
// sent count
- sentText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ sentText.append('tspan'),
+ {
'class': 'count'
});
// sent size
- sentText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ sentText.append('tspan'),
+ {
'class': 'size'
});
// sent ports
- sentText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ sentText.append('tspan'),
+ {
'class': 'ports'
});
// received value
- var receivedText = remoteProcessGroupStatsValue.append('text')
- .attrs({
+ var receivedText = d3Helpers.multiAttr(
+ remoteProcessGroupStatsValue.append('text'),
+ {
'width': 180,
'height': 10,
'x': 4,
@@ -368,32 +392,37 @@
});
// received ports
- receivedText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ receivedText.append('tspan'),
+ {
'class': 'ports'
});
// received count
- receivedText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ receivedText.append('tspan'),
+ {
'class': 'count'
});
// received size
- receivedText.append('tspan')
- .attrs({
+ d3Helpers.multiAttr(
+ receivedText.append('tspan'),
+ {
'class': 'size'
});
// stats value container
- var processGroupStatsInfo = details.append('g')
- .attrs({
+ var processGroupStatsInfo = d3Helpers.multiAttr(
+ details.append('g'),
+ {
'transform': 'translate(335, 75)'
});
// sent info
- processGroupStatsInfo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroupStatsInfo.append('text'),
+ {
'width': 25,
'height': 10,
'x': 4,
@@ -403,8 +432,9 @@
.text('5 min');
// received info
- processGroupStatsInfo.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ processGroupStatsInfo.append('text'),
+ {
'width': 25,
'height': 10,
'x': 4,
@@ -417,8 +447,9 @@
// last refreshed time
// -------------------
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'x': 0,
'y': function () {
return remoteProcessGroupData.dimensions.height - 24;
@@ -430,8 +461,9 @@
'fill': '#e3e8eb'
});
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'x': 10,
'y': 168,
'class': 'remote-process-group-last-refresh'
@@ -441,8 +473,9 @@
// comments
// --------
- details.append('path')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('path'),
+ {
'class': 'component-comments',
'transform': 'translate(' + (remoteProcessGroupData.dimensions.width - 2) + ', ' + (remoteProcessGroupData.dimensions.height - 10) + ')',
'd': 'm0,0 l0,8 l-8,0 z'
@@ -453,16 +486,18 @@
// -------------------
// active thread count
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'active-thread-count-icon',
'y': 20
})
.text('\ue83f');
// active thread icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'active-thread-count',
'y': 20
});
@@ -472,8 +507,9 @@
// ---------
// bulletin background
- details.append('rect')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('rect'),
+ {
'class': 'bulletin-background',
'x': function () {
return remoteProcessGroupData.dimensions.width - 24;
@@ -484,8 +520,9 @@
});
// bulletin icon
- details.append('text')
- .attrs({
+ d3Helpers.multiAttr(
+ details.append('text'),
+ {
'class': 'bulletin-icon',
'x': function () {
return remoteProcessGroupData.dimensions.width - 17;
@@ -859,13 +896,14 @@
nfContextMenu = nfContextMenuRef;
nfQuickSelect = nfQuickSelectRef;
- remoteProcessGroupMap = d3.map();
- removedCache = d3.map();
- addedCache = d3.map();
+ remoteProcessGroupMap = new Map();
+ removedCache = new Map();
+ addedCache = new Map();
// create the process group container
- remoteProcessGroupContainer = d3.select('#canvas').append('g')
- .attrs({
+ remoteProcessGroupContainer = d3Helpers.multiAttr(
+ d3.select('#canvas').append('g'),
+ {
'pointer-events': 'all',
'class': 'remote-process-groups'
});
@@ -945,7 +983,7 @@
// determine how to handle the specified remote process groups
if ($.isArray(remoteProcessGroupEntities)) {
- $.each(remoteProcessGroupMap.keys(), function (_, key) {
+ $.each(Array.from(remoteProcessGroupMap.keys()), function (_, key) {
var currentRemoteProcessGroupEntity = remoteProcessGroupMap.get(key);
var isPresent = $.grep(remoteProcessGroupEntities, function (proposedRemoteProcessGroupEntity) {
return proposedRemoteProcessGroupEntity.id === currentRemoteProcessGroupEntity.id;
@@ -953,7 +991,7 @@
// if the current remote process group is not present and was not recently added, remove it
if (isPresent.length === 0 && !addedCache.has(key)) {
- remoteProcessGroupMap.remove(key);
+ remoteProcessGroupMap['delete'](key);
}
});
$.each(remoteProcessGroupEntities, function (_, remoteProcessGroupEntity) {
@@ -985,7 +1023,7 @@
*/
get: function (id) {
if (nfCommon.isUndefined(id)) {
- return remoteProcessGroupMap.values();
+ return Array.from(remoteProcessGroupMap.values());
} else {
return remoteProcessGroupMap.get(id);
}
@@ -1059,11 +1097,11 @@
if ($.isArray(remoteProcessGroupIds)) {
$.each(remoteProcessGroupIds, function (_, remoteProcessGroupId) {
removedCache.set(remoteProcessGroupId, now);
- remoteProcessGroupMap.remove(remoteProcessGroupId);
+ remoteProcessGroupMap['delete'](remoteProcessGroupId);
});
} else {
removedCache.set(remoteProcessGroupIds, now);
- remoteProcessGroupMap.remove(remoteProcessGroupIds);
+ remoteProcessGroupMap['delete'](remoteProcessGroupIds);
}
// apply the selection and handle all removed remote process groups
@@ -1074,7 +1112,7 @@
* Removes all remote process groups.
*/
removeAll: function () {
- nfRemoteProcessGroup.remove(remoteProcessGroupMap.keys());
+ nfRemoteProcessGroup.remove(Array.from(remoteProcessGroupMap.keys()));
},
/**
@@ -1084,9 +1122,9 @@
*/
expireCaches: function (timestamp) {
var expire = function (cache) {
- cache.each(function (entryTimestamp, id) {
+ cache.forEach(function (entryTimestamp, id) {
if (timestamp > entryTimestamp) {
- cache.remove(id);
+ cache['delete'](id);
}
});
};
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-selectable.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-selectable.js
index c24457d110..12e48bc680 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-selectable.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-selectable.js
@@ -43,14 +43,14 @@
var nfSelectable = {
- select: function (g) {
+ select: function (event, g) {
// hide any context menus as necessary
nfContextMenu.hide();
// only need to update selection if necessary
if (!g.classed('selected')) {
// since we're not appending, deselect everything else
- if (!d3.event.shiftKey) {
+ if (!event.shiftKey) {
d3.selectAll('g.selected').classed('selected', false);
}
@@ -58,7 +58,7 @@
g.classed('selected', true);
} else {
// we are currently selected, if shift key the deselect
- if (d3.event.shiftKey) {
+ if (event.shiftKey) {
g.classed('selected', false);
}
}
@@ -68,7 +68,7 @@
nfNgBridge.digest();
// stop propagation
- d3.event.stopPropagation();
+ event.stopPropagation();
},
/**
@@ -77,9 +77,9 @@
* @param {selection} components
*/
activate: function (components) {
- components.on('mousedown.selection', function () {
+ components.on('mousedown.selection', function (event) {
// get the clicked component to update selection
- nfSelectable.select(d3.select(this));
+ nfSelectable.select(event, d3.select(this));
// update URL deep linking params
nfCanvasUtils.setURLParameters();
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-settings.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-settings.js
index 290ce4dce6..45a35bc274 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-settings.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-settings.js
@@ -960,9 +960,9 @@
}).done(function (response) {
var id = 0;
var tags = [];
- var groups = d3.set();
- var restrictedUsage = d3.map();
- var requiredPermissions = d3.map();
+ var groups = new Set();
+ var restrictedUsage = new Map();
+ var requiredPermissions = new Map();
// begin the update
reportingTaskTypesData.beginUpdate();
@@ -1056,7 +1056,7 @@
text: 'all groups',
value: ''
}];
- groups.each(function (group) {
+ groups.forEach(function (group) {
options.push({
text: group,
value: group
@@ -1362,9 +1362,9 @@
}).done(function (response) {
var id = 0;
var tags = [];
- var groups = d3.set();
- var restrictedUsage = d3.map();
- var requiredPermissions = d3.map();
+ var groups = new Set();
+ var restrictedUsage = new Map();
+ var requiredPermissions = new Map();
// begin the update
parameterProviderTypesData.beginUpdate();
@@ -1458,7 +1458,7 @@
text: 'all groups',
value: ''
}];
- groups.each(function (group) {
+ groups.forEach(function (group) {
options.push({
text: group,
value: group
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-status-history.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-status-history.js
index 6f6f4a7e18..a1b1a43853 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-status-history.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-status-history.js
@@ -356,8 +356,8 @@
// add status history details
var detailsContainer = buildDetailsContainer('Status History');
- d3.map(statusHistory.details).each(function (value, label) {
- addDetailItem(detailsContainer, label, value);
+ Object.entries(statusHistory.details).forEach(function(key, value) {
+ addDetailItem(detailsContainer, key, value);
});
var margin = {
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-lineage.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-lineage.js
index b67e474f47..09dc4ddb4e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-lineage.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-lineage.js
@@ -203,8 +203,8 @@
var maxMillis;
// data lookups
- var nodeLookup = d3.map();
- var linkLookup = d3.map();
+ var nodeLookup = new Map();
+ var linkLookup = new Map();
var locateDescendants = function (nodeIds, descendants, depth) {
$.each(nodeIds, function (_, nodeId) {
@@ -225,9 +225,9 @@
};
var positionNodes = function (nodeIds, depth, parents, levelDifference) {
- var immediateSet = d3.set(nodeIds);
- var childSet = d3.set();
- var descendantSet = d3.set();
+ var immediateSet = new Set(nodeIds);
+ var childSet = new Set();
+ var descendantSet = new Set();
// locate children
locateDescendants(nodeIds, childSet, 1);
@@ -238,16 +238,16 @@
// push off processing a node until its deepest point
// by removing any descendants from the immediate nodes.
// in this case, a link is panning multiple levels
- descendantSet.each(function (d) {
- immediateSet.remove(d);
+ descendantSet.forEach(function (d) {
+ immediateSet['delete'](d);
});
// convert the children to an array to ensure consistent
// order when performing index of checks below
- var children = childSet.values().sort(d3.descending);
+ var children = Array.from(childSet.values()).sort(d3.descending);
// convert the immediate to allow for sorting below
- var immediate = immediateSet.values();
+ var immediate = Array.from(immediateSet.values());
// attempt to identify fan in/out cases
var nodesWithTwoParents = 0;
@@ -475,10 +475,10 @@
var refresh = function (provenanceTableCtrl) {
// consider all nodes as starting points
- var startNodes = d3.set(nodeLookup.keys());
+ var startNodes = new Set(Array.from(nodeLookup.keys()));
// go through the nodes to reset their outgoing links
- nodeLookup.each(function (node, id) {
+ nodeLookup.forEach(function (node, id) {
node.outgoing = [];
node.incoming = [];
@@ -493,17 +493,17 @@
});
// go through the links in order to compute the new layout
- linkLookup.each(function (link, id) {
+ linkLookup.forEach(function (link, id) {
// updating the nodes connections
link.source.outgoing.push(link);
link.target.incoming.push(link);
// remove the target from being a potential starting node
- startNodes.remove(link.target.id);
+ startNodes['delete'](link.target.id);
});
// position the nodes
- positionNodes(startNodes.values(), 1, [], 50);
+ positionNodes(Array.from(startNodes.values()), 1, [], 50);
// update the slider min/max/step values
var step = (maxMillis - minMillis) / config.sliderTickCount;
@@ -537,9 +537,9 @@
// handle zoom behavior
var lineageZoom = d3.zoom()
.scaleExtent([0.2, 8])
- .on('zoom', function () {
+ .on('zoom', function (event) {
d3.select('g.lineage').attr('transform', function () {
- return 'translate(' + d3.event.transform.x + ', ' + d3.event.transform.y + ') scale(' + d3.event.transform.k + ')';
+ return 'translate(' + event.transform.x + ', ' + event.transform.y + ') scale(' + event.transform.k + ')';
});
});
@@ -549,20 +549,20 @@
.attr('height', '100%')
.call(lineageZoom)
.on('dblclick.zoom', null)
- .on('mousedown', function (d) {
+ .on('mousedown', function (event, d) {
// hide the context menu if necessary
d3.selectAll('circle.context').classed('context', false);
$('#provenance-lineage-context-menu').hide().empty();
// prevents browser from using text cursor
- d3.event.preventDefault();
+ event.preventDefault();
})
- .on('contextmenu', function () {
+ .on('contextmenu', function (event) {
var contextMenu = $('#provenance-lineage-context-menu');
// if there is something to show in the context menu
if (!contextMenu.is(':empty')) {
- var position = d3.mouse(this);
+ var position = d3.pointer(event, this);
// show the context menu
contextMenu.css({
@@ -572,41 +572,37 @@
}
// prevent the native default context menu
- d3.event.preventDefault();
+ event.preventDefault();
});
svg.append('rect')
- .attrs({
- 'width': '100%',
- 'height': '100%',
- 'fill': '#f9fafb'
- });
+ .attr('width', '100%')
+ .attr('height', '100%')
+ .attr('fill', '#f9fafb');
svg.append('defs').selectAll('marker')
.data(['FLOWFILE', 'FLOWFILE-SELECTED', 'EVENT', 'EVENT-SELECTED'])
.enter().append('marker')
- .attrs({
- 'id': function (d) {
- return d;
- },
- 'viewBox': '0 -3 6 6',
- 'refX': function (d) {
- if (d.indexOf('FLOWFILE') >= 0) {
- return 16;
- } else {
- return 11;
- }
- },
- 'refY': 0,
- 'markerWidth': 6,
- 'markerHeight': 6,
- 'orient': 'auto',
- 'fill': function (d) {
- if (d.indexOf('SELECTED') >= 0) {
- return '#ba554a';
- } else {
- return '#000000';
- }
+ .attr('id', function (d) {
+ return d;
+ })
+ .attr('viewBox', '0 -3 6 6')
+ .attr('refX', function (d) {
+ if (d.indexOf('FLOWFILE') >= 0) {
+ return 16;
+ } else {
+ return 11;
+ }
+ })
+ .attr('refY', 0)
+ .attr('markerWidth', 6)
+ .attr('markerHeight', 6)
+ .attr('orient', 'auto')
+ .attr('fill', function (d) {
+ if (d.indexOf('SELECTED') >= 0) {
+ return '#ba554a';
+ } else {
+ return '#000000';
}
})
.append('path')
@@ -614,11 +610,9 @@
// group everything together
var lineageContainer = svg.append('g')
- .attrs({
- 'transform': 'translate(0, 0) scale(1)',
- 'pointer-events': 'all',
- 'class': 'lineage'
- });
+ .attr('transform', 'translate(0, 0) scale(1)')
+ .attr('pointer-events', 'all')
+ .attr('class', 'lineage');
// select the nodes and links
var nodes = lineageContainer.selectAll('g.node');
@@ -673,19 +667,17 @@
var renderFlowFile = function (flowfiles) {
flowfiles
.classed('flowfile', true)
- .on('mousedown', function (d) {
- d3.event.stopPropagation();
+ .on('mousedown', function (event, d) {
+ event.stopPropagation();
});
// node
flowfiles.append('circle')
- .attrs({
- 'r': 16,
- 'fill': '#fff',
- 'stroke': '#000',
- 'stroke-width': 1.0
- })
- .on('mouseover', function (d) {
+ .attr('r', 16)
+ .attr('fill', '#fff')
+ .attr('stroke', '#000')
+ .attr('stroke-width', 1.0)
+ .on('mouseover', function (event, d) {
links.filter(function (linkDatum) {
return d.id === linkDatum.flowFileUuid;
})
@@ -694,7 +686,7 @@
return 'url(#' + d.target.type + '-SELECTED)';
});
})
- .on('mouseout', function (d) {
+ .on('mouseout', function (event, d) {
links.filter(function (linkDatum) {
return d.id === linkDatum.flowFileUuid;
}).classed('selected', false)
@@ -704,21 +696,17 @@
});
var icon = flowfiles.append('g')
- .attrs({
- 'class': 'flowfile-icon',
- 'transform': function (d) {
- return 'translate(-9,-9)';
- }
+ .attr('class', 'flowfile-icon')
+ .attr('transform', function (d) {
+ return 'translate(-9,-9)';
}).append('text')
- .attrs({
- 'font-family': 'flowfont',
- 'font-size': '18px',
- 'fill': '#ad9897',
- 'transform': function (d) {
- return 'translate(0,15)';
- }
+ .attr('font-family', 'flowfont')
+ .attr('font-size', '18px')
+ .attr('fill', '#ad9897')
+ .attr('transform', function (d) {
+ return 'translate(0,15)';
})
- .on('mouseover', function (d) {
+ .on('mouseover', function (event, d) {
links.filter(function (linkDatum) {
return d.id === linkDatum.flowFileUuid;
})
@@ -727,7 +715,7 @@
return 'url(#' + d.target.type + '-SELECTED)';
});
})
- .on('mouseout', function (d) {
+ .on('mouseout', function (event, d) {
links.filter(function (linkDatum) {
return d.id === linkDatum.flowFileUuid;
}).classed('selected', false)
@@ -890,14 +878,14 @@
provenanceTableCtrl.getEventDetails(eventId, clusterNodeId).done(function (response) {
var provenanceEvent = response.provenanceEvent;
var eventUuid = provenanceEvent.flowFileUuid;
- var eventUuids = d3.set(provenanceEvent.childUuids);
+ var eventUuids = new Set(provenanceEvent.childUuids);
// determines if the specified event should be removable based on if the collapsing is fanning in/out
var allowEventRemoval = function (fanIn, node) {
if (fanIn) {
return node.id !== eventId;
} else {
- return node.flowFileUuid !== eventUuid && $.inArray(eventUuid, node.parentUuids) === -1;
+ return node.flowFileUuid !== eventUuid && $.inArray(Array.from(eventUuid), node.parentUuids) === -1;
}
};
@@ -918,11 +906,11 @@
var newUuids = false;
// consider each node for being collapsed
- $.each(nodeLookup.values(), function (_, node) {
+ $.each(Array.from(nodeLookup.values()), function (_, node) {
// if this node is in the uuids remove it unless its the original event or is part of this and another lineage
if (uuids.has(node.flowFileUuid) && allowEventRemoval(fanIn, node)) {
// remove it from the look lookup
- nodeLookup.remove(node.id);
+ nodeLookup['delete'](node.id);
// include all related outgoing flow file uuids
$.each(node.outgoing, function (_, outgoing) {
@@ -935,11 +923,11 @@
});
// update the link data
- $.each(linkLookup.values(), function (_, link) {
+ $.each(Array.from(linkLookup.values()), function (_, link) {
// if this link is in the uuids remove it
if (uuids.has(link.flowFileUuid) && allowLinkRemoval(fanIn, link)) {
// remove it from the link lookup
- linkLookup.remove(link.id);
+ linkLookup['delete'](link.id);
// add a related uuid that needs to be collapse
var next = link.target;
@@ -1002,17 +990,17 @@
// renders event nodes
var renderEvent = function (events, provenanceTableCtrl) {
events
- .on('contextmenu', function (d) {
+ .on('contextmenu', function (event, d) {
// select the current node for a visible cue
d3.select('#event-node-' + d.id).classed('context', true);
// show the context menu
showContextMenu(d, provenanceTableCtrl);
})
- .on('mousedown', function (d) {
- d3.event.stopPropagation();
+ .on('mousedown', function (event, d) {
+ event.stopPropagation();
})
- .on('dblclick', function (d) {
+ .on('dblclick', function (event, d) {
// show the event details
provenanceTableCtrl.showEventDetails(d.id, clusterNodeId);
});
@@ -1021,15 +1009,13 @@
.classed('event', true)
// join node to its label
.append('rect')
- .attrs({
- 'x': 0,
- 'y': -8,
- 'height': 16,
- 'width': 14,
- 'opacity': 0,
- 'id': function (d) {
- return 'event-filler-' + d.id;
- }
+ .attr('x', 0)
+ .attr('y', -8)
+ .attr('height', 16)
+ .attr('width', 1)
+ .attr('opacity', 0)
+ .attr('id', function (d) {
+ return 'event-filler-' + d.id;
});
events
@@ -1037,24 +1023,20 @@
.classed('selected', function (d) {
return d.id === eventId;
})
- .attrs({
- 'r': 8,
- 'fill': '#aabbc3',
- 'stroke': '#000',
- 'stroke-width': 1.0,
- 'id': function (d) {
- return 'event-node-' + d.id;
- }
+ .attr('r', 8)
+ .attr('fill', '#aabbc3')
+ .attr('stroke', '#000')
+ .attr('stroke-width', 1.0)
+ .attr('id', function (d) {
+ return 'event-node-' + d.id;
});
events
.append('text')
- .attrs({
- 'id': function (d) {
- return 'event-text-' + d.id;
- },
- 'class': 'event-type'
+ .attr('id', function (d) {
+ return 'event-text-' + d.id;
})
+ .attr('class', 'event-type')
.classed('expand-parents', function (d) {
return d.eventType === 'SPAWN';
})
@@ -1083,10 +1065,9 @@
});
label.attr('transform', 'translate(10,-14)');
} else {
- label.text(d.eventType).attrs({
- 'x': 10,
- 'y': 4
- });
+ label.text(d.eventType)
+ .attr('x', 10)
+ .attr('y', 4);
}
});
};
@@ -1094,7 +1075,7 @@
// updates the ui
var update = function (provenanceTableCtrl) {
// update the node data
- nodes = nodes.data(nodeLookup.values(), function (d) {
+ nodes = nodes.data(Array.from(nodeLookup.values()), function (d) {
return d.id;
});
@@ -1149,7 +1130,7 @@
.style('opacity', 1);
// update the link data
- links = links.data(linkLookup.values(), function (d) {
+ links = links.data(Array.from(linkLookup.values()), function (d) {
return d.id;
});
@@ -1167,14 +1148,12 @@
// add new links
var linksEntered = links.enter()
.insert('path', '.node')
- .attrs({
- 'class': 'link',
- 'stroke-width': 1.5,
- 'stroke': '#000',
- 'fill': 'none',
- 'd': function (d) {
- return 'M' + d.source.x + ',' + d.source.y + 'L' + d.source.x + ',' + d.source.y;
- }
+ .attr('class', 'link')
+ .attr('stroke-width', 1.5)
+ .attr('stroke', '#000')
+ .attr('fill', 'none')
+ .attr('d', function (d) {
+ return 'M' + d.source.x + ',' + d.source.y + 'L' + d.source.x + ',' + d.source.y;
})
.style('opacity', 0);
@@ -1186,13 +1165,11 @@
links.transition()
.delay(200)
.duration(400)
- .attrs({
- 'marker-end': function (d) {
- return 'url(#' + d.target.type + ')';
- },
- 'd': function (d) {
- return 'M' + d.source.x + ',' + d.source.y + 'L' + d.target.x + ',' + d.target.y;
- }
+ .attr('marker-end', function (d) {
+ return 'url(#' + d.target.type + ')';
+ })
+ .attr('d', function (d) {
+ return 'M' + d.source.x + ',' + d.source.y + 'L' + d.target.x + ',' + d.target.y;
})
.style('opacity', 1);
};