From de98c76c7208e8155d8aa61f3eac1c49bc1a92ec Mon Sep 17 00:00:00 2001 From: Tom Shanley Date: Sun, 7 Jul 2019 09:19:51 +1200 Subject: [PATCH 01/12] fixed vulns --- package-lock.json | 385 +++++++++++++++++++++++++++++++--------------- package.json | 6 +- 2 files changed, 261 insertions(+), 130 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ed382e..ada540e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -100,6 +100,7 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, + "optional": true, "requires": { "arr-flatten": "^1.0.1" } @@ -108,25 +109,29 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "dev": true, + "optional": true }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "dev": true, + "optional": true }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true + "dev": true, + "optional": true }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "dev": true, + "optional": true }, "async-each": { "version": "1.0.1", @@ -139,7 +144,8 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true + "dev": true, + "optional": true }, "babel-cli": { "version": "6.26.0", @@ -825,6 +831,7 @@ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, + "optional": true, "requires": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -840,6 +847,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, + "optional": true, "requires": { "is-descriptor": "^1.0.0" } @@ -849,6 +857,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -858,6 +867,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -867,6 +877,7 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, + "optional": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -877,13 +888,15 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "dev": true, + "optional": true } } }, @@ -909,6 +922,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, + "optional": true, "requires": { "expand-range": "^1.8.1", "preserve": "^0.2.0", @@ -942,6 +956,7 @@ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, + "optional": true, "requires": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -958,7 +973,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -1037,6 +1053,7 @@ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, + "optional": true, "requires": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -1049,6 +1066,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -1057,7 +1075,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -1104,6 +1123,7 @@ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, + "optional": true, "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -1134,7 +1154,8 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", @@ -1167,7 +1188,8 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "dev": true, + "optional": true }, "core-js": { "version": "2.6.1", @@ -1217,9 +1239,9 @@ "integrity": "sha512-q0cW1RpvA5c5ma2rch62mX8AYaiLX0+bdaSM2wxSU9tXjU4DNvkx9qiUvjkuWCj3p22UO/hlPivujqMiR9PDzA==" }, "d3-shape": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.4.tgz", - "integrity": "sha512-izaz4fOpOnY3CD17hkZWNxbaN70sIGagLR/5jb6RS96Y+6VqX+q1BQf1av6QSBRdfULi3Gb8Js4CzG4+KAPjMg==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.5.tgz", + "integrity": "sha512-VKazVR3phgD+MUCldapHD7P9kcrvPcexeX/PkMJmkUov4JM8IxsSg1DvbYoYich9AtdTsa5nNk2++ImPiDiSxg==", "requires": { "d3-path": "1" } @@ -1243,7 +1265,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "dev": true, + "optional": true }, "deep-is": { "version": "0.1.3", @@ -1256,6 +1279,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, + "optional": true, "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -1266,6 +1290,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -1275,6 +1300,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -1284,6 +1310,7 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, + "optional": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -1294,13 +1321,15 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "dev": true, + "optional": true } } }, @@ -1651,6 +1680,7 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, + "optional": true, "requires": { "is-posix-bracket": "^0.1.0" } @@ -1660,6 +1690,7 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, + "optional": true, "requires": { "fill-range": "^2.1.0" } @@ -1669,6 +1700,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, + "optional": true, "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -1679,6 +1711,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, + "optional": true, "requires": { "is-plain-object": "^2.0.4" } @@ -1701,6 +1734,7 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, + "optional": true, "requires": { "is-extglob": "^1.0.0" } @@ -1746,13 +1780,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true + "dev": true, + "optional": true }, "fill-range": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, + "optional": true, "requires": { "is-number": "^2.1.0", "isobject": "^2.0.0", @@ -1787,13 +1823,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "dev": true, + "optional": true }, "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, + "optional": true, "requires": { "for-in": "^1.0.1" } @@ -1803,6 +1841,7 @@ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, + "optional": true, "requires": { "map-cache": "^0.2.2" } @@ -1820,14 +1859,14 @@ "dev": true }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "dev": true, "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { "abbrev": { @@ -1839,7 +1878,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1848,7 +1888,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "dev": true, "optional": true, @@ -1874,7 +1914,7 @@ } }, "chownr": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true @@ -1904,16 +1944,16 @@ "optional": true }, "debug": { - "version": "2.6.9", + "version": "4.1.1", "bundled": true, "dev": true, "optional": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "dev": true, "optional": true @@ -1962,7 +2002,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.3", "bundled": true, "dev": true, "optional": true, @@ -1982,12 +2022,12 @@ "optional": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.24", "bundled": true, "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { @@ -2052,17 +2092,17 @@ "optional": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.5", "bundled": true, "dev": true, "optional": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", + "version": "1.2.1", "bundled": true, "dev": true, "optional": true, @@ -2080,35 +2120,35 @@ } }, "ms": { - "version": "2.0.0", + "version": "2.1.1", "bundled": true, "dev": true, "optional": true }, "needle": { - "version": "2.2.0", + "version": "2.3.0", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^2.1.2", + "debug": "^4.1.0", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.12.0", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" @@ -2125,13 +2165,13 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.0.6", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.4.1", "bundled": true, "dev": true, "optional": true, @@ -2208,12 +2248,12 @@ "optional": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -2243,18 +2283,19 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2269,7 +2310,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.7.0", "bundled": true, "dev": true, "optional": true @@ -2310,6 +2351,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2321,17 +2363,17 @@ "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.8", "bundled": true, "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, @@ -2342,23 +2384,25 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { - "version": "3.0.2", + "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -2378,7 +2422,8 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "dev": true, + "optional": true }, "glob": { "version": "7.1.3", @@ -2399,6 +2444,7 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, + "optional": true, "requires": { "glob-parent": "^2.0.0", "is-glob": "^2.0.0" @@ -2409,6 +2455,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, + "optional": true, "requires": { "is-glob": "^2.0.0" } @@ -2445,6 +2492,7 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, + "optional": true, "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -2455,7 +2503,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -2464,6 +2513,7 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, + "optional": true, "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -2474,6 +2524,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -2483,6 +2534,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -2494,6 +2546,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -2657,6 +2710,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" } @@ -2681,7 +2735,8 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "dev": true, + "optional": true }, "is-builtin-module": { "version": "1.0.0", @@ -2697,6 +2752,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" } @@ -2706,6 +2762,7 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, + "optional": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -2716,7 +2773,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "dev": true, + "optional": true } } }, @@ -2724,13 +2782,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true + "dev": true, + "optional": true }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, + "optional": true, "requires": { "is-primitive": "^2.0.0" } @@ -2739,13 +2799,15 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "dev": true, + "optional": true }, "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "dev": true, + "optional": true }, "is-finite": { "version": "1.0.2", @@ -2770,6 +2832,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, + "optional": true, "requires": { "is-extglob": "^1.0.0" } @@ -2785,6 +2848,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" } @@ -2794,6 +2858,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "optional": true, "requires": { "isobject": "^3.0.1" }, @@ -2802,7 +2867,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -2810,13 +2876,15 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true + "dev": true, + "optional": true }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true + "dev": true, + "optional": true }, "is-promise": { "version": "2.1.0", @@ -2860,6 +2928,7 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, + "optional": true, "requires": { "isarray": "1.0.0" } @@ -2871,9 +2940,9 @@ "dev": true }, "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -2909,6 +2978,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -2971,25 +3041,27 @@ } }, "magic-string": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", - "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", + "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.1" + "sourcemap-codec": "^1.4.4" } }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "dev": true, + "optional": true }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, + "optional": true, "requires": { "object-visit": "^1.0.0" } @@ -2998,13 +3070,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true + "dev": true, + "optional": true }, "micromatch": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, + "optional": true, "requires": { "arr-diff": "^2.0.0", "array-unique": "^0.2.1", @@ -3047,6 +3121,7 @@ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, + "optional": true, "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -3057,6 +3132,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, + "optional": true, "requires": { "is-plain-object": "^2.0.4" } @@ -3085,9 +3161,9 @@ "dev": true }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, @@ -3163,6 +3239,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, + "optional": true, "requires": { "remove-trailing-separator": "^1.0.1" } @@ -3184,6 +3261,7 @@ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, + "optional": true, "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -3195,6 +3273,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -3206,6 +3285,7 @@ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, + "optional": true, "requires": { "isobject": "^3.0.0" }, @@ -3214,7 +3294,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -3223,6 +3304,7 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, + "optional": true, "requires": { "for-own": "^0.1.4", "is-extendable": "^0.1.1" @@ -3233,6 +3315,7 @@ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, + "optional": true, "requires": { "isobject": "^3.0.1" }, @@ -3241,7 +3324,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -3314,6 +3398,7 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, + "optional": true, "requires": { "glob-base": "^0.3.0", "is-dotfile": "^1.0.0", @@ -3334,7 +3419,8 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "dev": true, + "optional": true }, "path-exists": { "version": "2.1.0", @@ -3418,7 +3504,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true + "dev": true, + "optional": true }, "private": { "version": "0.1.8", @@ -3449,6 +3536,7 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", "dev": true, + "optional": true, "requires": { "is-number": "^4.0.0", "kind-of": "^6.0.0", @@ -3459,13 +3547,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true + "dev": true, + "optional": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "dev": true, + "optional": true } } }, @@ -3528,7 +3618,8 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "dev": true, + "optional": true }, "braces": { "version": "2.3.2", @@ -3791,7 +3882,8 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "dev": true, + "optional": true }, "micromatch": { "version": "3.1.10", @@ -3845,6 +3937,7 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, + "optional": true, "requires": { "is-equal-shallow": "^0.1.3" } @@ -3854,6 +3947,7 @@ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, + "optional": true, "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" @@ -3903,19 +3997,22 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true + "dev": true, + "optional": true }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true + "dev": true, + "optional": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "dev": true, + "optional": true }, "repeating": { "version": "2.0.1", @@ -3967,7 +4064,8 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true + "dev": true, + "optional": true }, "restore-cursor": { "version": "2.0.0", @@ -3983,7 +4081,8 @@ "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "dev": true, + "optional": true }, "rimraf": { "version": "2.6.3", @@ -4014,31 +4113,39 @@ } }, "rollup-plugin-commonjs": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.0.tgz", - "integrity": "sha512-0RM5U4Vd6iHjL6rLvr3lKBwnPsaVml+qxOGaaNUWN1lSq6S33KhITOfHmvxV3z2vy9Mk4t0g4rNlVaJJsNQPWA==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz", + "integrity": "sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w==", "dev": true, "requires": { - "estree-walker": "^0.5.2", - "magic-string": "^0.25.1", - "resolve": "^1.8.1", - "rollup-pluginutils": "^2.3.3" + "estree-walker": "^0.6.0", + "magic-string": "^0.25.2", + "resolve": "^1.10.0", + "rollup-pluginutils": "^2.6.0" }, "dependencies": { "estree-walker": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", - "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", "dev": true }, + "resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, "rollup-pluginutils": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz", - "integrity": "sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", + "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", "dev": true, "requires": { - "estree-walker": "^0.5.2", - "micromatch": "^2.3.11" + "estree-walker": "^0.6.1" } } } @@ -4107,6 +4214,7 @@ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, + "optional": true, "requires": { "ret": "~0.1.10" } @@ -4134,6 +4242,7 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -4146,6 +4255,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -4201,6 +4311,7 @@ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, + "optional": true, "requires": { "base": "^0.11.1", "debug": "^2.2.0", @@ -4217,6 +4328,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -4226,6 +4338,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -4297,7 +4410,8 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "dev": true, + "optional": true } } }, @@ -4322,6 +4436,7 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "dev": true, + "optional": true, "requires": { "atob": "^2.1.1", "decode-uri-component": "^0.2.0", @@ -4343,12 +4458,13 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true + "dev": true, + "optional": true }, "sourcemap-codec": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", - "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", + "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", "dev": true }, "spdx-correct": { @@ -4388,6 +4504,7 @@ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, + "optional": true, "requires": { "extend-shallow": "^3.0.0" } @@ -4403,6 +4520,7 @@ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, + "optional": true, "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -4413,6 +4531,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -4592,6 +4711,7 @@ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2" } @@ -4601,6 +4721,7 @@ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, + "optional": true, "requires": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -4653,19 +4774,19 @@ "dev": true }, "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", + "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", "dev": true, "requires": { - "commander": "~2.17.1", + "commander": "~2.20.0", "source-map": "~0.6.1" }, "dependencies": { "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", "dev": true }, "source-map": { @@ -4681,6 +4802,7 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, + "optional": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -4693,6 +4815,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -4702,6 +4825,7 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -4716,6 +4840,7 @@ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, + "optional": true, "requires": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -4726,6 +4851,7 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, + "optional": true, "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -4737,6 +4863,7 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, + "optional": true, "requires": { "isarray": "1.0.0" } @@ -4747,13 +4874,15 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true + "dev": true, + "optional": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "optional": true } } }, @@ -4761,13 +4890,15 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true + "dev": true, + "optional": true }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true + "dev": true, + "optional": true }, "user-home": { "version": "1.1.1", diff --git a/package.json b/package.json index 6187c3a..26a3b0c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "d3-sankey-circular", - "version": "0.33.0", + "version": "0.34.0", "description": "D3 sankey with circular links", "author": "Tom Shanley", "license": "MIT", @@ -27,9 +27,9 @@ "rimraf": "^2.6.2", "rollup": "^0.59.4", "rollup-plugin-babel": "^3.0.4", - "rollup-plugin-commonjs": "^9.1.3", + "rollup-plugin-commonjs": "^9.3.4", "rollup-plugin-node-resolve": "^3.3.0", - "uglify-js": "^3.1.3" + "uglify-js": "^3.6.0" }, "babel": { "presets": [ From 3fd77bd09dae35ccf12b1cfa5c03058616b5de3b Mon Sep 17 00:00:00 2001 From: Peter Uithoven Date: Fri, 6 Sep 2019 15:52:45 +0200 Subject: [PATCH 02/12] nodeSort --- dist/d3-sankey-circular.es.js | 57 ++++++++++++++++++---------------- dist/d3-sankey-circular.js | 57 ++++++++++++++++++---------------- package-lock.json | 2 +- src/sankeyCircular.js | 58 +++++++++++++++++++---------------- 4 files changed, 95 insertions(+), 79 deletions(-) diff --git a/dist/d3-sankey-circular.es.js b/dist/d3-sankey-circular.es.js index fe5fde3..333f5f3 100644 --- a/dist/d3-sankey-circular.es.js +++ b/dist/d3-sankey-circular.es.js @@ -43,31 +43,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /// https://github.com/tomshanley/d3-sankeyCircular-circular -// sort links' breadth (ie top to bottom in a column), based on their source nodes' breadths -function ascendingSourceBreadth(a, b) { - return ascendingBreadth(a.source, b.source) || a.index - b.index; -} - -// sort links' breadth (ie top to bottom in a column), based on their target nodes' breadths -function ascendingTargetBreadth(a, b) { - return ascendingBreadth(a.target, b.target) || a.index - b.index; -} - -// sort nodes' breadth (ie top to bottom in a column) -// if both nodes have circular links, or both don't have circular links, then sort by the top (y0) of the node -// else push nodes that have top circular links to the top, and nodes that have bottom circular links to the bottom -function ascendingBreadth(a, b) { - if (a.partOfCycle === b.partOfCycle) { - return a.y0 - b.y0; - } else { - if (a.circularLinkType === 'top' || b.circularLinkType === 'bottom') { - return -1; - } else { - return 1; - } - } -} - // return the value of a node or link function value(d) { return d.value; @@ -139,7 +114,8 @@ function sankeyCircular () { iterations = 32, circularLinkGap = 2, paddingRatio, - sortNodes = null; + sortNodes = null, + nodeSort = null; function sankeyCircular() { var graph = { @@ -195,6 +171,31 @@ function sankeyCircular () { return graph; } // end of sankeyCircular function + // sort links' breadth (ie top to bottom in a column), based on their source nodes' breadths + function ascendingSourceBreadth(a, b) { + return ascendingBreadth(a.source, b.source) || a.index - b.index; + } + + // sort links' breadth (ie top to bottom in a column), based on their target nodes' breadths + function ascendingTargetBreadth(a, b) { + return ascendingBreadth(a.target, b.target) || a.index - b.index; + } + + // sort nodes' breadth (ie top to bottom in a column) + // if both nodes have circular links, or both don't have circular links, then sort by the top (y0) of the node + // else push nodes that have top circular links to the top, and nodes that have bottom circular links to the bottom + function ascendingBreadth(a, b) { + if (a.partOfCycle === b.partOfCycle) { + if (nodeSort) return nodeSort(a, b) || a.y0 - b.y0; + return a.y0 - b.y0; + } else { + if (a.circularLinkType === 'top' || b.circularLinkType === 'bottom') { + return -1; + } else { + return 1; + } + } + } // Set the sankeyCircular parameters // nodeID, nodeAlign, nodeWidth, nodePadding, nodes, links, size, extent, iterations, nodePaddingRatio, circularLinkGap @@ -246,6 +247,10 @@ function sankeyCircular () { return arguments.length ? (sortNodes = _, sankeyCircular) : sortNodes; }; + sankeyCircular.nodeSort = function (_) { + return arguments.length ? (nodeSort = _, sankeyCircular) : nodeSort; + }; + sankeyCircular.update = function (graph) { // 5. Calculate the nodes' depth based on the incoming and outgoing links // Sets the nodes': diff --git a/dist/d3-sankey-circular.js b/dist/d3-sankey-circular.js index 5ec08f5..fb12fd9 100644 --- a/dist/d3-sankey-circular.js +++ b/dist/d3-sankey-circular.js @@ -46,31 +46,6 @@ /// https://github.com/tomshanley/d3-sankeyCircular-circular - // sort links' breadth (ie top to bottom in a column), based on their source nodes' breadths - function ascendingSourceBreadth(a, b) { - return ascendingBreadth(a.source, b.source) || a.index - b.index; - } - - // sort links' breadth (ie top to bottom in a column), based on their target nodes' breadths - function ascendingTargetBreadth(a, b) { - return ascendingBreadth(a.target, b.target) || a.index - b.index; - } - - // sort nodes' breadth (ie top to bottom in a column) - // if both nodes have circular links, or both don't have circular links, then sort by the top (y0) of the node - // else push nodes that have top circular links to the top, and nodes that have bottom circular links to the bottom - function ascendingBreadth(a, b) { - if (a.partOfCycle === b.partOfCycle) { - return a.y0 - b.y0; - } else { - if (a.circularLinkType === 'top' || b.circularLinkType === 'bottom') { - return -1; - } else { - return 1; - } - } - } - // return the value of a node or link function value(d) { return d.value; @@ -142,7 +117,8 @@ iterations = 32, circularLinkGap = 2, paddingRatio, - sortNodes = null; + sortNodes = null, + nodeSort = null; function sankeyCircular() { var graph = { @@ -198,6 +174,31 @@ return graph; } // end of sankeyCircular function + // sort links' breadth (ie top to bottom in a column), based on their source nodes' breadths + function ascendingSourceBreadth(a, b) { + return ascendingBreadth(a.source, b.source) || a.index - b.index; + } + + // sort links' breadth (ie top to bottom in a column), based on their target nodes' breadths + function ascendingTargetBreadth(a, b) { + return ascendingBreadth(a.target, b.target) || a.index - b.index; + } + + // sort nodes' breadth (ie top to bottom in a column) + // if both nodes have circular links, or both don't have circular links, then sort by the top (y0) of the node + // else push nodes that have top circular links to the top, and nodes that have bottom circular links to the bottom + function ascendingBreadth(a, b) { + if (a.partOfCycle === b.partOfCycle) { + if (nodeSort) return nodeSort(a, b) || a.y0 - b.y0; + return a.y0 - b.y0; + } else { + if (a.circularLinkType === 'top' || b.circularLinkType === 'bottom') { + return -1; + } else { + return 1; + } + } + } // Set the sankeyCircular parameters // nodeID, nodeAlign, nodeWidth, nodePadding, nodes, links, size, extent, iterations, nodePaddingRatio, circularLinkGap @@ -249,6 +250,10 @@ return arguments.length ? (sortNodes = _, sankeyCircular) : sortNodes; }; + sankeyCircular.nodeSort = function (_) { + return arguments.length ? (nodeSort = _, sankeyCircular) : nodeSort; + }; + sankeyCircular.update = function (graph) { // 5. Calculate the nodes' depth based on the incoming and outgoing links // Sets the nodes': diff --git a/package-lock.json b/package-lock.json index ada540e..099b5e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "d3-sankey-circular", - "version": "0.33.0", + "version": "0.34.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/sankeyCircular.js b/src/sankeyCircular.js index b7d36aa..c0e81db 100644 --- a/src/sankeyCircular.js +++ b/src/sankeyCircular.js @@ -7,31 +7,6 @@ import constant from "./constant"; import {linkHorizontal} from "d3-shape"; import findCircuits from "elementary-circuits-directed-graph"; - // sort links' breadth (ie top to bottom in a column), based on their source nodes' breadths - function ascendingSourceBreadth (a, b) { - return ascendingBreadth(a.source, b.source) || a.index - b.index - } - - // sort links' breadth (ie top to bottom in a column), based on their target nodes' breadths - function ascendingTargetBreadth (a, b) { - return ascendingBreadth(a.target, b.target) || a.index - b.index - } - - // sort nodes' breadth (ie top to bottom in a column) - // if both nodes have circular links, or both don't have circular links, then sort by the top (y0) of the node - // else push nodes that have top circular links to the top, and nodes that have bottom circular links to the bottom - function ascendingBreadth (a, b) { - if (a.partOfCycle === b.partOfCycle) { - return a.y0 - b.y0 - } else { - if (a.circularLinkType === 'top' || b.circularLinkType === 'bottom') { - return -1 - } else { - return 1 - } - } - } - // return the value of a node or link function value (d) { return d.value @@ -101,7 +76,8 @@ import findCircuits from "elementary-circuits-directed-graph"; iterations = 32, circularLinkGap = 2, paddingRatio, - sortNodes = null + sortNodes = null, + nodeSort = null; function sankeyCircular () { var graph = { @@ -159,6 +135,32 @@ import findCircuits from "elementary-circuits-directed-graph"; return graph } // end of sankeyCircular function + // sort links' breadth (ie top to bottom in a column), based on their source nodes' breadths + function ascendingSourceBreadth (a, b) { + return ascendingBreadth(a.source, b.source) || a.index - b.index + } + + // sort links' breadth (ie top to bottom in a column), based on their target nodes' breadths + function ascendingTargetBreadth (a, b) { + return ascendingBreadth(a.target, b.target) || a.index - b.index + } + + // sort nodes' breadth (ie top to bottom in a column) + // if both nodes have circular links, or both don't have circular links, then sort by the top (y0) of the node + // else push nodes that have top circular links to the top, and nodes that have bottom circular links to the bottom + function ascendingBreadth (a, b) { + if (a.partOfCycle === b.partOfCycle) { + if (nodeSort) return nodeSort(a, b) || a.y0 - b.y0; + return a.y0 - b.y0 + } else { + if (a.circularLinkType === 'top' || b.circularLinkType === 'bottom') { + return -1 + } else { + return 1 + } + } + } + // Set the sankeyCircular parameters // nodeID, nodeAlign, nodeWidth, nodePadding, nodes, links, size, extent, iterations, nodePaddingRatio, circularLinkGap @@ -224,6 +226,10 @@ import findCircuits from "elementary-circuits-directed-graph"; return arguments.length ? ((sortNodes = _), sankeyCircular) : sortNodes } + sankeyCircular.nodeSort = function(_) { + return arguments.length ? (nodeSort = _, sankeyCircular) : nodeSort; + }; + sankeyCircular.update = function(graph) { // 5. Calculate the nodes' depth based on the incoming and outgoing links // Sets the nodes': From f939fcc3777a5a571ed5673a293f33264994160f Mon Sep 17 00:00:00 2001 From: Peter Uithoven Date: Mon, 9 Sep 2019 10:31:58 +0200 Subject: [PATCH 03/12] Readme update --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 6b9c8d6..73ba02a 100644 --- a/README.md +++ b/README.md @@ -187,6 +187,10 @@ If *iterations* is specified, sets the number of relaxation iterations when [gen If *circularLinkGap* is specified, sets the gap (in pixels) between circular links that travel next to each other. If *circularLinkGap*, it defaults to 2. +# sankey.nodeSort([nodeSort]) [<>](https://github.com/d3/d3-sankey/blob/master/src/sankey.js#L151 "Source") +If *nodeSort* is specified, sets the node sort method and returns this Sankey generator. If *sort* is not specified, returns the current node sort method, which defaults to *undefined*, indicating that vertical order of nodes within each column will be determined automatically by the layout. If *sort* is null, the order is fixed by the input. Otherwise, the specified *sort* function determines the order; the function is passed two nodes, and must return a value less than 0 if the first node should be above the second, and a value greater than 0 if the second node should be above the first, or 0 if the order is not specified. +Sorting is only applied to nodes that both part or not part of a circular loop. When the result of a nodeSort is 0 then nodes are sorted by the top (y0) of the node + ### Alignments See [*sankey*.nodeAlign](#sankey_nodeAlign). From a5ef1c908f71cbf67f4afa100e22bc9e707c2d0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2019 21:10:28 +0000 Subject: [PATCH 04/12] Bump mixin-deep from 1.3.1 to 1.3.2 Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2. - [Release notes](https://github.com/jonschlinkert/mixin-deep/releases) - [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2) Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index ada540e..84d6bab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "d3-sankey-circular", - "version": "0.33.0", + "version": "0.34.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -3117,9 +3117,9 @@ "dev": true }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "optional": true, "requires": { From 29bedddb0ee1b443a8a9db878b4873f01976dac6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2020 22:45:58 +0000 Subject: [PATCH 05/12] Bump lodash from 4.17.11 to 4.17.19 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.19. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.19) Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index ada540e..fdc814d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "d3-sankey-circular", - "version": "0.33.0", + "version": "0.34.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -3016,9 +3016,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, "loose-envify": { From 51001ce34c3586506e6df23f91fda293e8797508 Mon Sep 17 00:00:00 2001 From: KQLLLY Date: Tue, 23 Feb 2021 15:55:42 +0200 Subject: [PATCH 06/12] added forced sorting by columns; fix #46 --- dist/d3-sankey-circular.es.js | 2 +- dist/d3-sankey-circular.js | 2 +- src/sankeyCircular.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/d3-sankey-circular.es.js b/dist/d3-sankey-circular.es.js index fe5fde3..a7d9ee0 100644 --- a/dist/d3-sankey-circular.es.js +++ b/dist/d3-sankey-circular.es.js @@ -440,7 +440,7 @@ function sankeyCircular () { // assign column numbers, and get max value graph.nodes.forEach(function (node) { - node.column = Math.floor(align.call(null, node, x)); + node.column = sortNodes !== null ? node[sortNodes] : Math.floor(align.call(null, node, x)); }); } diff --git a/dist/d3-sankey-circular.js b/dist/d3-sankey-circular.js index 5ec08f5..86b9edc 100644 --- a/dist/d3-sankey-circular.js +++ b/dist/d3-sankey-circular.js @@ -443,7 +443,7 @@ // assign column numbers, and get max value graph.nodes.forEach(function (node) { - node.column = Math.floor(align.call(null, node, x)); + node.column = sortNodes !== null ? node[sortNodes] : Math.floor(align.call(null, node, x)); }); } diff --git a/src/sankeyCircular.js b/src/sankeyCircular.js index b7d36aa..ff73507 100644 --- a/src/sankeyCircular.js +++ b/src/sankeyCircular.js @@ -433,7 +433,7 @@ import findCircuits from "elementary-circuits-directed-graph"; // assign column numbers, and get max value graph.nodes.forEach(function (node) { - node.column = Math.floor(align.call(null, node, x)) + node.column = sortNodes !== null ? node[sortNodes] : Math.floor(align.call(null, node, x)) }) From 95c799a2ee3bb131510dec500cd6bfe7d2c5e2bf Mon Sep 17 00:00:00 2001 From: KQLLLY Date: Tue, 23 Feb 2021 15:58:06 +0200 Subject: [PATCH 07/12] fixed overlapping of nodes with forced sorting --- dist/d3-sankey-circular.es.js | 40 ++++++++++++++++++++++++++++++++++- dist/d3-sankey-circular.js | 40 ++++++++++++++++++++++++++++++++++- src/sankeyCircular.js | 39 +++++++++++++++++++++++++++++++++- 3 files changed, 116 insertions(+), 3 deletions(-) diff --git a/dist/d3-sankey-circular.es.js b/dist/d3-sankey-circular.es.js index a7d9ee0..4ab0583 100644 --- a/dist/d3-sankey-circular.es.js +++ b/dist/d3-sankey-circular.es.js @@ -186,7 +186,10 @@ function sankeyCircular () { sortTargetLinks(graph, y1, id); } - // 8.1 Adjust node and link positions back to fill height of chart area if compressed + // 8.1 Fix nodes overlapping after sortNodes + resolveNodesOverlap(graph, y0, py); + + // 8.2 Adjust node and link positions back to fill height of chart area if compressed fillHeight(graph, y0, y1); // 9. Calculate visually appealling path for the circular paths, and create the "d" string @@ -1487,4 +1490,39 @@ function fillHeight(graph, y0, y1) { } } +function resolveNodesOverlap(graph, y0, py) { + var columns = nest().key(function (d) { + return d.column; + }).sortKeys(ascending).entries(graph.nodes).map(function (d) { + return d.values; + }); + + columns.forEach(function (nodes) { + var node, + dy, + y = y0, + n = nodes.length, + i; + // Push any overlapping nodes down. + nodes.sort(ascendingBreadth); + + for (i = 0; i < n; ++i) { + node = nodes[i]; + dy = y - node.y0; + + if (dy > 0) { + node.y0 += dy; + node.y1 += dy; + node.targetLinks.forEach(function (l) { + l.y1 = l.y1 + dy; + }); + node.sourceLinks.forEach(function (l) { + l.y0 = l.y0 + dy; + }); + } + y = node.y1 + py; + } + }); +} + export { sankeyCircular, center as sankeyCenter, left as sankeyLeft, right as sankeyRight, justify as sankeyJustify }; diff --git a/dist/d3-sankey-circular.js b/dist/d3-sankey-circular.js index 86b9edc..9de8616 100644 --- a/dist/d3-sankey-circular.js +++ b/dist/d3-sankey-circular.js @@ -189,7 +189,10 @@ sortTargetLinks(graph, y1, id); } - // 8.1 Adjust node and link positions back to fill height of chart area if compressed + // 8.1 Fix nodes overlapping after sortNodes + resolveNodesOverlap(graph, y0, py); + + // 8.2 Adjust node and link positions back to fill height of chart area if compressed fillHeight(graph, y0, y1); // 9. Calculate visually appealling path for the circular paths, and create the "d" string @@ -1490,6 +1493,41 @@ } } + function resolveNodesOverlap(graph, y0, py) { + var columns = d3Collection.nest().key(function (d) { + return d.column; + }).sortKeys(d3Array.ascending).entries(graph.nodes).map(function (d) { + return d.values; + }); + + columns.forEach(function (nodes) { + var node, + dy, + y = y0, + n = nodes.length, + i; + // Push any overlapping nodes down. + nodes.sort(ascendingBreadth); + + for (i = 0; i < n; ++i) { + node = nodes[i]; + dy = y - node.y0; + + if (dy > 0) { + node.y0 += dy; + node.y1 += dy; + node.targetLinks.forEach(function (l) { + l.y1 = l.y1 + dy; + }); + node.sourceLinks.forEach(function (l) { + l.y0 = l.y0 + dy; + }); + } + y = node.y1 + py; + } + }); + } + exports.sankeyCircular = sankeyCircular; exports.sankeyCenter = center; exports.sankeyLeft = left; diff --git a/src/sankeyCircular.js b/src/sankeyCircular.js index ff73507..3237690 100644 --- a/src/sankeyCircular.js +++ b/src/sankeyCircular.js @@ -150,7 +150,10 @@ import findCircuits from "elementary-circuits-directed-graph"; } - // 8.1 Adjust node and link positions back to fill height of chart area if compressed + // 8.1 Fix nodes overlapping after sortNodes + resolveNodesOverlap(graph, y0, py) + + // 8.2 Adjust node and link positions back to fill height of chart area if compressed fillHeight(graph, y0, y1) // 9. Calculate visually appealling path for the circular paths, and create the "d" string @@ -1671,3 +1674,37 @@ import findCircuits from "elementary-circuits-directed-graph"; } } + + function resolveNodesOverlap(graph, y0, py){ + var columns = nest() + .key(function (d) { + return d.column + }) + .sortKeys(ascending) + .entries(graph.nodes) + .map(function (d) { + return d.values + }) + + columns.forEach(function (nodes) { + var node, dy, y = y0, n = nodes.length, i + // Push any overlapping nodes down. + nodes.sort(ascendingBreadth) + + for (i = 0; i < n; ++i) { + node = nodes[i] + dy = y - node.y0 + + if (dy > 0) { + node.y0 += dy + node.y1 += dy + node.targetLinks.forEach(function (l) { + l.y1 = l.y1 + dy + }) + node.sourceLinks.forEach(function (l) { + l.y0 = l.y0 + dy + }) + } + y = node.y1 + py + }}) + } From 772ae498fbda32be1c208552b395ffd7844fd735 Mon Sep 17 00:00:00 2001 From: KQLLLY Date: Tue, 23 Feb 2021 15:59:25 +0200 Subject: [PATCH 08/12] package-lock.json updated --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index ada540e..099b5e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "d3-sankey-circular", - "version": "0.33.0", + "version": "0.34.0", "lockfileVersion": 1, "requires": true, "dependencies": { From 6b83bdfc0f6767f34413cae7689184d2ca670286 Mon Sep 17 00:00:00 2001 From: KQLLLY Date: Tue, 23 Feb 2021 16:56:46 +0200 Subject: [PATCH 09/12] add export addCircularPathData --- dist/d3-sankey-circular.es.js | 2 +- dist/d3-sankey-circular.js | 1 + src/index.js | 9 ++++++--- src/sankeyCircular.js | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/dist/d3-sankey-circular.es.js b/dist/d3-sankey-circular.es.js index fe5fde3..b596d95 100644 --- a/dist/d3-sankey-circular.es.js +++ b/dist/d3-sankey-circular.es.js @@ -1487,4 +1487,4 @@ function fillHeight(graph, y0, y1) { } } -export { sankeyCircular, center as sankeyCenter, left as sankeyLeft, right as sankeyRight, justify as sankeyJustify }; +export { sankeyCircular, addCircularPathData, center as sankeyCenter, left as sankeyLeft, right as sankeyRight, justify as sankeyJustify }; diff --git a/dist/d3-sankey-circular.js b/dist/d3-sankey-circular.js index 5ec08f5..86a68a2 100644 --- a/dist/d3-sankey-circular.js +++ b/dist/d3-sankey-circular.js @@ -1491,6 +1491,7 @@ } exports.sankeyCircular = sankeyCircular; + exports.addCircularPathData = addCircularPathData; exports.sankeyCenter = center; exports.sankeyLeft = left; exports.sankeyRight = right; diff --git a/src/index.js b/src/index.js index f65891a..c852e3d 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,10 @@ -export { default as sankeyCircular } from './sankeyCircular.js' +export { + default as sankeyCircular, + addCircularPathData, +} from "./sankeyCircular.js"; export { center as sankeyCenter, left as sankeyLeft, right as sankeyRight, - justify as sankeyJustify -} from './align' + justify as sankeyJustify, +} from "./align"; diff --git a/src/sankeyCircular.js b/src/sankeyCircular.js index b7d36aa..d17339a 100644 --- a/src/sankeyCircular.js +++ b/src/sankeyCircular.js @@ -872,7 +872,7 @@ import findCircuits from "elementary-circuits-directed-graph"; } // calculate the optimum path for a link to reduce overlaps - function addCircularPathData (graph, circularLinkGap, y1, id) { + export function addCircularPathData (graph, circularLinkGap, y1, id) { //var baseRadius = 10 var buffer = 5 //var verticalMargin = 25 From d4bb52a1b0b2bf15e72370e80281cb76ba97b7a3 Mon Sep 17 00:00:00 2001 From: KQLLLY Date: Tue, 23 Feb 2021 18:01:08 +0200 Subject: [PATCH 10/12] formatting json data --- example/example-data.js | 1184 +++++++++++++++++++-------------------- 1 file changed, 590 insertions(+), 594 deletions(-) diff --git a/example/example-data.js b/example/example-data.js index 42bcb13..4f1e2c5 100644 --- a/example/example-data.js +++ b/example/example-data.js @@ -1,608 +1,604 @@ let data2 = { - "nodes": [ - { "name": "startA", "col": 0 }, - { "name": "startB", "col": 0 }, - { "name": "process1", "col": 1 }, - { "name": "process2", "col": 1 }, - { "name": "process3", "col": 2 }, - { "name": "process4", "col": 2 }, - { "name": "process5", "col": 3 }, - { "name": "process6", "col": 4 }, - { "name": "process7", "col": 5 }, - { "name": "process8", "col": 6 }, - { "name": "process9", "col": 7 }, - { "name": "process10", "col": 6 }, - { "name": "process11", "col": 8 }, - { "name": "process12", "col": 6 }, - { "name": "process13", "col": 9 }, - { "name": "process14", "col": 9 }, - { "name": "process15", "col": 8 }, - { "name": "process16", "col": 9 }, - { "name": "finishA", "col": 10 }, - { "name": "finishB", "col": 10 } - ], - "links": [ - { "source": "startA", "target": "process8", "value": 20, "optimal": "yes" }, - { "source": "startA", "target": "process5", "value": 20, "optimal": "yes" }, - { "source": "startA", "target": "process6", "value": 20, "optimal": "yes" }, - { "source": "startB", "target": "process1", "value": 15, "optimal": "yes" }, - { "source": "startB", "target": "process5", "value": 15, "optimal": "yes" }, - { "source": "process1", "target": "process4", "value": 30, "optimal": "yes" }, - { "source": "process4", "target": "process1", "value": 10, "optimal": "yes" }, - { "source": "process2", "target": "process7", "value": 35, "optimal": "yes" }, - { "source": "process1", "target": "process3", "value": 20, "optimal": "yes" }, - { "source": "process5", "target": "process1", "value": 20, "optimal": "yes" }, - { "source": "process6", "target": "startA", "value": 5, "optimal": "yes" }, - { "source": "process4", "target": "process2", "value": 5, "optimal": "yes" }, - { "source": "process6", "target": "process8", "value": 15, "optimal": "yes" }, - { "source": "process4", "target": "startB", "value": 5, "optimal": "yes" }, - { "source": "process3", "target": "process2", "value": 15, "optimal": "yes" }, - { "source": "process3", "target": "startB", "value": 5, "optimal": "yes" }, - { "source": "process15", "target": "process13", "value": 10, "optimal": "yes" }, - { "source": "process13", "target": "process9", "value": 10, "optimal": "yes" }, - { "source": "process7", "target": "startB", "value": 20, "optimal": "yes" }, - { "source": "process8", "target": "process1", "value": 10, "optimal": "yes" }, - { "source": "process8", "target": "process16", "value": 10, "optimal": "yes" }, - { "source": "process16", "target": "process9", "value": 10, "optimal": "yes" }, - { "source": "process8", "target": "process11", "value": 25, "optimal": "yes" }, - { "source": "process11", "target": "process10", "value": 20, "optimal": "yes" }, - { "source": "process4", "target": "process12", "value": 10, "optimal": "yes" }, - { "source": "process12", "target": "process11", "value": 10, "optimal": "yes" }, - { "source": "process7", "target": "process15", "value": 15, "optimal": "yes" }, - { "source": "process15", "target": "process14", "value": 10, "optimal": "yes" }, - { "source": "process10", "target": "process13", "value": 10, "optimal": "yes" }, - { "source": "process10", "target": "process16", "value": 10, "optimal": "yes" }, - { "source": "process14", "target": "finishB", "value": 10, "optimal": "yes" }, - { "source": "process9", "target": "finishA", "value": 10, "optimal": "yes" }, - { "source": "process16", "target": "process8", "value": 10, "optimal": "yes" }, - { "source": "process9", "target": "finishB", "value": 10, "optimal": "yes" }, - { "source": "process15", "target": "finishB", "value": 10, "optimal": "yes" }, - { "source": "process15", "target": "finishA", "value": 10, "optimal": "yes" }, - { "source": "process11", "target": "process15", "value": 25, "optimal": "yes" } - ] - }; + nodes: [ + { name: "startA", col: 0 }, + { name: "startB", col: 0 }, + { name: "process1", col: 1 }, + { name: "process2", col: 1 }, + { name: "process3", col: 2 }, + { name: "process4", col: 2 }, + { name: "process5", col: 3 }, + { name: "process6", col: 4 }, + { name: "process7", col: 5 }, + { name: "process8", col: 6 }, + { name: "process9", col: 7 }, + { name: "process10", col: 6 }, + { name: "process11", col: 8 }, + { name: "process12", col: 6 }, + { name: "process13", col: 9 }, + { name: "process14", col: 9 }, + { name: "process15", col: 8 }, + { name: "process16", col: 9 }, + { name: "finishA", col: 10 }, + { name: "finishB", col: 10 }, + ], + links: [ + { source: "startA", target: "process8", value: 20, optimal: "yes" }, + { source: "startA", target: "process5", value: 20, optimal: "yes" }, + { source: "startA", target: "process6", value: 20, optimal: "yes" }, + { source: "startB", target: "process1", value: 15, optimal: "yes" }, + { source: "startB", target: "process5", value: 15, optimal: "yes" }, + { source: "process1", target: "process4", value: 30, optimal: "yes" }, + { source: "process4", target: "process1", value: 10, optimal: "yes" }, + { source: "process2", target: "process7", value: 35, optimal: "yes" }, + { source: "process1", target: "process3", value: 20, optimal: "yes" }, + { source: "process5", target: "process1", value: 20, optimal: "yes" }, + { source: "process6", target: "startA", value: 5, optimal: "yes" }, + { source: "process4", target: "process2", value: 5, optimal: "yes" }, + { source: "process6", target: "process8", value: 15, optimal: "yes" }, + { source: "process4", target: "startB", value: 5, optimal: "yes" }, + { source: "process3", target: "process2", value: 15, optimal: "yes" }, + { source: "process3", target: "startB", value: 5, optimal: "yes" }, + { source: "process15", target: "process13", value: 10, optimal: "yes" }, + { source: "process13", target: "process9", value: 10, optimal: "yes" }, + { source: "process7", target: "startB", value: 20, optimal: "yes" }, + { source: "process8", target: "process1", value: 10, optimal: "yes" }, + { source: "process8", target: "process16", value: 10, optimal: "yes" }, + { source: "process16", target: "process9", value: 10, optimal: "yes" }, + { source: "process8", target: "process11", value: 25, optimal: "yes" }, + { source: "process11", target: "process10", value: 20, optimal: "yes" }, + { source: "process4", target: "process12", value: 10, optimal: "yes" }, + { source: "process12", target: "process11", value: 10, optimal: "yes" }, + { source: "process7", target: "process15", value: 15, optimal: "yes" }, + { source: "process15", target: "process14", value: 10, optimal: "yes" }, + { source: "process10", target: "process13", value: 10, optimal: "yes" }, + { source: "process10", target: "process16", value: 10, optimal: "yes" }, + { source: "process14", target: "finishB", value: 10, optimal: "yes" }, + { source: "process9", target: "finishA", value: 10, optimal: "yes" }, + { source: "process16", target: "process8", value: 10, optimal: "yes" }, + { source: "process9", target: "finishB", value: 10, optimal: "yes" }, + { source: "process15", target: "finishB", value: 10, optimal: "yes" }, + { source: "process15", target: "finishA", value: 10, optimal: "yes" }, + { source: "process11", target: "process15", value: 25, optimal: "yes" }, + ], +}; +let data1 = { + nodes: [ + { name: "start" }, + { name: "process0-0" }, + { name: "process0-1" }, + { name: "process0-2" }, + { name: "process0-3" }, + { name: "process0-4" }, + { name: "process0-5" }, + { name: "process0-6" }, + { name: "process0-7" }, + { name: "process0-8" }, + { name: "process0-9" }, + { name: "process1-0" }, + { name: "process1-1" }, + { name: "process1-2" }, + { name: "process1-3" }, + { name: "process1-4" }, + { name: "process1-5" }, + { name: "process1-6" }, + { name: "process1-7" }, + { name: "process1-8" }, + { name: "process1-9" }, + { name: "process2-0" }, + { name: "process2-1" }, + { name: "process2-2" }, + { name: "process2-3" }, + { name: "process2-4" }, + { name: "process2-5" }, + { name: "process2-6" }, + { name: "process2-7" }, + { name: "process2-8" }, + { name: "process2-9" }, + { name: "process3-0" }, + { name: "process3-1" }, + { name: "process3-2" }, + { name: "process3-3" }, + { name: "process3-4" }, + { name: "process3-5" }, + { name: "process3-6" }, + { name: "process3-7" }, + { name: "process3-8" }, + { name: "process3-9" }, + { name: "process4-0" }, + { name: "process4-1" }, + { name: "process4-2" }, + { name: "process4-3" }, + { name: "process4-4" }, + { name: "process4-5" }, + { name: "process4-6" }, + { name: "process4-7" }, + { name: "process4-8" }, + { name: "process4-9" }, + { name: "process5-0" }, + { name: "process5-1" }, + { name: "process5-2" }, + { name: "process5-3" }, + { name: "process5-4" }, + { name: "process5-5" }, + { name: "process5-6" }, + { name: "process5-7" }, + { name: "process5-8" }, + { name: "process5-9" }, + { name: "finish" }, + ], + links: [ + { source: "start", target: "process0-0", value: 3 }, + { source: "start", target: "process0-1", value: 1 }, + { source: "start", target: "process0-2", value: 3 }, + { source: "start", target: "process0-3", value: 5 }, + { source: "start", target: "process0-4", value: 4 }, + { source: "start", target: "process0-5", value: 2 }, + { source: "start", target: "process0-6", value: 5 }, + { source: "start", target: "process0-7", value: 5 }, + { source: "start", target: "process0-8", value: 1 }, + { source: "start", target: "process0-9", value: 1 }, + { source: "process0-0", target: "process1-0", value: 3 }, + { source: "process0-0", target: "process1-7", value: 1 }, + { source: "process0-0", target: "process1-3", value: 5 }, + { source: "process0-0", target: "process1-3", value: 2 }, + { source: "process0-0", target: "process1-6", value: 4 }, + { source: "process0-1", target: "process1-5", value: 4 }, + { source: "process0-1", target: "process1-7", value: 2 }, + { source: "process0-1", target: "process1-4", value: 1 }, + { source: "process0-1", target: "process1-3", value: 4 }, + { source: "process0-1", target: "process1-7", value: 1 }, + { source: "process0-2", target: "process1-1", value: 3 }, + { source: "process0-2", target: "process1-0", value: 4 }, + { source: "process0-2", target: "process1-2", value: 2 }, + { source: "process0-2", target: "process1-1", value: 3 }, + { source: "process0-2", target: "process1-8", value: 1 }, + { source: "process0-3", target: "process1-4", value: 3 }, + { source: "process0-3", target: "process1-8", value: 1 }, + { source: "process0-3", target: "process1-5", value: 4 }, + { source: "process0-3", target: "process1-2", value: 3 }, + { source: "process0-3", target: "process1-2", value: 2 }, + { source: "process0-4", target: "process1-6", value: 4 }, + { source: "process0-4", target: "process1-1", value: 3 }, + { source: "process0-4", target: "process1-5", value: 5 }, + { source: "process0-4", target: "process1-2", value: 5 }, + { source: "process0-4", target: "process1-9", value: 4 }, + { source: "process0-5", target: "process1-7", value: 4 }, + { source: "process0-5", target: "process1-9", value: 4 }, + { source: "process0-5", target: "process1-5", value: 1 }, + { source: "process0-5", target: "process1-5", value: 2 }, + { source: "process0-5", target: "process1-3", value: 4 }, + { source: "process0-6", target: "process1-6", value: 2 }, + { source: "process0-6", target: "process1-4", value: 5 }, + { source: "process0-6", target: "process1-0", value: 2 }, + { source: "process0-6", target: "process1-9", value: 2 }, + { source: "process0-6", target: "process1-5", value: 3 }, + { source: "process0-7", target: "process1-7", value: 1 }, + { source: "process0-7", target: "process1-9", value: 3 }, + { source: "process0-7", target: "process1-1", value: 4 }, + { source: "process0-7", target: "process1-2", value: 5 }, + { source: "process0-7", target: "process1-2", value: 3 }, + { source: "process0-8", target: "process1-7", value: 3 }, + { source: "process0-8", target: "process1-7", value: 3 }, + { source: "process0-8", target: "process1-0", value: 3 }, + { source: "process0-8", target: "process1-6", value: 5 }, + { source: "process0-8", target: "process1-0", value: 1 }, + { source: "process0-9", target: "process1-3", value: 5 }, + { source: "process0-9", target: "process1-8", value: 5 }, + { source: "process0-9", target: "process1-2", value: 5 }, + { source: "process0-9", target: "process1-5", value: 2 }, + { source: "process0-9", target: "process1-7", value: 4 }, + { source: "process1-0", target: "process2-9", value: 3 }, + { source: "process1-0", target: "process2-4", value: 5 }, + { source: "process1-0", target: "process2-3", value: 1 }, + { source: "process1-0", target: "process2-0", value: 4 }, + { source: "process1-0", target: "process2-1", value: 1 }, + { source: "process1-1", target: "process2-4", value: 3 }, + { source: "process1-1", target: "process2-0", value: 3 }, + { source: "process1-1", target: "process2-5", value: 1 }, + { source: "process1-1", target: "process2-2", value: 4 }, + { source: "process1-1", target: "process2-9", value: 5 }, + { source: "process1-2", target: "process2-6", value: 3 }, + { source: "process1-2", target: "process2-1", value: 1 }, + { source: "process1-2", target: "process2-4", value: 4 }, + { source: "process1-2", target: "process2-9", value: 1 }, + { source: "process1-2", target: "process2-8", value: 3 }, + { source: "process1-3", target: "process2-5", value: 4 }, + { source: "process1-3", target: "process2-7", value: 5 }, + { source: "process1-3", target: "process2-4", value: 4 }, + { source: "process1-3", target: "process2-7", value: 5 }, + { source: "process1-3", target: "process2-0", value: 3 }, + { source: "process1-4", target: "process2-8", value: 3 }, + { source: "process1-4", target: "process2-7", value: 3 }, + { source: "process1-4", target: "process2-4", value: 2 }, + { source: "process1-4", target: "process2-2", value: 5 }, + { source: "process1-4", target: "process2-9", value: 3 }, + { source: "process1-5", target: "process2-2", value: 1 }, + { source: "process1-5", target: "process2-8", value: 5 }, + { source: "process1-5", target: "process2-3", value: 3 }, + { source: "process1-5", target: "process2-5", value: 4 }, + { source: "process1-5", target: "process2-4", value: 3 }, + { source: "process1-6", target: "process2-6", value: 5 }, + { source: "process1-6", target: "process2-2", value: 3 }, + { source: "process1-6", target: "process2-7", value: 4 }, + { source: "process1-6", target: "process2-6", value: 5 }, + { source: "process1-6", target: "process2-3", value: 5 }, + { source: "process1-7", target: "process2-4", value: 4 }, + { source: "process1-7", target: "process2-8", value: 3 }, + { source: "process1-7", target: "process2-6", value: 1 }, + { source: "process1-7", target: "process2-9", value: 3 }, + { source: "process1-7", target: "process2-0", value: 5 }, + { source: "process1-8", target: "process2-9", value: 5 }, + { source: "process1-8", target: "process2-7", value: 1 }, + { source: "process1-8", target: "process2-4", value: 1 }, + { source: "process1-8", target: "process2-8", value: 3 }, + { source: "process1-8", target: "process2-8", value: 2 }, + { source: "process1-9", target: "process2-0", value: 2 }, + { source: "process1-9", target: "process2-9", value: 2 }, + { source: "process1-9", target: "process2-5", value: 5 }, + { source: "process1-9", target: "process2-6", value: 4 }, + { source: "process1-9", target: "process2-2", value: 3 }, + { source: "process2-0", target: "process3-8", value: 5 }, + { source: "process2-0", target: "process3-2", value: 4 }, + { source: "process2-0", target: "process3-3", value: 2 }, + { source: "process2-0", target: "process3-5", value: 5 }, + { source: "process2-0", target: "process3-2", value: 1 }, + { source: "process2-1", target: "process3-5", value: 5 }, + { source: "process2-1", target: "process3-2", value: 3 }, + { source: "process2-1", target: "process3-7", value: 2 }, + { source: "process2-1", target: "process3-6", value: 5 }, + { source: "process2-1", target: "process3-9", value: 3 }, + { source: "process2-2", target: "process3-2", value: 4 }, + { source: "process2-2", target: "process3-4", value: 1 }, + { source: "process2-2", target: "process3-7", value: 4 }, + { source: "process2-2", target: "process3-2", value: 3 }, + { source: "process2-2", target: "process3-9", value: 2 }, + { source: "process2-3", target: "process3-4", value: 4 }, + { source: "process2-3", target: "process3-3", value: 2 }, + { source: "process2-3", target: "process3-0", value: 1 }, + { source: "process2-3", target: "process3-5", value: 2 }, + { source: "process2-3", target: "process3-8", value: 4 }, + { source: "process2-4", target: "process3-1", value: 3 }, + { source: "process2-4", target: "process3-1", value: 3 }, + { source: "process2-4", target: "process3-1", value: 3 }, + { source: "process2-4", target: "process3-4", value: 2 }, + { source: "process2-4", target: "process3-4", value: 4 }, + { source: "process2-5", target: "process3-8", value: 4 }, + { source: "process2-5", target: "process3-2", value: 5 }, + { source: "process2-5", target: "process3-4", value: 2 }, + { source: "process2-5", target: "process3-1", value: 5 }, + { source: "process2-5", target: "process3-4", value: 4 }, + { source: "process2-6", target: "process3-5", value: 4 }, + { source: "process2-6", target: "process3-6", value: 4 }, + { source: "process2-6", target: "process3-7", value: 5 }, + { source: "process2-6", target: "process3-9", value: 1 }, + { source: "process2-6", target: "process3-9", value: 4 }, + { source: "process2-7", target: "process3-1", value: 3 }, + { source: "process2-7", target: "process3-5", value: 3 }, + { source: "process2-7", target: "process3-8", value: 1 }, + { source: "process2-7", target: "process3-4", value: 3 }, + { source: "process2-7", target: "process3-9", value: 5 }, + { source: "process2-8", target: "process3-7", value: 2 }, + { source: "process2-8", target: "process3-5", value: 3 }, + { source: "process2-8", target: "process3-5", value: 3 }, + { source: "process2-8", target: "process3-2", value: 2 }, + { source: "process2-8", target: "process3-1", value: 4 }, + { source: "process2-9", target: "process3-4", value: 3 }, + { source: "process2-9", target: "process3-5", value: 2 }, + { source: "process2-9", target: "process3-3", value: 2 }, + { source: "process2-9", target: "process3-1", value: 3 }, + { source: "process2-9", target: "process3-7", value: 3 }, + { source: "process3-0", target: "process4-5", value: 3 }, + { source: "process3-0", target: "process4-6", value: 1 }, + { source: "process3-0", target: "process4-4", value: 1 }, + { source: "process3-0", target: "process4-3", value: 5 }, + { source: "process3-0", target: "process4-4", value: 5 }, + { source: "process3-1", target: "process4-0", value: 4 }, + { source: "process3-1", target: "process4-8", value: 1 }, + { source: "process3-1", target: "process4-0", value: 2 }, + { source: "process3-1", target: "process4-8", value: 1 }, + { source: "process3-1", target: "process4-7", value: 5 }, + { source: "process3-2", target: "process4-5", value: 5 }, + { source: "process3-2", target: "process4-9", value: 3 }, + { source: "process3-2", target: "process4-5", value: 2 }, + { source: "process3-2", target: "process4-6", value: 2 }, + { source: "process3-2", target: "process4-2", value: 4 }, + { source: "process3-3", target: "process4-6", value: 2 }, + { source: "process3-3", target: "process4-3", value: 4 }, + { source: "process3-3", target: "process4-0", value: 3 }, + { source: "process3-3", target: "process4-3", value: 4 }, + { source: "process3-3", target: "process4-5", value: 3 }, + { source: "process3-4", target: "process4-2", value: 4 }, + { source: "process3-4", target: "process4-4", value: 4 }, + { source: "process3-4", target: "process4-6", value: 3 }, + { source: "process3-4", target: "process4-9", value: 3 }, + { source: "process3-4", target: "process4-1", value: 5 }, + { source: "process3-5", target: "process4-7", value: 3 }, + { source: "process3-5", target: "process4-9", value: 4 }, + { source: "process3-5", target: "process4-8", value: 4 }, + { source: "process3-5", target: "process4-3", value: 3 }, + { source: "process3-5", target: "process4-0", value: 4 }, + { source: "process3-6", target: "process4-8", value: 5 }, + { source: "process3-6", target: "process4-9", value: 1 }, + { source: "process3-6", target: "process4-3", value: 2 }, + { source: "process3-6", target: "process4-7", value: 4 }, + { source: "process3-6", target: "process4-8", value: 1 }, + { source: "process3-7", target: "process4-1", value: 1 }, + { source: "process3-7", target: "process4-2", value: 3 }, + { source: "process3-7", target: "process4-1", value: 4 }, + { source: "process3-7", target: "process4-4", value: 5 }, + { source: "process3-7", target: "process4-2", value: 4 }, + { source: "process3-8", target: "process4-4", value: 4 }, + { source: "process3-8", target: "process4-5", value: 4 }, + { source: "process3-8", target: "process4-7", value: 2 }, + { source: "process3-8", target: "process4-7", value: 1 }, + { source: "process3-8", target: "process4-5", value: 4 }, + { source: "process3-9", target: "process4-8", value: 4 }, + { source: "process3-9", target: "process4-7", value: 2 }, + { source: "process3-9", target: "process4-5", value: 2 }, + { source: "process3-9", target: "process4-0", value: 2 }, + { source: "process3-9", target: "process4-9", value: 5 }, + { source: "process4-0", target: "process5-3", value: 5 }, + { source: "process4-0", target: "process5-6", value: 3 }, + { source: "process4-0", target: "process5-5", value: 5 }, + { source: "process4-0", target: "process5-0", value: 3 }, + { source: "process4-0", target: "process5-8", value: 4 }, + { source: "process4-1", target: "process5-2", value: 3 }, + { source: "process4-1", target: "process5-3", value: 2 }, + { source: "process4-1", target: "process5-7", value: 5 }, + { source: "process4-1", target: "process5-1", value: 2 }, + { source: "process4-1", target: "process5-3", value: 5 }, + { source: "process4-2", target: "process5-0", value: 1 }, + { source: "process4-2", target: "process5-1", value: 5 }, + { source: "process4-2", target: "process5-9", value: 5 }, + { source: "process4-2", target: "process5-3", value: 1 }, + { source: "process4-2", target: "process5-4", value: 4 }, + { source: "process4-3", target: "process5-6", value: 3 }, + { source: "process4-3", target: "process5-7", value: 3 }, + { source: "process4-3", target: "process5-0", value: 4 }, + { source: "process4-3", target: "process5-9", value: 3 }, + { source: "process4-3", target: "process5-9", value: 1 }, + { source: "process4-4", target: "process5-4", value: 4 }, + { source: "process4-4", target: "process5-8", value: 2 }, + { source: "process4-4", target: "process5-4", value: 2 }, + { source: "process4-4", target: "process5-3", value: 4 }, + { source: "process4-4", target: "process5-6", value: 2 }, + { source: "process4-5", target: "process5-5", value: 1 }, + { source: "process4-5", target: "process5-1", value: 1 }, + { source: "process4-5", target: "process5-1", value: 4 }, + { source: "process4-5", target: "process5-6", value: 3 }, + { source: "process4-5", target: "process5-9", value: 5 }, + { source: "process4-6", target: "process5-3", value: 3 }, + { source: "process4-6", target: "process5-2", value: 4 }, + { source: "process4-6", target: "process5-0", value: 5 }, + { source: "process4-6", target: "process5-7", value: 1 }, + { source: "process4-6", target: "process5-2", value: 5 }, + { source: "process4-7", target: "process5-6", value: 5 }, + { source: "process4-7", target: "process5-5", value: 1 }, + { source: "process4-7", target: "process5-8", value: 1 }, + { source: "process4-7", target: "process5-1", value: 3 }, + { source: "process4-7", target: "process5-9", value: 2 }, + { source: "process4-8", target: "process5-3", value: 5 }, + { source: "process4-8", target: "process5-1", value: 3 }, + { source: "process4-8", target: "process5-8", value: 4 }, + { source: "process4-8", target: "process5-4", value: 5 }, + { source: "process4-8", target: "process5-4", value: 4 }, + { source: "process4-9", target: "process5-0", value: 4 }, + { source: "process4-9", target: "process5-0", value: 2 }, + { source: "process4-9", target: "process5-1", value: 2 }, + { source: "process4-9", target: "process5-7", value: 1 }, + { source: "process4-9", target: "process5-7", value: 4 }, + { source: "process5-0", target: "finish", value: 4 }, + { source: "process5-1", target: "finish", value: 2 }, + { source: "process5-2", target: "finish", value: 5 }, + { source: "process5-3", target: "finish", value: 1 }, + { source: "process5-4", target: "finish", value: 1 }, + { source: "process5-5", target: "finish", value: 3 }, + { source: "process5-6", target: "finish", value: 1 }, + { source: "process5-7", target: "finish", value: 5 }, + { source: "process5-8", target: "finish", value: 4 }, + { source: "process5-8", target: "process1-2", value: 4 }, + { source: "process5-9", target: "finish", value: 4 }, + ], +}; - var data1 = { - "nodes": [ - { "name": "start" }, - { "name": "process0-0" }, - { "name": "process0-1" }, - { "name": "process0-2" }, - { "name": "process0-3" }, - { "name": "process0-4" }, - { "name": "process0-5" }, - { "name": "process0-6" }, - { "name": "process0-7" }, - { "name": "process0-8" }, - { "name": "process0-9" }, - { "name": "process1-0" }, - { "name": "process1-1" }, - { "name": "process1-2" }, - { "name": "process1-3" }, - { "name": "process1-4" }, - { "name": "process1-5" }, - { "name": "process1-6" }, - { "name": "process1-7" }, - { "name": "process1-8" }, - { "name": "process1-9" }, - { "name": "process2-0" }, - { "name": "process2-1" }, - { "name": "process2-2" }, - { "name": "process2-3" }, - { "name": "process2-4" }, - { "name": "process2-5" }, - { "name": "process2-6" }, - { "name": "process2-7" }, - { "name": "process2-8" }, - { "name": "process2-9" }, - { "name": "process3-0" }, - { "name": "process3-1" }, - { "name": "process3-2" }, - { "name": "process3-3" }, - { "name": "process3-4" }, - { "name": "process3-5" }, - { "name": "process3-6" }, - { "name": "process3-7" }, - { "name": "process3-8" }, - { "name": "process3-9" }, - { "name": "process4-0" }, - { "name": "process4-1" }, - { "name": "process4-2" }, - { "name": "process4-3" }, - { "name": "process4-4" }, - { "name": "process4-5" }, - { "name": "process4-6" }, - { "name": "process4-7" }, - { "name": "process4-8" }, - { "name": "process4-9" }, - { "name": "process5-0" }, - { "name": "process5-1" }, - { "name": "process5-2" }, - { "name": "process5-3" }, - { "name": "process5-4" }, - { "name": "process5-5" }, - { "name": "process5-6" }, - { "name": "process5-7" }, - { "name": "process5-8" }, - { "name": "process5-9" }, - { "name": "finish" } - ], - "links": [ - { "source": "start", "target": "process0-0", "value": 3 }, - { "source": "start", "target": "process0-1", "value": 1 }, - { "source": "start", "target": "process0-2", "value": 3 }, - { "source": "start", "target": "process0-3", "value": 5 }, - { "source": "start", "target": "process0-4", "value": 4 }, - { "source": "start", "target": "process0-5", "value": 2 }, - { "source": "start", "target": "process0-6", "value": 5 }, - { "source": "start", "target": "process0-7", "value": 5 }, - { "source": "start", "target": "process0-8", "value": 1 }, - { "source": "start", "target": "process0-9", "value": 1 }, - { "source": "process0-0", "target": "process1-0", "value": 3 }, - { "source": "process0-0", "target": "process1-7", "value": 1 }, - { "source": "process0-0", "target": "process1-3", "value": 5 }, - { "source": "process0-0", "target": "process1-3", "value": 2 }, - { "source": "process0-0", "target": "process1-6", "value": 4 }, - { "source": "process0-1", "target": "process1-5", "value": 4 }, - { "source": "process0-1", "target": "process1-7", "value": 2 }, - { "source": "process0-1", "target": "process1-4", "value": 1 }, - { "source": "process0-1", "target": "process1-3", "value": 4 }, - { "source": "process0-1", "target": "process1-7", "value": 1 }, - { "source": "process0-2", "target": "process1-1", "value": 3 }, - { "source": "process0-2", "target": "process1-0", "value": 4 }, - { "source": "process0-2", "target": "process1-2", "value": 2 }, - { "source": "process0-2", "target": "process1-1", "value": 3 }, - { "source": "process0-2", "target": "process1-8", "value": 1 }, - { "source": "process0-3", "target": "process1-4", "value": 3 }, - { "source": "process0-3", "target": "process1-8", "value": 1 }, - { "source": "process0-3", "target": "process1-5", "value": 4 }, - { "source": "process0-3", "target": "process1-2", "value": 3 }, - { "source": "process0-3", "target": "process1-2", "value": 2 }, - { "source": "process0-4", "target": "process1-6", "value": 4 }, - { "source": "process0-4", "target": "process1-1", "value": 3 }, - { "source": "process0-4", "target": "process1-5", "value": 5 }, - { "source": "process0-4", "target": "process1-2", "value": 5 }, - { "source": "process0-4", "target": "process1-9", "value": 4 }, - { "source": "process0-5", "target": "process1-7", "value": 4 }, - { "source": "process0-5", "target": "process1-9", "value": 4 }, - { "source": "process0-5", "target": "process1-5", "value": 1 }, - { "source": "process0-5", "target": "process1-5", "value": 2 }, - { "source": "process0-5", "target": "process1-3", "value": 4 }, - { "source": "process0-6", "target": "process1-6", "value": 2 }, - { "source": "process0-6", "target": "process1-4", "value": 5 }, - { "source": "process0-6", "target": "process1-0", "value": 2 }, - { "source": "process0-6", "target": "process1-9", "value": 2 }, - { "source": "process0-6", "target": "process1-5", "value": 3 }, - { "source": "process0-7", "target": "process1-7", "value": 1 }, - { "source": "process0-7", "target": "process1-9", "value": 3 }, - { "source": "process0-7", "target": "process1-1", "value": 4 }, - { "source": "process0-7", "target": "process1-2", "value": 5 }, - { "source": "process0-7", "target": "process1-2", "value": 3 }, - { "source": "process0-8", "target": "process1-7", "value": 3 }, - { "source": "process0-8", "target": "process1-7", "value": 3 }, - { "source": "process0-8", "target": "process1-0", "value": 3 }, - { "source": "process0-8", "target": "process1-6", "value": 5 }, - { "source": "process0-8", "target": "process1-0", "value": 1 }, - { "source": "process0-9", "target": "process1-3", "value": 5 }, - { "source": "process0-9", "target": "process1-8", "value": 5 }, - { "source": "process0-9", "target": "process1-2", "value": 5 }, - { "source": "process0-9", "target": "process1-5", "value": 2 }, - { "source": "process0-9", "target": "process1-7", "value": 4 }, - { "source": "process1-0", "target": "process2-9", "value": 3 }, - { "source": "process1-0", "target": "process2-4", "value": 5 }, - { "source": "process1-0", "target": "process2-3", "value": 1 }, - { "source": "process1-0", "target": "process2-0", "value": 4 }, - { "source": "process1-0", "target": "process2-1", "value": 1 }, - { "source": "process1-1", "target": "process2-4", "value": 3 }, - { "source": "process1-1", "target": "process2-0", "value": 3 }, - { "source": "process1-1", "target": "process2-5", "value": 1 }, - { "source": "process1-1", "target": "process2-2", "value": 4 }, - { "source": "process1-1", "target": "process2-9", "value": 5 }, - { "source": "process1-2", "target": "process2-6", "value": 3 }, - { "source": "process1-2", "target": "process2-1", "value": 1 }, - { "source": "process1-2", "target": "process2-4", "value": 4 }, - { "source": "process1-2", "target": "process2-9", "value": 1 }, - { "source": "process1-2", "target": "process2-8", "value": 3 }, - { "source": "process1-3", "target": "process2-5", "value": 4 }, - { "source": "process1-3", "target": "process2-7", "value": 5 }, - { "source": "process1-3", "target": "process2-4", "value": 4 }, - { "source": "process1-3", "target": "process2-7", "value": 5 }, - { "source": "process1-3", "target": "process2-0", "value": 3 }, - { "source": "process1-4", "target": "process2-8", "value": 3 }, - { "source": "process1-4", "target": "process2-7", "value": 3 }, - { "source": "process1-4", "target": "process2-4", "value": 2 }, - { "source": "process1-4", "target": "process2-2", "value": 5 }, - { "source": "process1-4", "target": "process2-9", "value": 3 }, - { "source": "process1-5", "target": "process2-2", "value": 1 }, - { "source": "process1-5", "target": "process2-8", "value": 5 }, - { "source": "process1-5", "target": "process2-3", "value": 3 }, - { "source": "process1-5", "target": "process2-5", "value": 4 }, - { "source": "process1-5", "target": "process2-4", "value": 3 }, - { "source": "process1-6", "target": "process2-6", "value": 5 }, - { "source": "process1-6", "target": "process2-2", "value": 3 }, - { "source": "process1-6", "target": "process2-7", "value": 4 }, - { "source": "process1-6", "target": "process2-6", "value": 5 }, - { "source": "process1-6", "target": "process2-3", "value": 5 }, - { "source": "process1-7", "target": "process2-4", "value": 4 }, - { "source": "process1-7", "target": "process2-8", "value": 3 }, - { "source": "process1-7", "target": "process2-6", "value": 1 }, - { "source": "process1-7", "target": "process2-9", "value": 3 }, - { "source": "process1-7", "target": "process2-0", "value": 5 }, - { "source": "process1-8", "target": "process2-9", "value": 5 }, - { "source": "process1-8", "target": "process2-7", "value": 1 }, - { "source": "process1-8", "target": "process2-4", "value": 1 }, - { "source": "process1-8", "target": "process2-8", "value": 3 }, - { "source": "process1-8", "target": "process2-8", "value": 2 }, - { "source": "process1-9", "target": "process2-0", "value": 2 }, - { "source": "process1-9", "target": "process2-9", "value": 2 }, - { "source": "process1-9", "target": "process2-5", "value": 5 }, - { "source": "process1-9", "target": "process2-6", "value": 4 }, - { "source": "process1-9", "target": "process2-2", "value": 3 }, - { "source": "process2-0", "target": "process3-8", "value": 5 }, - { "source": "process2-0", "target": "process3-2", "value": 4 }, - { "source": "process2-0", "target": "process3-3", "value": 2 }, - { "source": "process2-0", "target": "process3-5", "value": 5 }, - { "source": "process2-0", "target": "process3-2", "value": 1 }, - { "source": "process2-1", "target": "process3-5", "value": 5 }, - { "source": "process2-1", "target": "process3-2", "value": 3 }, - { "source": "process2-1", "target": "process3-7", "value": 2 }, - { "source": "process2-1", "target": "process3-6", "value": 5 }, - { "source": "process2-1", "target": "process3-9", "value": 3 }, - { "source": "process2-2", "target": "process3-2", "value": 4 }, - { "source": "process2-2", "target": "process3-4", "value": 1 }, - { "source": "process2-2", "target": "process3-7", "value": 4 }, - { "source": "process2-2", "target": "process3-2", "value": 3 }, - { "source": "process2-2", "target": "process3-9", "value": 2 }, - { "source": "process2-3", "target": "process3-4", "value": 4 }, - { "source": "process2-3", "target": "process3-3", "value": 2 }, - { "source": "process2-3", "target": "process3-0", "value": 1 }, - { "source": "process2-3", "target": "process3-5", "value": 2 }, - { "source": "process2-3", "target": "process3-8", "value": 4 }, - { "source": "process2-4", "target": "process3-1", "value": 3 }, - { "source": "process2-4", "target": "process3-1", "value": 3 }, - { "source": "process2-4", "target": "process3-1", "value": 3 }, - { "source": "process2-4", "target": "process3-4", "value": 2 }, - { "source": "process2-4", "target": "process3-4", "value": 4 }, - { "source": "process2-5", "target": "process3-8", "value": 4 }, - { "source": "process2-5", "target": "process3-2", "value": 5 }, - { "source": "process2-5", "target": "process3-4", "value": 2 }, - { "source": "process2-5", "target": "process3-1", "value": 5 }, - { "source": "process2-5", "target": "process3-4", "value": 4 }, - { "source": "process2-6", "target": "process3-5", "value": 4 }, - { "source": "process2-6", "target": "process3-6", "value": 4 }, - { "source": "process2-6", "target": "process3-7", "value": 5 }, - { "source": "process2-6", "target": "process3-9", "value": 1 }, - { "source": "process2-6", "target": "process3-9", "value": 4 }, - { "source": "process2-7", "target": "process3-1", "value": 3 }, - { "source": "process2-7", "target": "process3-5", "value": 3 }, - { "source": "process2-7", "target": "process3-8", "value": 1 }, - { "source": "process2-7", "target": "process3-4", "value": 3 }, - { "source": "process2-7", "target": "process3-9", "value": 5 }, - { "source": "process2-8", "target": "process3-7", "value": 2 }, - { "source": "process2-8", "target": "process3-5", "value": 3 }, - { "source": "process2-8", "target": "process3-5", "value": 3 }, - { "source": "process2-8", "target": "process3-2", "value": 2 }, - { "source": "process2-8", "target": "process3-1", "value": 4 }, - { "source": "process2-9", "target": "process3-4", "value": 3 }, - { "source": "process2-9", "target": "process3-5", "value": 2 }, - { "source": "process2-9", "target": "process3-3", "value": 2 }, - { "source": "process2-9", "target": "process3-1", "value": 3 }, - { "source": "process2-9", "target": "process3-7", "value": 3 }, - { "source": "process3-0", "target": "process4-5", "value": 3 }, - { "source": "process3-0", "target": "process4-6", "value": 1 }, - { "source": "process3-0", "target": "process4-4", "value": 1 }, - { "source": "process3-0", "target": "process4-3", "value": 5 }, - { "source": "process3-0", "target": "process4-4", "value": 5 }, - { "source": "process3-1", "target": "process4-0", "value": 4 }, - { "source": "process3-1", "target": "process4-8", "value": 1 }, - { "source": "process3-1", "target": "process4-0", "value": 2 }, - { "source": "process3-1", "target": "process4-8", "value": 1 }, - { "source": "process3-1", "target": "process4-7", "value": 5 }, - { "source": "process3-2", "target": "process4-5", "value": 5 }, - { "source": "process3-2", "target": "process4-9", "value": 3 }, - { "source": "process3-2", "target": "process4-5", "value": 2 }, - { "source": "process3-2", "target": "process4-6", "value": 2 }, - { "source": "process3-2", "target": "process4-2", "value": 4 }, - { "source": "process3-3", "target": "process4-6", "value": 2 }, - { "source": "process3-3", "target": "process4-3", "value": 4 }, - { "source": "process3-3", "target": "process4-0", "value": 3 }, - { "source": "process3-3", "target": "process4-3", "value": 4 }, - { "source": "process3-3", "target": "process4-5", "value": 3 }, - { "source": "process3-4", "target": "process4-2", "value": 4 }, - { "source": "process3-4", "target": "process4-4", "value": 4 }, - { "source": "process3-4", "target": "process4-6", "value": 3 }, - { "source": "process3-4", "target": "process4-9", "value": 3 }, - { "source": "process3-4", "target": "process4-1", "value": 5 }, - { "source": "process3-5", "target": "process4-7", "value": 3 }, - { "source": "process3-5", "target": "process4-9", "value": 4 }, - { "source": "process3-5", "target": "process4-8", "value": 4 }, - { "source": "process3-5", "target": "process4-3", "value": 3 }, - { "source": "process3-5", "target": "process4-0", "value": 4 }, - { "source": "process3-6", "target": "process4-8", "value": 5 }, - { "source": "process3-6", "target": "process4-9", "value": 1 }, - { "source": "process3-6", "target": "process4-3", "value": 2 }, - { "source": "process3-6", "target": "process4-7", "value": 4 }, - { "source": "process3-6", "target": "process4-8", "value": 1 }, - { "source": "process3-7", "target": "process4-1", "value": 1 }, - { "source": "process3-7", "target": "process4-2", "value": 3 }, - { "source": "process3-7", "target": "process4-1", "value": 4 }, - { "source": "process3-7", "target": "process4-4", "value": 5 }, - { "source": "process3-7", "target": "process4-2", "value": 4 }, - { "source": "process3-8", "target": "process4-4", "value": 4 }, - { "source": "process3-8", "target": "process4-5", "value": 4 }, - { "source": "process3-8", "target": "process4-7", "value": 2 }, - { "source": "process3-8", "target": "process4-7", "value": 1 }, - { "source": "process3-8", "target": "process4-5", "value": 4 }, - { "source": "process3-9", "target": "process4-8", "value": 4 }, - { "source": "process3-9", "target": "process4-7", "value": 2 }, - { "source": "process3-9", "target": "process4-5", "value": 2 }, - { "source": "process3-9", "target": "process4-0", "value": 2 }, - { "source": "process3-9", "target": "process4-9", "value": 5 }, - { "source": "process4-0", "target": "process5-3", "value": 5 }, - { "source": "process4-0", "target": "process5-6", "value": 3 }, - { "source": "process4-0", "target": "process5-5", "value": 5 }, - { "source": "process4-0", "target": "process5-0", "value": 3 }, - { "source": "process4-0", "target": "process5-8", "value": 4 }, - { "source": "process4-1", "target": "process5-2", "value": 3 }, - { "source": "process4-1", "target": "process5-3", "value": 2 }, - { "source": "process4-1", "target": "process5-7", "value": 5 }, - { "source": "process4-1", "target": "process5-1", "value": 2 }, - { "source": "process4-1", "target": "process5-3", "value": 5 }, - { "source": "process4-2", "target": "process5-0", "value": 1 }, - { "source": "process4-2", "target": "process5-1", "value": 5 }, - { "source": "process4-2", "target": "process5-9", "value": 5 }, - { "source": "process4-2", "target": "process5-3", "value": 1 }, - { "source": "process4-2", "target": "process5-4", "value": 4 }, - { "source": "process4-3", "target": "process5-6", "value": 3 }, - { "source": "process4-3", "target": "process5-7", "value": 3 }, - { "source": "process4-3", "target": "process5-0", "value": 4 }, - { "source": "process4-3", "target": "process5-9", "value": 3 }, - { "source": "process4-3", "target": "process5-9", "value": 1 }, - { "source": "process4-4", "target": "process5-4", "value": 4 }, - { "source": "process4-4", "target": "process5-8", "value": 2 }, - { "source": "process4-4", "target": "process5-4", "value": 2 }, - { "source": "process4-4", "target": "process5-3", "value": 4 }, - { "source": "process4-4", "target": "process5-6", "value": 2 }, - { "source": "process4-5", "target": "process5-5", "value": 1 }, - { "source": "process4-5", "target": "process5-1", "value": 1 }, - { "source": "process4-5", "target": "process5-1", "value": 4 }, - { "source": "process4-5", "target": "process5-6", "value": 3 }, - { "source": "process4-5", "target": "process5-9", "value": 5 }, - { "source": "process4-6", "target": "process5-3", "value": 3 }, - { "source": "process4-6", "target": "process5-2", "value": 4 }, - { "source": "process4-6", "target": "process5-0", "value": 5 }, - { "source": "process4-6", "target": "process5-7", "value": 1 }, - { "source": "process4-6", "target": "process5-2", "value": 5 }, - { "source": "process4-7", "target": "process5-6", "value": 5 }, - { "source": "process4-7", "target": "process5-5", "value": 1 }, - { "source": "process4-7", "target": "process5-8", "value": 1 }, - { "source": "process4-7", "target": "process5-1", "value": 3 }, - { "source": "process4-7", "target": "process5-9", "value": 2 }, - { "source": "process4-8", "target": "process5-3", "value": 5 }, - { "source": "process4-8", "target": "process5-1", "value": 3 }, - { "source": "process4-8", "target": "process5-8", "value": 4 }, - { "source": "process4-8", "target": "process5-4", "value": 5 }, - { "source": "process4-8", "target": "process5-4", "value": 4 }, - { "source": "process4-9", "target": "process5-0", "value": 4 }, - { "source": "process4-9", "target": "process5-0", "value": 2 }, - { "source": "process4-9", "target": "process5-1", "value": 2 }, - { "source": "process4-9", "target": "process5-7", "value": 1 }, - { "source": "process4-9", "target": "process5-7", "value": 4 }, - { "source": "process5-0", "target": "finish", "value": 4 }, - { "source": "process5-1", "target": "finish", "value": 2 }, - { "source": "process5-2", "target": "finish", "value": 5 }, - { "source": "process5-3", "target": "finish", "value": 1 }, - { "source": "process5-4", "target": "finish", "value": 1 }, - { "source": "process5-5", "target": "finish", "value": 3 }, - { "source": "process5-6", "target": "finish", "value": 1 }, - { "source": "process5-7", "target": "finish", "value": 5 }, - { "source": "process5-8", "target": "finish", "value": 4 }, - { "source": "process5-8", "target": "process1-2", "value": 4 }, - { "source": "process5-9", "target": "finish", "value": 4 } +let data3 = { + nodes: [ + { name: "Oceans" }, + { name: "Evaporation" }, + { name: "Atmosphere" }, + { name: "Condensation" }, + { name: "Precipitation" }, + { name: "Ice and snow" }, + { name: "Infiltration" }, + { name: "Seepage" }, + { name: "Spring" }, + { name: "Freshwater" }, + // { "name": "Soil moisture" }, + { name: "Plants and animals" }, + { name: "Sublimation" }, + { name: "Groundwater flow" }, + { name: "Groundwater storage" }, + { name: "Surface runoff" }, + { name: "Plant uptake" }, + { name: "Evapotranspiration" }, + ], + links: [ + { source: "Oceans", target: "Evaporation", value: 4 }, + { source: "Evaporation", target: "Condensation", value: 4 }, + { source: "Condensation", target: "Atmosphere", value: 4 }, + { source: "Atmosphere", target: "Precipitation", value: 4 }, + { source: "Precipitation", target: "Ice and snow", value: 4 }, + { source: "Precipitation", target: "Oceans", value: 4 }, + { source: "Precipitation", target: "Surface runoff", value: 4 }, + { source: "Ice and snow", target: "Infiltration", value: 4 }, + { source: "Ice and snow", target: "Sublimation", value: 4 }, + { source: "Sublimation", target: "Atmosphere", value: 4 }, + { source: "Infiltration", target: "Groundwater flow", value: 4 }, + { source: "Infiltration", target: "Groundwater storage", value: 4 }, + { source: "Groundwater storage", target: "Oceans", value: 4 }, + { source: "Groundwater flow", target: "Seepage", value: 4 }, + { source: "Groundwater flow", target: "Spring", value: 4 }, + { source: "Groundwater flow", target: "Plant uptake", value: 4 }, + { source: "Groundwater flow", target: "Oceans", value: 4 }, + { source: "Groundwater flow", target: "Freshwater", value: 4 }, + { source: "Seepage", target: "Freshwater", value: 4 }, + { source: "Spring", target: "Freshwater", value: 4 }, + { source: "Freshwater", target: "Evaporation", value: 4 }, + { source: "Freshwater", target: "Plants and animals", value: 4 }, + { source: "Freshwater", target: "Seepage", value: 4 }, + { source: "Plant uptake", target: "Plants and animals", value: 4 }, + { source: "Plants and animals", target: "Freshwater", value: 4 }, + { source: "Surface runoff", target: "Groundwater flow", value: 4 }, + { source: "Plants and animals", target: "Evapotranspiration", value: 4 }, + { source: "Evapotranspiration", target: "Atmosphere", value: 4 }, + { source: "Freshwater", target: "Oceans", value: 4 }, + ], +}; +//https://www.ucl.ac.uk/bartlett/sustainable/news/2017/jun/global-paper-recycling-can-be-improved-according-new-research-ucl +let data4 = { + nodes: [ + { name: "Non-fibrous" }, + { name: "Wood" }, + { name: "Other fibres" }, + { name: "Mechanical pulp" }, + { name: "Chemical pulp" }, + { name: "Recycled pulp" }, + //{ "name": "Paper for recycling" }, + { name: "Mill waste" }, + { name: "Newsprint" }, + { name: "Printing and writing" }, + { name: "Sanitary and household" }, + { name: "Packaging" }, + { name: "Other" }, + { name: "Use" }, + { name: "To stock" }, + { name: "Energy recovery municipal" }, + { name: "Incineration municipal" }, + { name: "Landfill" }, + { name: "Non-energy recovery" }, + { name: "Energy recovery on site" }, + ], + links: [ + { source: "Non-fibrous", target: "Newsprint", value: 4 }, + { source: "Non-fibrous", target: "Printing and writing", value: 40 }, + { source: "Non-fibrous", target: "Packaging", value: 20 }, + { source: "Non-fibrous", target: "Other", value: 4 }, + { source: "Non-fibrous", target: "Recycled pulp", value: 2 }, - ] - } + { source: "Wood", target: "Mechanical pulp", value: 35 }, + { source: "Wood", target: "Chemical pulp", value: 279 }, - let data3 = { - "nodes": [ - { "name": "Oceans" }, - { "name": "Evaporation" }, - { "name": "Atmosphere" }, - { "name": "Condensation" }, - { "name": "Precipitation" }, - { "name": "Ice and snow" }, - { "name": "Infiltration" }, - { "name": "Seepage" }, - { "name": "Spring" }, - { "name": "Freshwater" }, - // { "name": "Soil moisture" }, - { "name": "Plants and animals" }, - { "name": "Sublimation" }, - { "name": "Groundwater flow" }, - { "name": "Groundwater storage" }, - { "name": "Surface runoff" }, - { "name": "Plant uptake"}, - { "name": "Evapotranspiration"}, - ], - "links": [ - { "source": "Oceans", "target": "Evaporation", "value": 4 }, - { "source": "Evaporation", "target": "Condensation", "value": 4 }, - { "source": "Condensation", "target": "Atmosphere", "value": 4 }, - { "source": "Atmosphere", "target": "Precipitation", "value": 4 }, - { "source": "Precipitation", "target": "Ice and snow", "value": 4 }, - { "source": "Precipitation", "target": "Oceans", "value": 4 }, - { "source": "Precipitation", "target": "Surface runoff", "value": 4 }, - { "source": "Ice and snow", "target": "Infiltration", "value": 4 }, - { "source": "Ice and snow", "target": "Sublimation", "value": 4 }, - { "source": "Sublimation", "target": "Atmosphere", "value": 4 }, - { "source": "Infiltration", "target": "Groundwater flow", "value": 4 }, - { "source": "Infiltration", "target": "Groundwater storage", "value": 4 }, - { "source": "Groundwater storage", "target": "Oceans", "value": 4 }, - { "source": "Groundwater flow", "target": "Seepage", "value": 4 }, - { "source": "Groundwater flow", "target": "Spring", "value": 4 }, - { "source": "Groundwater flow", "target": "Plant uptake", "value": 4 }, - { "source": "Groundwater flow", "target": "Oceans", "value": 4 }, - { "source": "Groundwater flow", "target": "Freshwater", "value": 4 }, - { "source": "Seepage", "target": "Freshwater", "value": 4 }, - { "source": "Spring", "target": "Freshwater", "value": 4 }, - { "source": "Freshwater", "target": "Evaporation", "value": 4 }, - { "source": "Freshwater", "target": "Plants and animals", "value": 4 }, - { "source": "Freshwater", "target": "Seepage", "value": 4 }, - { "source": "Plant uptake", "target": "Plants and animals", "value": 4 }, - { "source": "Plants and animals", "target": "Freshwater", "value": 4 }, - { "source": "Surface runoff", "target": "Groundwater flow", "value": 4 }, - { "source": "Plants and animals", "target": "Evapotranspiration", "value": 4 }, - { "source": "Evapotranspiration", "target": "Atmosphere", "value": 4 }, - { "source": "Freshwater", "target": "Oceans", "value": 4 }, - ] - } + { source: "Other fibres", target: "Chemical pulp", value: 4 }, - //https://www.ucl.ac.uk/bartlett/sustainable/news/2017/jun/global-paper-recycling-can-be-improved-according-new-research-ucl - let data4 = { - "nodes": [ - { "name": "Non-fibrous" }, - { "name": "Wood" }, - { "name": "Other fibres" }, - { "name": "Mechanical pulp" }, - { "name": "Chemical pulp" }, - { "name": "Recycled pulp" }, - //{ "name": "Paper for recycling" }, - { "name": "Mill waste" }, - { "name": "Newsprint" }, - { "name": "Printing and writing" }, - { "name": "Sanitary and household" }, - { "name": "Packaging" }, - { "name": "Other" }, - { "name": "Use" }, - { "name": "To stock" }, - { "name": "Energy recovery municipal" }, - { "name": "Incineration municipal" }, - { "name": "Landfill" }, - { "name": "Non-energy recovery"}, - { "name": "Energy recovery on site"} - ], - "links": [ - { "source": "Non-fibrous", "target": "Newsprint", "value": 4 }, - { "source": "Non-fibrous", "target": "Printing and writing", "value": 40 }, - { "source": "Non-fibrous", "target": "Packaging", "value": 20 }, - { "source": "Non-fibrous", "target": "Other", "value": 4 }, - { "source": "Non-fibrous", "target": "Recycled pulp", "value": 2 }, + { source: "Mechanical pulp", target: "Newsprint", value: 3 }, + { source: "Mechanical pulp", target: "Packaging", value: 23 }, + { source: "Mechanical pulp", target: "Recycled pulp", value: 2 }, + { source: "Mechanical pulp", target: "Mill waste", value: 3 }, - { "source": "Wood", "target": "Mechanical pulp", "value": 35 }, - { "source": "Wood", "target": "Chemical pulp", "value": 279 }, + { source: "Chemical pulp", target: "Printing and writing", value: 50 }, + { source: "Chemical pulp", target: "Sanitary and household", value: 20 }, + { source: "Chemical pulp", target: "Packaging", value: 40 }, + { source: "Chemical pulp", target: "Other", value: 9 }, + { source: "Chemical pulp", target: "Recycled pulp", value: 3 }, + { source: "Chemical pulp", target: "Mill waste", value: 162 }, - { "source": "Other fibres", "target": "Chemical pulp", "value": 4 }, + { source: "Recycled pulp", target: "Newsprint", value: 25 }, + { source: "Recycled pulp", target: "Printing and writing", value: 5 }, + { source: "Recycled pulp", target: "Sanitary and household", value: 5 }, + { source: "Recycled pulp", target: "Packaging", value: 100 }, + { source: "Recycled pulp", target: "Other", value: 5 }, + { source: "Recycled pulp", target: "Mill waste", value: 41 }, + //{ "source": "Recycled pulp", "target": "Paper for recycling", "value": 3 }, - { "source": "Mechanical pulp", "target": "Newsprint", "value": 3 }, - { "source": "Mechanical pulp", "target": "Packaging", "value": 23 }, - { "source": "Mechanical pulp", "target": "Recycled pulp", "value": 2 }, - { "source": "Mechanical pulp", "target": "Mill waste", "value": 3 }, + { source: "Newsprint", target: "Use", value: 31 }, + { source: "Printing and writing", target: "Use", value: 106 }, + { source: "Sanitary and household", target: "Use", value: 30 }, + { source: "Packaging", target: "Use", value: 214 }, + { source: "Other", target: "Use", value: 18 }, - { "source": "Chemical pulp", "target": "Printing and writing", "value": 50 }, - { "source": "Chemical pulp", "target": "Sanitary and household", "value": 20 }, - { "source": "Chemical pulp", "target": "Packaging", "value": 40 }, - { "source": "Chemical pulp", "target": "Other", "value": 9 }, - { "source": "Chemical pulp", "target": "Recycled pulp", "value": 3 }, - { "source": "Chemical pulp", "target": "Mill waste", "value": 162 }, + { source: "Use", target: "To stock", value: 36 }, + { source: "Use", target: "Energy recovery municipal", value: 20 }, + { source: "Use", target: "Incineration municipal", value: 14 }, + { source: "Use", target: "Landfill", value: 132 }, + { source: "Use", target: "Non-energy recovery", value: 3 }, + { source: "Use", target: "Recycled pulp", value: 194 }, - { "source": "Recycled pulp", "target": "Newsprint", "value": 25 }, - { "source": "Recycled pulp", "target": "Printing and writing", "value": 5 }, - { "source": "Recycled pulp", "target": "Sanitary and household", "value": 5 }, - { "source": "Recycled pulp", "target": "Packaging", "value": 100 }, - { "source": "Recycled pulp", "target": "Other", "value": 5 }, - { "source": "Recycled pulp", "target": "Mill waste", "value": 41 }, - //{ "source": "Recycled pulp", "target": "Paper for recycling", "value": 3 }, + { source: "Mill waste", target: "Landfill", value: 22 }, + { source: "Mill waste", target: "Non-energy recovery", value: 26 }, + { source: "Mill waste", target: "Energy recovery on site", value: 158 }, - { "source": "Newsprint", "target": "Use", "value": 31 }, - { "source": "Printing and writing", "target": "Use", "value": 106 }, - { "source": "Sanitary and household", "target": "Use", "value": 30 }, - { "source": "Packaging", "target": "Use", "value": 214 }, - { "source": "Other", "target": "Use", "value": 18 }, + //{ "source": "Paper for recycling", "target": "Recycled pulp", "value": 215 }, + ], +}; - { "source": "Use", "target": "To stock", "value": 36 }, - { "source": "Use", "target": "Energy recovery municipal", "value": 20 }, - { "source": "Use", "target": "Incineration municipal", "value": 14 }, - { "source": "Use", "target": "Landfill", "value": 132 }, - { "source": "Use", "target": "Non-energy recovery", "value": 3 }, - { "source": "Use", "target": "Recycled pulp", "value": 194 }, - - { "source": "Mill waste", "target": "Landfill", "value": 22 }, - { "source": "Mill waste", "target": "Non-energy recovery", "value": 26 }, - { "source": "Mill waste", "target": "Energy recovery on site", "value": 158 }, - - //{ "source": "Paper for recycling", "target": "Recycled pulp", "value": 215 }, - - ] - } - - //to test self-linking nodes - let data5 = { - "nodes": [ - { "name": "startA" }, - { "name": "startB" }, - { "name": "process1" }, - { "name": "process2" }, - { "name": "process3" }, - { "name": "process4" }, - { "name": "process5" }, - { "name": "process6" }, - { "name": "process7" }, - { "name": "process8" }, - { "name": "process9" }, - { "name": "process10" }, - { "name": "process11" }, - { "name": "process12" }, - { "name": "process13" }, - { "name": "process14" }, - { "name": "process15" }, - { "name": "process16" }, - { "name": "finishA" }, - { "name": "finishB" } - ], - "links": [ - { "source": "startA", "target": "process8", "value": 20, "optimal": "yes" }, - { "source": "startA", "target": "process5", "value": 20, "optimal": "yes" }, - { "source": "startA", "target": "process6", "value": 20, "optimal": "yes" }, - { "source": "startB", "target": "process1", "value": 15, "optimal": "yes" }, - { "source": "startB", "target": "process5", "value": 15, "optimal": "yes" }, - { "source": "process1", "target": "process4", "value": 30, "optimal": "yes" }, - { "source": "process4", "target": "process1", "value": 10, "optimal": "yes" }, - { "source": "process2", "target": "process7", "value": 35, "optimal": "yes" }, - { "source": "process1", "target": "process3", "value": 20, "optimal": "yes" }, - { "source": "process5", "target": "process1", "value": 20, "optimal": "yes" }, - { "source": "process6", "target": "startA", "value": 5, "optimal": "yes" }, - { "source": "process4", "target": "process2", "value": 10, "optimal": "yes" }, - { "source": "process6", "target": "process8", "value": 15, "optimal": "yes" }, - //{ "source": "process4", "target": "startB", "value": 5, "optimal": "yes" }, - { "source": "process3", "target": "process2", "value": 15, "optimal": "yes" }, - //{ "source": "process3", "target": "startB", "value": 5, "optimal": "yes" }, - { "source": "process15", "target": "process13", "value": 10, "optimal": "yes" }, - { "source": "process13", "target": "process9", "value": 10, "optimal": "yes" }, - { "source": "process7", "target": "startB", "value": 20, "optimal": "yes" }, - { "source": "process8", "target": "process1", "value": 10, "optimal": "yes" }, - { "source": "process8", "target": "process16", "value": 10, "optimal": "yes" }, - { "source": "process16", "target": "process9", "value": 10, "optimal": "yes" }, - { "source": "process8", "target": "process11", "value": 25, "optimal": "yes" }, - { "source": "process11", "target": "process10", "value": 20, "optimal": "yes" }, - { "source": "process4", "target": "process12", "value": 10, "optimal": "yes" }, - { "source": "process12", "target": "process11", "value": 10, "optimal": "yes" }, - { "source": "process7", "target": "process15", "value": 15, "optimal": "yes" }, - { "source": "process15", "target": "process14", "value": 10, "optimal": "yes" }, - { "source": "process10", "target": "process13", "value": 10, "optimal": "yes" }, - { "source": "process10", "target": "process16", "value": 10, "optimal": "yes" }, - { "source": "process14", "target": "finishB", "value": 10, "optimal": "yes" }, - { "source": "process9", "target": "finishA", "value": 10, "optimal": "yes" }, - { "source": "process16", "target": "process8", "value": 10, "optimal": "yes" }, - { "source": "process9", "target": "finishB", "value": 10, "optimal": "yes" }, - { "source": "process15", "target": "finishB", "value": 10, "optimal": "yes" }, - { "source": "process15", "target": "finishA", "value": 10, "optimal": "yes" }, - { "source": "process11", "target": "process15", "value": 25, "optimal": "yes" }, - { "source": "process11", "target": "process11", "value": 5, "optimal": "yes" }, - { "source": "finishA", "target": "finishA", "value": 15, "optimal": "yes" }, - { "source": "finishB", "target": "finishB", "value": 15, "optimal": "yes" }, - { "source": "process5", "target": "process5", "value": 10, "optimal": "yes" }, - { "source": "finishB", "target": "process14", "value": 5, "optimal": "yes" } - ] - }; \ No newline at end of file +//to test self-linking nodes +let data5 = { + nodes: [ + { name: "startA" }, + { name: "startB" }, + { name: "process1" }, + { name: "process2" }, + { name: "process3" }, + { name: "process4" }, + { name: "process5" }, + { name: "process6" }, + { name: "process7" }, + { name: "process8" }, + { name: "process9" }, + { name: "process10" }, + { name: "process11" }, + { name: "process12" }, + { name: "process13" }, + { name: "process14" }, + { name: "process15" }, + { name: "process16" }, + { name: "finishA" }, + { name: "finishB" }, + ], + links: [ + { source: "startA", target: "process8", value: 20, optimal: "yes" }, + { source: "startA", target: "process5", value: 20, optimal: "yes" }, + { source: "startA", target: "process6", value: 20, optimal: "yes" }, + { source: "startB", target: "process1", value: 15, optimal: "yes" }, + { source: "startB", target: "process5", value: 15, optimal: "yes" }, + { source: "process1", target: "process4", value: 30, optimal: "yes" }, + { source: "process4", target: "process1", value: 10, optimal: "yes" }, + { source: "process2", target: "process7", value: 35, optimal: "yes" }, + { source: "process1", target: "process3", value: 20, optimal: "yes" }, + { source: "process5", target: "process1", value: 20, optimal: "yes" }, + { source: "process6", target: "startA", value: 5, optimal: "yes" }, + { source: "process4", target: "process2", value: 10, optimal: "yes" }, + { source: "process6", target: "process8", value: 15, optimal: "yes" }, + //{ "source": "process4", "target": "startB", "value": 5, "optimal": "yes" }, + { source: "process3", target: "process2", value: 15, optimal: "yes" }, + //{ "source": "process3", "target": "startB", "value": 5, "optimal": "yes" }, + { source: "process15", target: "process13", value: 10, optimal: "yes" }, + { source: "process13", target: "process9", value: 10, optimal: "yes" }, + { source: "process7", target: "startB", value: 20, optimal: "yes" }, + { source: "process8", target: "process1", value: 10, optimal: "yes" }, + { source: "process8", target: "process16", value: 10, optimal: "yes" }, + { source: "process16", target: "process9", value: 10, optimal: "yes" }, + { source: "process8", target: "process11", value: 25, optimal: "yes" }, + { source: "process11", target: "process10", value: 20, optimal: "yes" }, + { source: "process4", target: "process12", value: 10, optimal: "yes" }, + { source: "process12", target: "process11", value: 10, optimal: "yes" }, + { source: "process7", target: "process15", value: 15, optimal: "yes" }, + { source: "process15", target: "process14", value: 10, optimal: "yes" }, + { source: "process10", target: "process13", value: 10, optimal: "yes" }, + { source: "process10", target: "process16", value: 10, optimal: "yes" }, + { source: "process14", target: "finishB", value: 10, optimal: "yes" }, + { source: "process9", target: "finishA", value: 10, optimal: "yes" }, + { source: "process16", target: "process8", value: 10, optimal: "yes" }, + { source: "process9", target: "finishB", value: 10, optimal: "yes" }, + { source: "process15", target: "finishB", value: 10, optimal: "yes" }, + { source: "process15", target: "finishA", value: 10, optimal: "yes" }, + { source: "process11", target: "process15", value: 25, optimal: "yes" }, + { source: "process11", target: "process11", value: 5, optimal: "yes" }, + { source: "finishA", target: "finishA", value: 15, optimal: "yes" }, + { source: "finishB", target: "finishB", value: 15, optimal: "yes" }, + { source: "process5", target: "process5", value: 10, optimal: "yes" }, + { source: "finishB", target: "process14", value: 5, optimal: "yes" }, + ], +}; From 3405b8bae23270c3bca84e97aa084bc1fc55d58d Mon Sep 17 00:00:00 2001 From: KQLLLY Date: Tue, 23 Feb 2021 18:03:31 +0200 Subject: [PATCH 11/12] added big data6 mock to test relaxLeftAndRight function --- example/example-data.js | 813 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 813 insertions(+) diff --git a/example/example-data.js b/example/example-data.js index 4f1e2c5..46c1f36 100644 --- a/example/example-data.js +++ b/example/example-data.js @@ -602,3 +602,816 @@ let data5 = { { source: "finishB", target: "process14", value: 5, optimal: "yes" }, ], }; + +//the big mockData to test relaxLeftAndRight +let data6 = { + "nodes": [ + { + "name": "label0", + "col": 1 + }, + { + "name": "label1", + "col": 2 + }, + { + "name": "label2", + "col": 0 + }, + { + "name": "label3", + "col": 0 + }, + { + "name": "label4", + "col": 0 + }, + { + "name": "label5", + "col": 0 + }, + { + "name": "label6", + "col": 0 + }, + { + "name": "label7", + "col": 0 + }, + { + "name": "label8", + "col": 0 + }, + { + "name": "label9", + "col": 0 + }, + { + "name": "label10", + "col": 0 + }, + { + "name": "label11", + "col": 0 + }, + { + "name": "label12", + "col": 0 + }, + { + "name": "label13", + "col": 0 + }, + { + "name": "label14", + "col": 0 + }, + { + "name": "label15", + "col": 2 + }, + { + "name": "label16", + "col": 6 + }, + { + "name": "label17", + "col": 3 + }, + { + "name": "label18", + "col": 3 + }, + { + "name": "label19", + "col": 5 + }, + { + "name": "label20", + "col": 4 + }, + { + "name": "label21", + "col": 4 + }, + { + "name": "label22", + "col": 1 + }, + { + "name": "label23", + "col": 1 + }, + { + "name": "label24", + "col": 7 + }, + { + "name": "label25", + "col": 1 + }, + { + "name": "label26", + "col": 7 + }, + { + "name": "label27", + "col": 7 + }, + { + "name": "label28", + "col": 1 + }, + { + "name": "label29", + "col": 7 + }, + { + "name": "label30", + "col": 1 + }, + { + "name": "label31", + "col": 1 + }, + { + "name": "label32", + "col": 1 + }, + { + "name": "label33", + "col": 7 + }, + { + "name": "label34", + "col": 7 + }, + { + "name": "label35", + "col": 1 + }, + { + "name": "label36", + "col": 7 + }, + { + "name": "label37", + "col": 2 + }, + { + "name": "label38", + "col": 1 + }, + { + "name": "label39", + "col": 7 + }, + { + "name": "label40", + "col": 1 + }, + { + "name": "label41", + "col": 1 + }, + { + "name": "label42", + "col": 7 + }, + { + "name": "label43", + "col": 1 + }, + { + "name": "label44", + "col": 7 + }, + { + "name": "label45", + "col": 1 + }, + { + "name": "label46", + "col": 1 + }, + { + "name": "label47", + "col": 7 + }, + { + "name": "label48", + "col": 1 + }, + { + "name": "label49", + "col": 7 + }, + { + "name": "label50", + "col": 1 + }, + { + "name": "label51", + "col": 7 + }, + { + "name": "label52", + "col": 1 + }, + { + "name": "label53", + "col": 1 + }, + { + "name": "label54", + "col": 7 + }, + { + "name": "label55", + "col": 1 + }, + { + "name": "label56", + "col": 7 + }, + { + "name": "label57", + "col": 3 + }, + { + "name": "label58", + "col": 2 + }, + { + "name": "label59", + "col": 1 + }, + { + "name": "label60", + "col": 1 + }, + { + "name": "label61", + "col": 7 + }, + { + "name": "label62", + "col": 1 + }, + { + "name": "label63", + "col": 7 + }, + { + "name": "label64", + "col": 1 + }, + { + "name": "label65", + "col": 1 + }, + { + "name": "label66", + "col": 7 + }, + { + "name": "label67", + "col": 1 + }, + { + "name": "label68", + "col": 7 + }, + { + "name": "label69", + "col": 1 + }, + { + "name": "label70", + "col": 1 + }, + { + "name": "label71", + "col": 1 + }, + { + "name": "label72", + "col": 7 + }, + { + "name": "label73", + "col": 1 + }, + { + "name": "label74", + "col": 7 + } + ], + "links": [ + { + "source": "label0", + "target": "label1", + "value": 13 + }, + { + "source": "label2", + "target": "label0", + "value": 1 + }, + { + "source": "label3", + "target": "label0", + "value": 1 + }, + { + "source": "label4", + "target": "label0", + "value": 1 + }, + { + "source": "label5", + "target": "label0", + "value": 1 + }, + { + "source": "label6", + "target": "label0", + "value": 1 + }, + { + "source": "label7", + "target": "label0", + "value": 1 + }, + { + "source": "label8", + "target": "label0", + "value": 1 + }, + { + "source": "label9", + "target": "label0", + "value": 1 + }, + { + "source": "label10", + "target": "label0", + "value": 1 + }, + { + "source": "label11", + "target": "label0", + "value": 1 + }, + { + "source": "label12", + "target": "label0", + "value": 1 + }, + { + "source": "label13", + "target": "label0", + "value": 1 + }, + { + "source": "label14", + "target": "label0", + "value": 1 + }, + { + "source": "label15", + "target": "label16", + "value": 1 + }, + { + "source": "label15", + "target": "label17", + "value": 1 + }, + { + "source": "label15", + "target": "label18", + "value": 1 + }, + { + "source": "label15", + "target": "label19", + "value": 1 + }, + { + "source": "label15", + "target": "label20", + "value": 1 + }, + { + "source": "label15", + "target": "label21", + "value": 1 + }, + { + "source": "label22", + "target": "label15", + "value": 1 + }, + { + "source": "label23", + "target": "label15", + "value": 1 + }, + { + "source": "label15", + "target": "label24", + "value": 1 + }, + { + "source": "label25", + "target": "label15", + "value": 1 + }, + { + "source": "label15", + "target": "label26", + "value": 1 + }, + { + "source": "label15", + "target": "label27", + "value": 1 + }, + { + "source": "label16", + "target": "label15", + "value": 1 + }, + { + "source": "label28", + "target": "label16", + "value": 1 + }, + { + "source": "label16", + "target": "label29", + "value": 1 + }, + { + "source": "label30", + "target": "label16", + "value": 1 + }, + { + "source": "label31", + "target": "label16", + "value": 1 + }, + { + "source": "label32", + "target": "label16", + "value": 1 + }, + { + "source": "label16", + "target": "label33", + "value": 1 + }, + { + "source": "label16", + "target": "label34", + "value": 1 + }, + { + "source": "label35", + "target": "label16", + "value": 1 + }, + { + "source": "label16", + "target": "label36", + "value": 1 + }, + { + "source": "label16", + "target": "label27", + "value": 1 + }, + { + "source": "label17", + "target": "label15", + "value": 1 + }, + { + "source": "label17", + "target": "label37", + "value": 1 + }, + { + "source": "label28", + "target": "label17", + "value": 1 + }, + { + "source": "label38", + "target": "label17", + "value": 1 + }, + { + "source": "label17", + "target": "label39", + "value": 1 + }, + { + "source": "label40", + "target": "label17", + "value": 1 + }, + { + "source": "label41", + "target": "label17", + "value": 1 + }, + { + "source": "label17", + "target": "label42", + "value": 1 + }, + { + "source": "label43", + "target": "label17", + "value": 1 + }, + { + "source": "label17", + "target": "label44", + "value": 1 + }, + { + "source": "label17", + "target": "label27", + "value": 1 + }, + { + "source": "label18", + "target": "label15", + "value": 1 + }, + { + "source": "label38", + "target": "label18", + "value": 1 + }, + { + "source": "label28", + "target": "label18", + "value": 1 + }, + { + "source": "label45", + "target": "label18", + "value": 1 + }, + { + "source": "label46", + "target": "label18", + "value": 1 + }, + { + "source": "label18", + "target": "label47", + "value": 1 + }, + { + "source": "label48", + "target": "label18", + "value": 1 + }, + { + "source": "label18", + "target": "label49", + "value": 1 + }, + { + "source": "label18", + "target": "label27", + "value": 1 + }, + { + "source": "label19", + "target": "label15", + "value": 1 + }, + { + "source": "label19", + "target": "label16", + "value": 1 + }, + { + "source": "label38", + "target": "label19", + "value": 1 + }, + { + "source": "label28", + "target": "label19", + "value": 1 + }, + { + "source": "label50", + "target": "label19", + "value": 1 + }, + { + "source": "label19", + "target": "label51", + "value": 1 + }, + { + "source": "label52", + "target": "label19", + "value": 1 + }, + { + "source": "label53", + "target": "label19", + "value": 1 + }, + { + "source": "label19", + "target": "label54", + "value": 1 + }, + { + "source": "label55", + "target": "label19", + "value": 1 + }, + { + "source": "label19", + "target": "label56", + "value": 1 + }, + { + "source": "label19", + "target": "label27", + "value": 1 + }, + { + "source": "label20", + "target": "label15", + "value": 1 + }, + { + "source": "label20", + "target": "label57", + "value": 1 + }, + { + "source": "label20", + "target": "label58", + "value": 1 + }, + { + "source": "label28", + "target": "label20", + "value": 1 + }, + { + "source": "label50", + "target": "label20", + "value": 1 + }, + { + "source": "label38", + "target": "label20", + "value": 1 + }, + { + "source": "label20", + "target": "label51", + "value": 1 + }, + { + "source": "label59", + "target": "label20", + "value": 1 + }, + { + "source": "label60", + "target": "label20", + "value": 1 + }, + { + "source": "label20", + "target": "label61", + "value": 1 + }, + { + "source": "label62", + "target": "label20", + "value": 1 + }, + { + "source": "label20", + "target": "label63", + "value": 1 + }, + { + "source": "label20", + "target": "label27", + "value": 1 + }, + { + "source": "label21", + "target": "label15", + "value": 1 + }, + { + "source": "label21", + "target": "label19", + "value": 1 + }, + { + "source": "label28", + "target": "label21", + "value": 1 + }, + { + "source": "label64", + "target": "label21", + "value": 1 + }, + { + "source": "label65", + "target": "label21", + "value": 1 + }, + { + "source": "label21", + "target": "label66", + "value": 1 + }, + { + "source": "label67", + "target": "label21", + "value": 1 + }, + { + "source": "label21", + "target": "label68", + "value": 1 + }, + { + "source": "label21", + "target": "label27", + "value": 1 + }, + { + "source": "label57", + "target": "label15", + "value": 1 + }, + { + "source": "label57", + "target": "label21", + "value": 1 + }, + { + "source": "label57", + "target": "label20", + "value": 1 + }, + { + "source": "label69", + "target": "label57", + "value": 1 + }, + { + "source": "label70", + "target": "label57", + "value": 1 + }, + { + "source": "label71", + "target": "label57", + "value": 1 + }, + { + "source": "label57", + "target": "label72", + "value": 1 + }, + { + "source": "label73", + "target": "label57", + "value": 1 + }, + { + "source": "label57", + "target": "label74", + "value": 1 + }, + { + "source": "label57", + "target": "label27", + "value": 1 + } + ] +} From d46e064ee20c1944753610ea599442ec716ec9c3 Mon Sep 17 00:00:00 2001 From: KQLLLY Date: Tue, 23 Feb 2021 18:06:19 +0200 Subject: [PATCH 12/12] oThe logic of shifting nodes down to up is simplified --- dist/d3-sankey-circular.es.js | 46 ++++++++++++----------------------- dist/d3-sankey-circular.js | 46 ++++++++++++----------------------- src/sankeyCircular.js | 23 ++---------------- 3 files changed, 32 insertions(+), 83 deletions(-) diff --git a/dist/d3-sankey-circular.es.js b/dist/d3-sankey-circular.es.js index 4ab0583..ee9d76f 100644 --- a/dist/d3-sankey-circular.es.js +++ b/dist/d3-sankey-circular.es.js @@ -532,44 +532,28 @@ function sankeyCircular () { // For each node in each column, check the node's vertical position in relation to its targets and sources vertical position // and shift up/down to be closer to the vertical middle of those targets and sources - function relaxLeftAndRight(alpha, id) { - var columnsLength = columns.length; - + function relaxLeftAndRight(alpha) { columns.forEach(function (nodes) { - var n = nodes.length; - var depth = nodes[0].depth; - nodes.forEach(function (node) { // check the node is not an orphan var nodeHeight; if (node.sourceLinks.length || node.targetLinks.length) { - if (node.partOfCycle && numberOfNonSelfLinkingCycles(node, id) > 0) ; else if (depth == 0 && n == 1) { - nodeHeight = node.y1 - node.y0; - - node.y0 = y1 / 2 - nodeHeight / 2; - node.y1 = y1 / 2 + nodeHeight / 2; - } else if (depth == columnsLength - 1 && n == 1) { - nodeHeight = node.y1 - node.y0; - - node.y0 = y1 / 2 - nodeHeight / 2; - node.y1 = y1 / 2 + nodeHeight / 2; + nodeHeight = node.y1 - node.y0; + node.y0 = y1 / 2 - nodeHeight / 2; + node.y1 = y1 / 2 + nodeHeight / 2; + var avg = 0; + + var avgTargetY = mean(node.sourceLinks, linkTargetCenter); + var avgSourceY = mean(node.targetLinks, linkSourceCenter); + if (avgTargetY && avgSourceY) { + avg = (avgTargetY + avgSourceY) / 2; } else { - var avg = 0; - - var avgTargetY = mean(node.sourceLinks, linkTargetCenter); - var avgSourceY = mean(node.targetLinks, linkSourceCenter); - - if (avgTargetY && avgSourceY) { - avg = (avgTargetY + avgSourceY) / 2; - } else { - avg = avgTargetY || avgSourceY; - } - - var dy = (avg - nodeCenter(node)) * alpha; - // positive if it node needs to move down - node.y0 += dy; - node.y1 += dy; + avg = avgTargetY || avgSourceY; } + var dy = (avg - nodeCenter(node)) * alpha; + // positive if it node needs to move down + node.y0 += dy; + node.y1 += dy; } }); }); diff --git a/dist/d3-sankey-circular.js b/dist/d3-sankey-circular.js index 9de8616..7d41bcd 100644 --- a/dist/d3-sankey-circular.js +++ b/dist/d3-sankey-circular.js @@ -535,44 +535,28 @@ // For each node in each column, check the node's vertical position in relation to its targets and sources vertical position // and shift up/down to be closer to the vertical middle of those targets and sources - function relaxLeftAndRight(alpha, id) { - var columnsLength = columns.length; - + function relaxLeftAndRight(alpha) { columns.forEach(function (nodes) { - var n = nodes.length; - var depth = nodes[0].depth; - nodes.forEach(function (node) { // check the node is not an orphan var nodeHeight; if (node.sourceLinks.length || node.targetLinks.length) { - if (node.partOfCycle && numberOfNonSelfLinkingCycles(node, id) > 0) ; else if (depth == 0 && n == 1) { - nodeHeight = node.y1 - node.y0; - - node.y0 = y1 / 2 - nodeHeight / 2; - node.y1 = y1 / 2 + nodeHeight / 2; - } else if (depth == columnsLength - 1 && n == 1) { - nodeHeight = node.y1 - node.y0; - - node.y0 = y1 / 2 - nodeHeight / 2; - node.y1 = y1 / 2 + nodeHeight / 2; + nodeHeight = node.y1 - node.y0; + node.y0 = y1 / 2 - nodeHeight / 2; + node.y1 = y1 / 2 + nodeHeight / 2; + var avg = 0; + + var avgTargetY = d3Array.mean(node.sourceLinks, linkTargetCenter); + var avgSourceY = d3Array.mean(node.targetLinks, linkSourceCenter); + if (avgTargetY && avgSourceY) { + avg = (avgTargetY + avgSourceY) / 2; } else { - var avg = 0; - - var avgTargetY = d3Array.mean(node.sourceLinks, linkTargetCenter); - var avgSourceY = d3Array.mean(node.targetLinks, linkSourceCenter); - - if (avgTargetY && avgSourceY) { - avg = (avgTargetY + avgSourceY) / 2; - } else { - avg = avgTargetY || avgSourceY; - } - - var dy = (avg - nodeCenter(node)) * alpha; - // positive if it node needs to move down - node.y0 += dy; - node.y1 += dy; + avg = avgTargetY || avgSourceY; } + var dy = (avg - nodeCenter(node)) * alpha; + // positive if it node needs to move down + node.y0 += dy; + node.y1 += dy; } }); }); diff --git a/src/sankeyCircular.js b/src/sankeyCircular.js index 3237690..370b847 100644 --- a/src/sankeyCircular.js +++ b/src/sankeyCircular.js @@ -533,33 +533,17 @@ import findCircuits from "elementary-circuits-directed-graph"; // For each node in each column, check the node's vertical position in relation to its targets and sources vertical position // and shift up/down to be closer to the vertical middle of those targets and sources - function relaxLeftAndRight (alpha, id) { - var columnsLength = columns.length - + function relaxLeftAndRight (alpha) { columns.forEach(function (nodes) { - var n = nodes.length - var depth = nodes[0].depth - nodes.forEach(function (node) { // check the node is not an orphan var nodeHeight if (node.sourceLinks.length || node.targetLinks.length) { - if (node.partOfCycle && numberOfNonSelfLinkingCycles(node, id) > 0) { - - /* empty */ - } else if (depth == 0 && n == 1) { nodeHeight = node.y1 - node.y0 - node.y0 = y1 / 2 - nodeHeight / 2 node.y1 = y1 / 2 + nodeHeight / 2 - } else if (depth == columnsLength - 1 && n == 1) { - nodeHeight = node.y1 - node.y0 - - node.y0 = y1 / 2 - nodeHeight / 2 - node.y1 = y1 / 2 + nodeHeight / 2 - } else { var avg = 0 - + var avgTargetY = mean( node.sourceLinks, linkTargetCenter @@ -568,19 +552,16 @@ import findCircuits from "elementary-circuits-directed-graph"; node.targetLinks, linkSourceCenter ) - if (avgTargetY && avgSourceY) { avg = (avgTargetY + avgSourceY) / 2 } else { avg = avgTargetY || avgSourceY } - var dy = (avg - nodeCenter(node)) * alpha // positive if it node needs to move down node.y0 += dy node.y1 += dy } - } }) }) }