refactor(self-trigger): Split native filters state (#13137)
* feat: add cross filters
* refactor: fix CR notes
* lint: fix lint
* lint: fix lint
* feat: POC adding filters set feature
* chore: pre-commit
* refactor: under chage
* lint: fix TS
* fix: fix FF name
* refactor: move to behaviors
* lint: fix lint
* refactor: update state of native filters
* refactor: finish refactor nativeFilter state
* feat: split native filters state
* refactor: refactor Time filter to use new API
* refactor: refactor Time filter to use new API
* refactor: fix CR notes
* fix: fix update values in filter bar
* refactor: save filter sets in meta
* feat(filter-sets): save filters sets in metadata
* refactor: partially fix ts
* refactor: merge conflicts
* refactor: add behaviors property
* refactor: add behaviors property
* fix: undo py changes
* fix: under some changes
* refactor: synx with master
* fix: undo FF
* fix: undo FF
* lint: ts-ignore
* chore: update lock file
* refactor: update enum
* refactor: naming of enum
* test: fix test
* test: update mocks
Co-authored-by: amitmiran137 <amit.miran@nielsen.com>
diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json
index 04b094b..2547c63 100644
--- a/superset-frontend/package-lock.json
+++ b/superset-frontend/package-lock.json
@@ -13,34 +13,34 @@
"@babel/runtime-corejs3": "^7.12.5",
"@data-ui/sparkline": "^0.0.84",
"@emotion/core": "^10.0.35",
- "@superset-ui/chart-controls": "^0.17.12",
- "@superset-ui/core": "^0.17.11",
- "@superset-ui/legacy-plugin-chart-calendar": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-chord": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-country-map": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-histogram": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-horizon": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-map-box": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-partition": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-rose": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-sankey": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-treemap": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-world-map": "^0.17.12",
- "@superset-ui/legacy-preset-chart-big-number": "^0.17.12",
+ "@superset-ui/chart-controls": "^0.17.13",
+ "@superset-ui/core": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-calendar": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-chord": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-country-map": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-histogram": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-horizon": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-map-box": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-partition": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-rose": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-sankey": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-treemap": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-world-map": "^0.17.13",
+ "@superset-ui/legacy-preset-chart-big-number": "^0.17.13",
"@superset-ui/legacy-preset-chart-deckgl": "^0.4.6",
- "@superset-ui/legacy-preset-chart-nvd3": "^0.17.12",
- "@superset-ui/plugin-chart-echarts": "^0.17.12",
- "@superset-ui/plugin-chart-table": "^0.17.12",
- "@superset-ui/plugin-chart-word-cloud": "^0.17.12",
- "@superset-ui/preset-chart-xy": "^0.17.12",
+ "@superset-ui/legacy-preset-chart-nvd3": "^0.17.13",
+ "@superset-ui/plugin-chart-echarts": "^0.17.13",
+ "@superset-ui/plugin-chart-table": "^0.17.13",
+ "@superset-ui/plugin-chart-word-cloud": "^0.17.13",
+ "@superset-ui/preset-chart-xy": "^0.17.13",
"@vx/responsive": "^0.0.195",
"abortcontroller-polyfill": "^1.1.9",
"antd": "^4.9.4",
@@ -15954,19 +15954,19 @@
}
},
"node_modules/@superset-ui/chart-controls": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.12.tgz",
- "integrity": "sha512-2IMaFR6sU8IM8TyGb3km8RMkkVp3zhqIMA11OI0pb8lyBJIxdbz8wpGoASpHCCBRhLyt7U0TV7yOePotFGklbw==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.13.tgz",
+ "integrity": "sha512-FwIPvkDSm/Qewx3IRQId4+8JdO/UcsfznSntzOZ3Syb+awyZbfNdF7OjqZOv501bMcXOrbMqiTqH6Kxoy4Y+8g==",
"dependencies": {
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/core": "0.17.13",
"lodash": "^4.17.15",
"prop-types": "^15.7.2"
}
},
"node_modules/@superset-ui/core": {
- "version": "0.17.11",
- "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.11.tgz",
- "integrity": "sha512-PNJAHjQMELyn8MADB5lp9jDx9SwgxMwR5e2SZDq0vBrcg+LNZCgvkptwXZ7bOTbTwavPVEWgwXa1A9v2TKvFRA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.13.tgz",
+ "integrity": "sha512-kY9wR2WKCHfbab7gVWFNpZrsYELSWPUZZUBUIduEvfmxWYVTkl98nv926Hle5bQk64OfuDbM0QzrxOApVJ3Sdg==",
"dependencies": {
"@babel/runtime": "^7.1.2",
"@emotion/core": "^10.0.28",
@@ -16047,12 +16047,12 @@
}
},
"node_modules/@superset-ui/legacy-plugin-chart-calendar": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.12.tgz",
- "integrity": "sha512-NYf5x3e4AIPeqmyq1Cog66zn3KgmpGXtwIp4RS2J2CIEWVZmvWaR8Xyjy1HifQWsFpmN+MjGr8L9lag6ejZZeQ==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.13.tgz",
+ "integrity": "sha512-98JTVEZ08xA6PPte1GrOvtTICk3Q0U1zQNrJZPwwXtPyet0/J9vQwOE8g399KaHb6+mND2ECUfKR++NOtXaC3w==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3-array": "^2.0.3",
"d3-selection": "^1.4.0",
"d3-tip": "^0.9.1",
@@ -16068,24 +16068,24 @@
}
},
"node_modules/@superset-ui/legacy-plugin-chart-chord": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.12.tgz",
- "integrity": "sha512-O7hjn02qPhD6qE21B6/EwvGVtcGDBJHlrcoJRjDhn8G0xNude7bwb0YlEHCZwlmvTinZD12rJv4l994V8/e5fg==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.13.tgz",
+ "integrity": "sha512-jdSY6uTIpsO5G6DE0sFOYfiWw+uVyzhNsM68L5QsW1DgbbGbZtr9+Uig0Ec4niQqzntjpCctNFEaeOPhs5QBmw==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"prop-types": "^15.6.2",
"react": "^16.13.1"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-country-map": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.12.tgz",
- "integrity": "sha512-92wIkd1ve5sVz3wEZ1YBGoeUj2dupcpVyIsazT9t3YuEOwa4fuhm8w7FLJ2mS3U791j9KI63RsPM08mssl38sA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.13.tgz",
+ "integrity": "sha512-2wwoVNZtxH7UXOdRjhqCj0BLBQ8GQTt0V8v1+VphqV6jlDCEQaJmSdSnfB0kbwjZ7bR5rmO4XmFxEHJnNUb/IA==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-array": "^2.0.3",
"prop-types": "^15.6.2"
@@ -16100,34 +16100,34 @@
}
},
"node_modules/@superset-ui/legacy-plugin-chart-event-flow": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.12.tgz",
- "integrity": "sha512-zm6udN2qJirAQZhtLnwjOe+xJfKmpYoGRz7zejLOYHTbkqlv7D+GoB0M/GXiEo6vUbV289Cms9KsrsUh7gYvSw==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.13.tgz",
+ "integrity": "sha512-4cUAueJw/Te3pw73fNObkHeEeXNRwxNObkE6Z4M/9Z7qXAXNvIdhakgelnO9wcM19vcMXhS1cr0rdu37q4IgwA==",
"dependencies": {
"@data-ui/event-flow": "^0.0.84",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"prop-types": "^15.6.2"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-force-directed": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.12.tgz",
- "integrity": "sha512-+2aljLZ6wO7D90l/EhgzsK+CKxOX+ldArovKXyUlBkWozaXBw27cA8I5Rj3tdbwbDMlN/bYxw44hnExVjKTYMQ==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.13.tgz",
+ "integrity": "sha512-A3UWjqzWxYBI7aS2c11452kn50K4L4wc5/moKJo6jJgcxZtn/qBb4hjJ5CybYrvS+b4KKrbgTJY5850iVgg3Kg==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"prop-types": "^15.7.2"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-heatmap": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.12.tgz",
- "integrity": "sha512-5K+dZ0688mn5KNza/b3SZ6h2d2VxY8gAXKaFBwyPjeabfexg5Sj1Squb5l4p7oTh1FSmLcAty0fXCwZALEh45g==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.13.tgz",
+ "integrity": "sha512-9Er9FmnUIyKuHPn8FmJsLBiXHpJaqjPH5utLQM+zCeGm3PLkJuM8PI5bHF/mNMnJRtqdMx4uWTmwoM+A4LLsag==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-svg-legend": "^1.x",
"d3-tip": "^0.9.1",
@@ -16135,14 +16135,14 @@
}
},
"node_modules/@superset-ui/legacy-plugin-chart-histogram": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.12.tgz",
- "integrity": "sha512-GNI0fmutspJvdNIDSeiOgXvpFwkqEB48ZiN/lf2/Vpjp1RY5fZDs+I3HlFo0XOveB5SkE2LMwIysO1ex7+ql+g==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.13.tgz",
+ "integrity": "sha512-pQFZuotoPvLuA93sfm+23/hIQL/CcawIEUaR4p+mkGvNpsFOf+FVjfI3wjk5Is9O7FJdD+zTSaZC73av1OjmkA==",
"dependencies": {
"@data-ui/histogram": "^0.0.84",
"@data-ui/theme": "^0.0.84",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@vx/legend": "^0.0.198",
"@vx/responsive": "^0.0.199",
"@vx/scale": "^0.0.197",
@@ -16208,12 +16208,12 @@
}
},
"node_modules/@superset-ui/legacy-plugin-chart-horizon": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.12.tgz",
- "integrity": "sha512-YQUMV494vP0Lu4pTdELsdR5CbXzQ78BRX0nxnyBXdXVb5UTxCVgXAhU7Q/eQQv2zJ3OXqUpQian2vCeTxqyvfA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.13.tgz",
+ "integrity": "sha512-9bVKRikN6zDd2UcgJTo5dtk2LkAyFrGX7/RVAxC0/GmUyhKwPL7XgoK278myB9c5DL1K2lPhHTz7s1/nQatbcA==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3-array": "^2.0.3",
"d3-scale": "^3.0.1",
"prop-types": "^15.6.2"
@@ -16240,12 +16240,12 @@
}
},
"node_modules/@superset-ui/legacy-plugin-chart-map-box": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.12.tgz",
- "integrity": "sha512-G0RznxH5LH6dj9mdgLV2Z0MObjruOWCgGqsbItDbo1wi4iR8SuNGHDQgAnv24MlGiMSrp5mOYcUSlzSRFl96KA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.13.tgz",
+ "integrity": "sha512-o+oR7FSH7Ep+jTxTOQb445RB8sNPBqs0o8BEOf8loEUlgSZUClQx8dQYSoxRpw6YjtWVD0J+4HtUzX2HQt++Ng==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"immutable": "^3.8.2",
"mapbox-gl": "^0.53.0",
"prop-types": "^15.6.2",
@@ -16263,118 +16263,118 @@
}
},
"node_modules/@superset-ui/legacy-plugin-chart-paired-t-test": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.12.tgz",
- "integrity": "sha512-e5FWzHzKpbB2tf5PabVIw1e7VXiBm+A6G9XvhmqNTLtFSlrQeehtje7pumjo6xYBeYwGcXJTLpgaQmplWaJ72w==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.13.tgz",
+ "integrity": "sha512-5evYJLS7/yVlA7OI8n3ioQEpsIz+8lSUaZo8n2wWbvRlqvApVNAx+ofppf5O9RqRgLfheYPT6FESUqTOAdRv+Q==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"distributions": "^1.0.0",
"prop-types": "^15.6.2",
"reactable": "^1.1.0"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-parallel-coordinates": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.12.tgz",
- "integrity": "sha512-34vtDU3bMwNQk6dst6uC+4R5MwZ6VoUs6y+I5ZdqcLZj1uiu4TPvcOyPKzvXvtOBXkWmb6CKMagWXeg0Lei/Sg==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.13.tgz",
+ "integrity": "sha512-alRR+psEv0chVuwLGemlhBM8+UwnO9nWQsFvV8IblL0rSGKMsuofeutljp5BOXiJu/rpumWXn3HpriMri0ABDg==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"prop-types": "^15.7.2"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-partition": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.12.tgz",
- "integrity": "sha512-4qSUzL5z3UwWjRpCIdSgwrjaHmj29rDzaPm77Aq0DVqNBTqk9dvQcwPeQPYjR/TrfuMB9jJ3rJYZqPI5F42lnw==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.13.tgz",
+ "integrity": "sha512-lkcWo2d47GPgmSxOyVGKRcNd5rm1EhNnbTN/vLVrRCkBJ1u3aOcWdm3xbAQBZNXk2LPFnZM5l9px3Q301znPew==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-hierarchy": "^1.1.8",
"prop-types": "^15.6.2"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-pivot-table": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.12.tgz",
- "integrity": "sha512-DgMVuUd/G1gUOg2mzqp+0GB0V9ri6o+bGijW37rISjqyDHpwbYUMaWp/64/thjNfYa/D0x6OgGqai6/kdzPutA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.13.tgz",
+ "integrity": "sha512-tsL+98WeQCeAbTkm6IdA0f/XlBX6pNnFH4MIrb4cw0GNSsJ/Yz5PiA+NUptnTMSX3k+DV10vtV/T2HtuhpDK4g==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"datatables.net-bs": "^1.10.15",
"prop-types": "^15.6.2"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-rose": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.12.tgz",
- "integrity": "sha512-ZIxSf153T4MW6Nbsld41TIk04sxwqA7d9EhL7NutAkN7yGgz8/dtlNvt2JfAQCVLbJnrH2b7xR+4FDYd+/ks2g==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.13.tgz",
+ "integrity": "sha512-Hz2nq14TzbUg8ynMi7zfbK5blgx4XBB25dRMvpv1jyQeTYw/IAPdMb3y0/61ouQItpCImjGWJt7ixCSYoIMJIg==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"nvd3": "1.8.6",
"prop-types": "^15.6.2"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-sankey": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.12.tgz",
- "integrity": "sha512-Wj3qLsN9Chfe6mvjRK7c9OfAeQij+JL0qDz01fa9FNKxMjNNi7eZkRb4mH6CkfYxJlLWjpVx1anInz+aCaoj4Q==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.13.tgz",
+ "integrity": "sha512-DDqS5zMKNtssZemaqetSc1Wm/Ymg7TayK34SmHAXzFJ0ZbzlWsUs6gSwY38MtTwfT/Yy/g+Cp6HfJjBsu//gdw==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-sankey": "^0.4.2",
"prop-types": "^15.6.2"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-sankey-loop": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.12.tgz",
- "integrity": "sha512-iqV3phKISwD5o+NniWXa4J5eFmGt03twmFZLAtNXR39AnG4HKHQxB7rwcQPYJA9U4A4TkgxCxQCxyndTb3VmOA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.13.tgz",
+ "integrity": "sha512-cfTrYKWu02TV31a4N3g7i8+JlpvTQUD8SQWV8bWfGqenCfaYXnEtLcT7a06AZD84c7xPVIJ3ri+e1levxyCi/Q==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3-sankey-diagram": "^0.7.3",
"d3-selection": "^1.4.0",
"prop-types": "^15.6.2"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-sunburst": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.12.tgz",
- "integrity": "sha512-Ml7uxXqpaMiTEzXFzM1hLOo5z8yQn3HUiXhV77W9OSjg05Y6uCai+d9TeAKiwLEU0OKCzku8jkOj35Cv5ZMPLg==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.13.tgz",
+ "integrity": "sha512-rpc91+qtAZAjxmJyuK39GJBnzyVPVVSA8XZ3iYHFPTYooiIM0QuRbYY8RVIsDqwIJ2gNCaCxD8ymA9OhIQjAEw==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"prop-types": "^15.6.2"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-treemap": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.12.tgz",
- "integrity": "sha512-kHoslysbX070nuI1zhYGFKWxS6sldpX0TRuGyDLM4anUApuw7y/+jZeOAu6Ws+T6akkVmJpis0fkKrkbeFFrNQ==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.13.tgz",
+ "integrity": "sha512-60zgDGCbj0o6x8vJeRNyPp1jpHFOBmpza2xrHshaAWef6tyI7btaiWyDAk1+1sm+f5gHuVWI4uP8J6rE7xeuBQ==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3-hierarchy": "^1.1.8",
"d3-selection": "^1.4.0",
"prop-types": "^15.6.2"
}
},
"node_modules/@superset-ui/legacy-plugin-chart-world-map": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.12.tgz",
- "integrity": "sha512-9nHlbcdpoUe0vEi7t/QtOcXDxTqz0W3zl2+s4hUNtEsHGdKNrVeir4f3sq1zF+OOLReKHBoL7MFv6cF8JUNMNA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.13.tgz",
+ "integrity": "sha512-xxN0roJlvSqVYJpXAMkCbNgscCN5skazLlxRa+M4LYT7C3XAigcUwR8SwhP6FN9lrDaupiGaxiygrCZ2JTZhKg==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-array": "^2.4.0",
"d3-color": "^1.4.1",
@@ -16396,13 +16396,13 @@
"integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
},
"node_modules/@superset-ui/legacy-preset-chart-big-number": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.12.tgz",
- "integrity": "sha512-GQNXqSA827Fch3eNaCaPMYERvWNRdaUqH00Suqq6BG+aYW+rKhIHaYBsY0eF/w1GRfZ+YjAh/yYyY21P+N/hqg==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.13.tgz",
+ "integrity": "sha512-GqFG/BS2370GgxOm5mjXqjUMYW3eZGkj9jNxZgeKLPzftXIZ1CglLO6jZw6xU6jpgEhzKpQomOjGBbD+Kdc/Mg==",
"dependencies": {
"@data-ui/xy-chart": "^0.0.84",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@types/d3-color": "^1.2.2",
"@types/shortid": "^0.0.29",
"d3-color": "^1.2.3",
@@ -16435,13 +16435,13 @@
}
},
"node_modules/@superset-ui/legacy-preset-chart-nvd3": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.12.tgz",
- "integrity": "sha512-e55scJz7FKnn82vtYSxQIbtNFiN7Ftx5guw76Rcm2hkx2bu2TWTgSq7J/4BuTgaSCZsDEt48PNWIeJsfiu+HFQ==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.13.tgz",
+ "integrity": "sha512-TQyMdtP34pXG9wO5LtfNhg1ZWOD4HIfhLzED+/jvkf2GTl5DY4hUHPlO1h3h4PRKz62tsSOMMSI3+RepiEHjsA==",
"dependencies": {
"@data-ui/xy-chart": "^0.0.84",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-tip": "^0.9.1",
"dompurify": "^2.0.6",
@@ -16455,12 +16455,12 @@
}
},
"node_modules/@superset-ui/plugin-chart-echarts": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.12.tgz",
- "integrity": "sha512-qMyfxv7XPUc+6k5QzJbhooCv2Jqjq/lS9B3VThU4sMZNuqiPmUPBykl7pdw+1TTX7QOJV73C35jm+YU0FAoL1A==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.13.tgz",
+ "integrity": "sha512-QVxbvsNjlT+L2T1WFmoTWM5aryZ++sHFNUIUX3i4hTAV/Di7obt2k6ps0vVdPBVpwmjjWzMuTCJX5Ppqs9n3Pg==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@types/mathjs": "^6.0.7",
"d3-array": "^1.2.0",
"echarts": "^5.0.2",
@@ -16468,13 +16468,13 @@
}
},
"node_modules/@superset-ui/plugin-chart-table": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.12.tgz",
- "integrity": "sha512-izJkv2rFUAg1aDgLD/nRbgmVw04b6wx5GrbqGjMFv1Y4fR13ZlSgz/QuVVFM7vj9UgQVcz3PA+DNEkiABGKRgA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.13.tgz",
+ "integrity": "sha512-ofh+g2ozHmlvd42BZvlRrcfU4i9FstMGrDCecSP4WKzMmrgbJbfW1zwpLE8CPGGV+6NaET/fIVWw2p+sj1CEig==",
"dependencies": {
"@emotion/core": "^10.0.28",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@types/d3-array": "^2.0.0",
"@types/react-table": "^7.0.19",
"d3-array": "^2.4.0",
@@ -16495,12 +16495,12 @@
}
},
"node_modules/@superset-ui/plugin-chart-word-cloud": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.12.tgz",
- "integrity": "sha512-QIJmig3nC/cdx1Ch06OqOnypYvHnkKzpd+YSj3WMXhEn5p2SRS0mqgM1n56/QvNbJegHi+xEuaZKZ4Cek3409g==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.13.tgz",
+ "integrity": "sha512-TVD5emY7sEljAuhk4da4uAEBlNPyjabzlMapP4Jjrulwy9rnYPXiyf6L6Z8BxoSY8RD09jdl7TRxQ/jTzCp+bg==",
"dependencies": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@types/d3-cloud": "^1.2.1",
"@types/d3-scale": "^2.0.2",
"d3-cloud": "^1.2.5",
@@ -16530,14 +16530,14 @@
}
},
"node_modules/@superset-ui/preset-chart-xy": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.12.tgz",
- "integrity": "sha512-UwXjsNKzAhYyjV+NJksr7nQ8YN3RUwzemxkHjpHX7tvIIquci3jqcCVbP8Ml19YxAs9o5gf+i6uUvn4Vtag+qw==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.13.tgz",
+ "integrity": "sha512-NJ5ACYe1AlZ9hb24NdntNx1CFVRyOAQtpvWWfKfEnQc26t0A8Bl68WL05pMazwHQ6fkthseRXlpUEzdVVyB7Lw==",
"dependencies": {
"@data-ui/theme": "^0.0.84",
"@data-ui/xy-chart": "^0.0.84",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@vx/axis": "^0.0.198",
"@vx/legend": "^0.0.198",
"@vx/scale": "^0.0.197",
@@ -71932,19 +71932,19 @@
}
},
"@superset-ui/chart-controls": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.12.tgz",
- "integrity": "sha512-2IMaFR6sU8IM8TyGb3km8RMkkVp3zhqIMA11OI0pb8lyBJIxdbz8wpGoASpHCCBRhLyt7U0TV7yOePotFGklbw==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/chart-controls/-/chart-controls-0.17.13.tgz",
+ "integrity": "sha512-FwIPvkDSm/Qewx3IRQId4+8JdO/UcsfznSntzOZ3Syb+awyZbfNdF7OjqZOv501bMcXOrbMqiTqH6Kxoy4Y+8g==",
"requires": {
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/core": "0.17.13",
"lodash": "^4.17.15",
"prop-types": "^15.7.2"
}
},
"@superset-ui/core": {
- "version": "0.17.11",
- "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.11.tgz",
- "integrity": "sha512-PNJAHjQMELyn8MADB5lp9jDx9SwgxMwR5e2SZDq0vBrcg+LNZCgvkptwXZ7bOTbTwavPVEWgwXa1A9v2TKvFRA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/core/-/core-0.17.13.tgz",
+ "integrity": "sha512-kY9wR2WKCHfbab7gVWFNpZrsYELSWPUZZUBUIduEvfmxWYVTkl98nv926Hle5bQk64OfuDbM0QzrxOApVJ3Sdg==",
"requires": {
"@babel/runtime": "^7.1.2",
"@emotion/core": "^10.0.28",
@@ -72027,12 +72027,12 @@
}
},
"@superset-ui/legacy-plugin-chart-calendar": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.12.tgz",
- "integrity": "sha512-NYf5x3e4AIPeqmyq1Cog66zn3KgmpGXtwIp4RS2J2CIEWVZmvWaR8Xyjy1HifQWsFpmN+MjGr8L9lag6ejZZeQ==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-calendar/-/legacy-plugin-chart-calendar-0.17.13.tgz",
+ "integrity": "sha512-98JTVEZ08xA6PPte1GrOvtTICk3Q0U1zQNrJZPwwXtPyet0/J9vQwOE8g399KaHb6+mND2ECUfKR++NOtXaC3w==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3-array": "^2.0.3",
"d3-selection": "^1.4.0",
"d3-tip": "^0.9.1",
@@ -72050,24 +72050,24 @@
}
},
"@superset-ui/legacy-plugin-chart-chord": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.12.tgz",
- "integrity": "sha512-O7hjn02qPhD6qE21B6/EwvGVtcGDBJHlrcoJRjDhn8G0xNude7bwb0YlEHCZwlmvTinZD12rJv4l994V8/e5fg==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-chord/-/legacy-plugin-chart-chord-0.17.13.tgz",
+ "integrity": "sha512-jdSY6uTIpsO5G6DE0sFOYfiWw+uVyzhNsM68L5QsW1DgbbGbZtr9+Uig0Ec4niQqzntjpCctNFEaeOPhs5QBmw==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"prop-types": "^15.6.2",
"react": "^16.13.1"
}
},
"@superset-ui/legacy-plugin-chart-country-map": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.12.tgz",
- "integrity": "sha512-92wIkd1ve5sVz3wEZ1YBGoeUj2dupcpVyIsazT9t3YuEOwa4fuhm8w7FLJ2mS3U791j9KI63RsPM08mssl38sA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-country-map/-/legacy-plugin-chart-country-map-0.17.13.tgz",
+ "integrity": "sha512-2wwoVNZtxH7UXOdRjhqCj0BLBQ8GQTt0V8v1+VphqV6jlDCEQaJmSdSnfB0kbwjZ7bR5rmO4XmFxEHJnNUb/IA==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-array": "^2.0.3",
"prop-types": "^15.6.2"
@@ -72084,34 +72084,34 @@
}
},
"@superset-ui/legacy-plugin-chart-event-flow": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.12.tgz",
- "integrity": "sha512-zm6udN2qJirAQZhtLnwjOe+xJfKmpYoGRz7zejLOYHTbkqlv7D+GoB0M/GXiEo6vUbV289Cms9KsrsUh7gYvSw==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-event-flow/-/legacy-plugin-chart-event-flow-0.17.13.tgz",
+ "integrity": "sha512-4cUAueJw/Te3pw73fNObkHeEeXNRwxNObkE6Z4M/9Z7qXAXNvIdhakgelnO9wcM19vcMXhS1cr0rdu37q4IgwA==",
"requires": {
"@data-ui/event-flow": "^0.0.84",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"prop-types": "^15.6.2"
}
},
"@superset-ui/legacy-plugin-chart-force-directed": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.12.tgz",
- "integrity": "sha512-+2aljLZ6wO7D90l/EhgzsK+CKxOX+ldArovKXyUlBkWozaXBw27cA8I5Rj3tdbwbDMlN/bYxw44hnExVjKTYMQ==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-force-directed/-/legacy-plugin-chart-force-directed-0.17.13.tgz",
+ "integrity": "sha512-A3UWjqzWxYBI7aS2c11452kn50K4L4wc5/moKJo6jJgcxZtn/qBb4hjJ5CybYrvS+b4KKrbgTJY5850iVgg3Kg==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"prop-types": "^15.7.2"
}
},
"@superset-ui/legacy-plugin-chart-heatmap": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.12.tgz",
- "integrity": "sha512-5K+dZ0688mn5KNza/b3SZ6h2d2VxY8gAXKaFBwyPjeabfexg5Sj1Squb5l4p7oTh1FSmLcAty0fXCwZALEh45g==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-heatmap/-/legacy-plugin-chart-heatmap-0.17.13.tgz",
+ "integrity": "sha512-9Er9FmnUIyKuHPn8FmJsLBiXHpJaqjPH5utLQM+zCeGm3PLkJuM8PI5bHF/mNMnJRtqdMx4uWTmwoM+A4LLsag==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-svg-legend": "^1.x",
"d3-tip": "^0.9.1",
@@ -72119,14 +72119,14 @@
}
},
"@superset-ui/legacy-plugin-chart-histogram": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.12.tgz",
- "integrity": "sha512-GNI0fmutspJvdNIDSeiOgXvpFwkqEB48ZiN/lf2/Vpjp1RY5fZDs+I3HlFo0XOveB5SkE2LMwIysO1ex7+ql+g==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-histogram/-/legacy-plugin-chart-histogram-0.17.13.tgz",
+ "integrity": "sha512-pQFZuotoPvLuA93sfm+23/hIQL/CcawIEUaR4p+mkGvNpsFOf+FVjfI3wjk5Is9O7FJdD+zTSaZC73av1OjmkA==",
"requires": {
"@data-ui/histogram": "^0.0.84",
"@data-ui/theme": "^0.0.84",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@vx/legend": "^0.0.198",
"@vx/responsive": "^0.0.199",
"@vx/scale": "^0.0.197",
@@ -72194,12 +72194,12 @@
}
},
"@superset-ui/legacy-plugin-chart-horizon": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.12.tgz",
- "integrity": "sha512-YQUMV494vP0Lu4pTdELsdR5CbXzQ78BRX0nxnyBXdXVb5UTxCVgXAhU7Q/eQQv2zJ3OXqUpQian2vCeTxqyvfA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-horizon/-/legacy-plugin-chart-horizon-0.17.13.tgz",
+ "integrity": "sha512-9bVKRikN6zDd2UcgJTo5dtk2LkAyFrGX7/RVAxC0/GmUyhKwPL7XgoK278myB9c5DL1K2lPhHTz7s1/nQatbcA==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3-array": "^2.0.3",
"d3-scale": "^3.0.1",
"prop-types": "^15.6.2"
@@ -72228,12 +72228,12 @@
}
},
"@superset-ui/legacy-plugin-chart-map-box": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.12.tgz",
- "integrity": "sha512-G0RznxH5LH6dj9mdgLV2Z0MObjruOWCgGqsbItDbo1wi4iR8SuNGHDQgAnv24MlGiMSrp5mOYcUSlzSRFl96KA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-map-box/-/legacy-plugin-chart-map-box-0.17.13.tgz",
+ "integrity": "sha512-o+oR7FSH7Ep+jTxTOQb445RB8sNPBqs0o8BEOf8loEUlgSZUClQx8dQYSoxRpw6YjtWVD0J+4HtUzX2HQt++Ng==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"immutable": "^3.8.2",
"mapbox-gl": "^0.53.0",
"prop-types": "^15.6.2",
@@ -72250,118 +72250,118 @@
}
},
"@superset-ui/legacy-plugin-chart-paired-t-test": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.12.tgz",
- "integrity": "sha512-e5FWzHzKpbB2tf5PabVIw1e7VXiBm+A6G9XvhmqNTLtFSlrQeehtje7pumjo6xYBeYwGcXJTLpgaQmplWaJ72w==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-paired-t-test/-/legacy-plugin-chart-paired-t-test-0.17.13.tgz",
+ "integrity": "sha512-5evYJLS7/yVlA7OI8n3ioQEpsIz+8lSUaZo8n2wWbvRlqvApVNAx+ofppf5O9RqRgLfheYPT6FESUqTOAdRv+Q==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"distributions": "^1.0.0",
"prop-types": "^15.6.2",
"reactable": "^1.1.0"
}
},
"@superset-ui/legacy-plugin-chart-parallel-coordinates": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.12.tgz",
- "integrity": "sha512-34vtDU3bMwNQk6dst6uC+4R5MwZ6VoUs6y+I5ZdqcLZj1uiu4TPvcOyPKzvXvtOBXkWmb6CKMagWXeg0Lei/Sg==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-parallel-coordinates/-/legacy-plugin-chart-parallel-coordinates-0.17.13.tgz",
+ "integrity": "sha512-alRR+psEv0chVuwLGemlhBM8+UwnO9nWQsFvV8IblL0rSGKMsuofeutljp5BOXiJu/rpumWXn3HpriMri0ABDg==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"prop-types": "^15.7.2"
}
},
"@superset-ui/legacy-plugin-chart-partition": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.12.tgz",
- "integrity": "sha512-4qSUzL5z3UwWjRpCIdSgwrjaHmj29rDzaPm77Aq0DVqNBTqk9dvQcwPeQPYjR/TrfuMB9jJ3rJYZqPI5F42lnw==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-partition/-/legacy-plugin-chart-partition-0.17.13.tgz",
+ "integrity": "sha512-lkcWo2d47GPgmSxOyVGKRcNd5rm1EhNnbTN/vLVrRCkBJ1u3aOcWdm3xbAQBZNXk2LPFnZM5l9px3Q301znPew==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-hierarchy": "^1.1.8",
"prop-types": "^15.6.2"
}
},
"@superset-ui/legacy-plugin-chart-pivot-table": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.12.tgz",
- "integrity": "sha512-DgMVuUd/G1gUOg2mzqp+0GB0V9ri6o+bGijW37rISjqyDHpwbYUMaWp/64/thjNfYa/D0x6OgGqai6/kdzPutA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-pivot-table/-/legacy-plugin-chart-pivot-table-0.17.13.tgz",
+ "integrity": "sha512-tsL+98WeQCeAbTkm6IdA0f/XlBX6pNnFH4MIrb4cw0GNSsJ/Yz5PiA+NUptnTMSX3k+DV10vtV/T2HtuhpDK4g==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"datatables.net-bs": "^1.10.15",
"prop-types": "^15.6.2"
}
},
"@superset-ui/legacy-plugin-chart-rose": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.12.tgz",
- "integrity": "sha512-ZIxSf153T4MW6Nbsld41TIk04sxwqA7d9EhL7NutAkN7yGgz8/dtlNvt2JfAQCVLbJnrH2b7xR+4FDYd+/ks2g==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-rose/-/legacy-plugin-chart-rose-0.17.13.tgz",
+ "integrity": "sha512-Hz2nq14TzbUg8ynMi7zfbK5blgx4XBB25dRMvpv1jyQeTYw/IAPdMb3y0/61ouQItpCImjGWJt7ixCSYoIMJIg==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"nvd3": "1.8.6",
"prop-types": "^15.6.2"
}
},
"@superset-ui/legacy-plugin-chart-sankey": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.12.tgz",
- "integrity": "sha512-Wj3qLsN9Chfe6mvjRK7c9OfAeQij+JL0qDz01fa9FNKxMjNNi7eZkRb4mH6CkfYxJlLWjpVx1anInz+aCaoj4Q==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey/-/legacy-plugin-chart-sankey-0.17.13.tgz",
+ "integrity": "sha512-DDqS5zMKNtssZemaqetSc1Wm/Ymg7TayK34SmHAXzFJ0ZbzlWsUs6gSwY38MtTwfT/Yy/g+Cp6HfJjBsu//gdw==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-sankey": "^0.4.2",
"prop-types": "^15.6.2"
}
},
"@superset-ui/legacy-plugin-chart-sankey-loop": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.12.tgz",
- "integrity": "sha512-iqV3phKISwD5o+NniWXa4J5eFmGt03twmFZLAtNXR39AnG4HKHQxB7rwcQPYJA9U4A4TkgxCxQCxyndTb3VmOA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sankey-loop/-/legacy-plugin-chart-sankey-loop-0.17.13.tgz",
+ "integrity": "sha512-cfTrYKWu02TV31a4N3g7i8+JlpvTQUD8SQWV8bWfGqenCfaYXnEtLcT7a06AZD84c7xPVIJ3ri+e1levxyCi/Q==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3-sankey-diagram": "^0.7.3",
"d3-selection": "^1.4.0",
"prop-types": "^15.6.2"
}
},
"@superset-ui/legacy-plugin-chart-sunburst": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.12.tgz",
- "integrity": "sha512-Ml7uxXqpaMiTEzXFzM1hLOo5z8yQn3HUiXhV77W9OSjg05Y6uCai+d9TeAKiwLEU0OKCzku8jkOj35Cv5ZMPLg==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-sunburst/-/legacy-plugin-chart-sunburst-0.17.13.tgz",
+ "integrity": "sha512-rpc91+qtAZAjxmJyuK39GJBnzyVPVVSA8XZ3iYHFPTYooiIM0QuRbYY8RVIsDqwIJ2gNCaCxD8ymA9OhIQjAEw==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"prop-types": "^15.6.2"
}
},
"@superset-ui/legacy-plugin-chart-treemap": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.12.tgz",
- "integrity": "sha512-kHoslysbX070nuI1zhYGFKWxS6sldpX0TRuGyDLM4anUApuw7y/+jZeOAu6Ws+T6akkVmJpis0fkKrkbeFFrNQ==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-treemap/-/legacy-plugin-chart-treemap-0.17.13.tgz",
+ "integrity": "sha512-60zgDGCbj0o6x8vJeRNyPp1jpHFOBmpza2xrHshaAWef6tyI7btaiWyDAk1+1sm+f5gHuVWI4uP8J6rE7xeuBQ==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3-hierarchy": "^1.1.8",
"d3-selection": "^1.4.0",
"prop-types": "^15.6.2"
}
},
"@superset-ui/legacy-plugin-chart-world-map": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.12.tgz",
- "integrity": "sha512-9nHlbcdpoUe0vEi7t/QtOcXDxTqz0W3zl2+s4hUNtEsHGdKNrVeir4f3sq1zF+OOLReKHBoL7MFv6cF8JUNMNA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-plugin-chart-world-map/-/legacy-plugin-chart-world-map-0.17.13.tgz",
+ "integrity": "sha512-xxN0roJlvSqVYJpXAMkCbNgscCN5skazLlxRa+M4LYT7C3XAigcUwR8SwhP6FN9lrDaupiGaxiygrCZ2JTZhKg==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-array": "^2.4.0",
"d3-color": "^1.4.1",
@@ -72385,13 +72385,13 @@
}
},
"@superset-ui/legacy-preset-chart-big-number": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.12.tgz",
- "integrity": "sha512-GQNXqSA827Fch3eNaCaPMYERvWNRdaUqH00Suqq6BG+aYW+rKhIHaYBsY0eF/w1GRfZ+YjAh/yYyY21P+N/hqg==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-big-number/-/legacy-preset-chart-big-number-0.17.13.tgz",
+ "integrity": "sha512-GqFG/BS2370GgxOm5mjXqjUMYW3eZGkj9jNxZgeKLPzftXIZ1CglLO6jZw6xU6jpgEhzKpQomOjGBbD+Kdc/Mg==",
"requires": {
"@data-ui/xy-chart": "^0.0.84",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@types/d3-color": "^1.2.2",
"@types/shortid": "^0.0.29",
"d3-color": "^1.2.3",
@@ -72424,13 +72424,13 @@
}
},
"@superset-ui/legacy-preset-chart-nvd3": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.12.tgz",
- "integrity": "sha512-e55scJz7FKnn82vtYSxQIbtNFiN7Ftx5guw76Rcm2hkx2bu2TWTgSq7J/4BuTgaSCZsDEt48PNWIeJsfiu+HFQ==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/legacy-preset-chart-nvd3/-/legacy-preset-chart-nvd3-0.17.13.tgz",
+ "integrity": "sha512-TQyMdtP34pXG9wO5LtfNhg1ZWOD4HIfhLzED+/jvkf2GTl5DY4hUHPlO1h3h4PRKz62tsSOMMSI3+RepiEHjsA==",
"requires": {
"@data-ui/xy-chart": "^0.0.84",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"d3": "^3.5.17",
"d3-tip": "^0.9.1",
"dompurify": "^2.0.6",
@@ -72444,12 +72444,12 @@
}
},
"@superset-ui/plugin-chart-echarts": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.12.tgz",
- "integrity": "sha512-qMyfxv7XPUc+6k5QzJbhooCv2Jqjq/lS9B3VThU4sMZNuqiPmUPBykl7pdw+1TTX7QOJV73C35jm+YU0FAoL1A==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-echarts/-/plugin-chart-echarts-0.17.13.tgz",
+ "integrity": "sha512-QVxbvsNjlT+L2T1WFmoTWM5aryZ++sHFNUIUX3i4hTAV/Di7obt2k6ps0vVdPBVpwmjjWzMuTCJX5Ppqs9n3Pg==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@types/mathjs": "^6.0.7",
"d3-array": "^1.2.0",
"echarts": "^5.0.2",
@@ -72457,13 +72457,13 @@
}
},
"@superset-ui/plugin-chart-table": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.12.tgz",
- "integrity": "sha512-izJkv2rFUAg1aDgLD/nRbgmVw04b6wx5GrbqGjMFv1Y4fR13ZlSgz/QuVVFM7vj9UgQVcz3PA+DNEkiABGKRgA==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.17.13.tgz",
+ "integrity": "sha512-ofh+g2ozHmlvd42BZvlRrcfU4i9FstMGrDCecSP4WKzMmrgbJbfW1zwpLE8CPGGV+6NaET/fIVWw2p+sj1CEig==",
"requires": {
"@emotion/core": "^10.0.28",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@types/d3-array": "^2.0.0",
"@types/react-table": "^7.0.19",
"d3-array": "^2.4.0",
@@ -72486,12 +72486,12 @@
}
},
"@superset-ui/plugin-chart-word-cloud": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.12.tgz",
- "integrity": "sha512-QIJmig3nC/cdx1Ch06OqOnypYvHnkKzpd+YSj3WMXhEn5p2SRS0mqgM1n56/QvNbJegHi+xEuaZKZ4Cek3409g==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-word-cloud/-/plugin-chart-word-cloud-0.17.13.tgz",
+ "integrity": "sha512-TVD5emY7sEljAuhk4da4uAEBlNPyjabzlMapP4Jjrulwy9rnYPXiyf6L6Z8BxoSY8RD09jdl7TRxQ/jTzCp+bg==",
"requires": {
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@types/d3-cloud": "^1.2.1",
"@types/d3-scale": "^2.0.2",
"d3-cloud": "^1.2.5",
@@ -72523,14 +72523,14 @@
}
},
"@superset-ui/preset-chart-xy": {
- "version": "0.17.12",
- "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.12.tgz",
- "integrity": "sha512-UwXjsNKzAhYyjV+NJksr7nQ8YN3RUwzemxkHjpHX7tvIIquci3jqcCVbP8Ml19YxAs9o5gf+i6uUvn4Vtag+qw==",
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@superset-ui/preset-chart-xy/-/preset-chart-xy-0.17.13.tgz",
+ "integrity": "sha512-NJ5ACYe1AlZ9hb24NdntNx1CFVRyOAQtpvWWfKfEnQc26t0A8Bl68WL05pMazwHQ6fkthseRXlpUEzdVVyB7Lw==",
"requires": {
"@data-ui/theme": "^0.0.84",
"@data-ui/xy-chart": "^0.0.84",
- "@superset-ui/chart-controls": "0.17.12",
- "@superset-ui/core": "0.17.11",
+ "@superset-ui/chart-controls": "0.17.13",
+ "@superset-ui/core": "0.17.13",
"@vx/axis": "^0.0.198",
"@vx/legend": "^0.0.198",
"@vx/scale": "^0.0.197",
diff --git a/superset-frontend/package.json b/superset-frontend/package.json
index c3acb02..5ef09e1 100644
--- a/superset-frontend/package.json
+++ b/superset-frontend/package.json
@@ -65,34 +65,34 @@
"@babel/runtime-corejs3": "^7.12.5",
"@data-ui/sparkline": "^0.0.84",
"@emotion/core": "^10.0.35",
- "@superset-ui/chart-controls": "^0.17.12",
- "@superset-ui/core": "^0.17.11",
- "@superset-ui/legacy-plugin-chart-calendar": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-chord": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-country-map": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-histogram": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-horizon": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-map-box": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-partition": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-rose": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-sankey": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-treemap": "^0.17.12",
- "@superset-ui/legacy-plugin-chart-world-map": "^0.17.12",
- "@superset-ui/legacy-preset-chart-big-number": "^0.17.12",
+ "@superset-ui/chart-controls": "^0.17.13",
+ "@superset-ui/core": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-calendar": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-chord": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-country-map": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-event-flow": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-force-directed": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-heatmap": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-histogram": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-horizon": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-map-box": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-partition": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-rose": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-sankey": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-sunburst": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-treemap": "^0.17.13",
+ "@superset-ui/legacy-plugin-chart-world-map": "^0.17.13",
+ "@superset-ui/legacy-preset-chart-big-number": "^0.17.13",
"@superset-ui/legacy-preset-chart-deckgl": "^0.4.6",
- "@superset-ui/legacy-preset-chart-nvd3": "^0.17.12",
- "@superset-ui/plugin-chart-echarts": "^0.17.12",
- "@superset-ui/plugin-chart-table": "^0.17.12",
- "@superset-ui/plugin-chart-word-cloud": "^0.17.12",
- "@superset-ui/preset-chart-xy": "^0.17.12",
+ "@superset-ui/legacy-preset-chart-nvd3": "^0.17.13",
+ "@superset-ui/plugin-chart-echarts": "^0.17.13",
+ "@superset-ui/plugin-chart-table": "^0.17.13",
+ "@superset-ui/plugin-chart-word-cloud": "^0.17.13",
+ "@superset-ui/preset-chart-xy": "^0.17.13",
"@vx/responsive": "^0.0.195",
"abortcontroller-polyfill": "^1.1.9",
"antd": "^4.9.4",
diff --git a/superset-frontend/spec/fixtures/mockNativeFilters.ts b/superset-frontend/spec/fixtures/mockNativeFilters.ts
index 207a939..b60bff2 100644
--- a/superset-frontend/spec/fixtures/mockNativeFilters.ts
+++ b/superset-frontend/spec/fixtures/mockNativeFilters.ts
@@ -73,27 +73,31 @@
},
},
filtersState: {
- 'NATIVE_FILTER-e7Q8zKixx': {
- id: 'NATIVE_FILTER-e7Q8zKixx',
- currentState: {
- value: ['East Asia & Pacific'],
- },
- extraFormData: {
- append_form_data: {
- filters: [
- {
- col: 'region',
- op: 'IN',
- val: ['East Asia & Pacific'],
- },
- ],
+ crossFilters: {},
+ ownFilters: {},
+ nativeFilters: {
+ 'NATIVE_FILTER-e7Q8zKixx': {
+ id: 'NATIVE_FILTER-e7Q8zKixx',
+ extraFormData: {
+ append_form_data: {
+ filters: [
+ {
+ col: 'region',
+ op: 'IN',
+ val: ['East Asia & Pacific'],
+ },
+ ],
+ },
+ },
+ currentState: {
+ value: ['East Asia & Pacific'],
},
},
- },
- 'NATIVE_FILTER-x9QPw0so1': {
- id: 'NATIVE_FILTER-x9QPw0so1',
- extraFormData: {},
- currentState: {},
+ 'NATIVE_FILTER-x9QPw0so1': {
+ id: 'NATIVE_FILTER-x9QPw0so1',
+ extraFormData: {},
+ currentState: {},
+ },
},
},
};
@@ -129,11 +133,13 @@
},
},
filtersState: {
- [NATIVE_FILTER_ID]: {
- id: NATIVE_FILTER_ID,
- extraFormData,
- currentState: {
- value: ['No, not an ethnic minority'],
+ nativeFilters: {
+ [NATIVE_FILTER_ID]: {
+ id: NATIVE_FILTER_ID,
+ extraFormData,
+ currentState: {
+ value: ['No, not an ethnic minority'],
+ },
},
},
},
diff --git a/superset-frontend/spec/javascripts/dashboard/components/Dashboard_spec.jsx b/superset-frontend/spec/javascripts/dashboard/components/Dashboard_spec.jsx
index 972498e..96b7e6c 100644
--- a/superset-frontend/spec/javascripts/dashboard/components/Dashboard_spec.jsx
+++ b/superset-frontend/spec/javascripts/dashboard/components/Dashboard_spec.jsx
@@ -53,6 +53,7 @@
dashboardInfo,
charts: chartQueries,
activeFilters: {},
+ ownDataCharts: {},
slices: sliceEntities.slices,
datasources,
layout: dashboardLayout.present,
diff --git a/superset-frontend/spec/javascripts/dashboard/fixtures/mockNativeFilters.js b/superset-frontend/spec/javascripts/dashboard/fixtures/mockNativeFilters.js
index 8ed2bb7..a667ffc 100644
--- a/superset-frontend/spec/javascripts/dashboard/fixtures/mockNativeFilters.js
+++ b/superset-frontend/spec/javascripts/dashboard/fixtures/mockNativeFilters.js
@@ -42,9 +42,13 @@
},
},
filtersState: {
- DefaultsID: {
- id: 'DefaultId',
- selectedValues: [],
+ nativeFilters: {
+ DefaultsID: {
+ id: 'DefaultId',
+ currentState: {
+ value: [],
+ },
+ },
},
},
};
diff --git a/superset-frontend/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.ts b/superset-frontend/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.ts
index c5db75f..7f538fb 100644
--- a/superset-frontend/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.ts
+++ b/superset-frontend/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.ts
@@ -62,10 +62,14 @@
} as unknown) as Filter,
},
filtersState: {
- [filterId]: {
- id: filterId,
- extraFormData: {},
- currentState: {},
+ crossFilters: {},
+ ownFilters: {},
+ nativeFilters: {
+ [filterId]: {
+ id: filterId,
+ extraFormData: {},
+ currentState: {},
+ },
},
},
},
diff --git a/superset-frontend/src/chart/ChartContainer.jsx b/superset-frontend/src/chart/ChartContainer.jsx
index ecc4a2d..118acec 100644
--- a/superset-frontend/src/chart/ChartContainer.jsx
+++ b/superset-frontend/src/chart/ChartContainer.jsx
@@ -22,14 +22,14 @@
import * as actions from './chartAction';
import { logEvent } from '../logger/actions';
import Chart from './Chart';
-import { setExtraFormData } from '../dashboard/actions/nativeFilters';
+import { updateExtraFormData } from '../dashboard/actions/nativeFilters';
function mapDispatchToProps(dispatch) {
return {
actions: bindActionCreators(
{
...actions,
- setExtraFormData,
+ updateExtraFormData,
logEvent,
},
dispatch,
diff --git a/superset-frontend/src/chart/ChartRenderer.jsx b/superset-frontend/src/chart/ChartRenderer.jsx
index e4b24a7..ca391ba 100644
--- a/superset-frontend/src/chart/ChartRenderer.jsx
+++ b/superset-frontend/src/chart/ChartRenderer.jsx
@@ -19,7 +19,7 @@
import { snakeCase } from 'lodash';
import PropTypes from 'prop-types';
import React from 'react';
-import { SuperChart, logging } from '@superset-ui/core';
+import { SuperChart, logging, Behavior } from '@superset-ui/core';
import { Logger, LOG_ACTIONS_RENDER_CHART } from '../logger/LogUtils';
const propTypes = {
@@ -42,9 +42,10 @@
refreshOverlayVisible: PropTypes.bool,
// dashboard callbacks
addFilter: PropTypes.func,
- setExtraFormData: PropTypes.func,
+ setDataMask: PropTypes.func,
onFilterMenuOpen: PropTypes.func,
onFilterMenuClose: PropTypes.func,
+ ownCurrentState: PropTypes.object,
};
const BLANK = {};
@@ -74,12 +75,12 @@
setControlValue: this.handleSetControlValue,
onFilterMenuOpen: this.props.onFilterMenuOpen,
onFilterMenuClose: this.props.onFilterMenuClose,
- setExtraFormData: ({ extraFormData, currentState }) =>
- this.props.actions?.setExtraFormData(
+ setDataMask: filtersState => {
+ this.props.actions?.updateExtraFormData(
this.props.chartId,
- extraFormData,
- currentState,
- ),
+ filtersState,
+ );
+ },
};
}
@@ -185,6 +186,7 @@
annotationData,
datasource,
initialValues,
+ ownCurrentState,
formData,
queriesResponse,
} = this.props;
@@ -224,7 +226,9 @@
datasource={datasource}
initialValues={initialValues}
formData={formData}
+ ownCurrentState={ownCurrentState}
hooks={this.hooks}
+ behaviors={[Behavior.CROSS_FILTER]}
queriesData={queriesResponse}
onRenderSuccess={this.handleRenderSuccess}
onRenderFailure={this.handleRenderFailure}
diff --git a/superset-frontend/src/dashboard/actions/nativeFilters.ts b/superset-frontend/src/dashboard/actions/nativeFilters.ts
index 985c229..6b3c655 100644
--- a/superset-frontend/src/dashboard/actions/nativeFilters.ts
+++ b/superset-frontend/src/dashboard/actions/nativeFilters.ts
@@ -17,14 +17,15 @@
* under the License.
*/
-import { ExtraFormData, makeApi } from '@superset-ui/core';
+import { makeApi, DataMask } from '@superset-ui/core';
import { Dispatch } from 'redux';
import { FilterConfiguration } from 'src/dashboard/components/nativeFilters/types';
import { dashboardInfoChanged } from './dashboardInfo';
import {
- CurrentFilterState,
+ FiltersState,
+ FilterState,
FiltersSet,
- NativeFilterState,
+ FilterStateType,
} from '../reducers/types';
export const SET_FILTER_CONFIG_BEGIN = 'SET_FILTER_CONFIG_BEGIN';
@@ -142,51 +143,49 @@
}
};
-export const SET_EXTRA_FORM_DATA = 'SET_EXTRA_FORM_DATA';
-export interface SetExtraFormData {
- type: typeof SET_EXTRA_FORM_DATA;
+export const UPDATE_EXTRA_FORM_DATA = 'UPDATE_EXTRA_FORM_DATA';
+export interface UpdateExtraFormData {
+ type: typeof UPDATE_EXTRA_FORM_DATA;
filterId: string;
- extraFormData: ExtraFormData;
- currentState: CurrentFilterState;
+ nativeFilters?: Omit<FilterState, 'id'>;
+ crossFilters?: Omit<FilterState, 'id'>;
+ ownFilters?: Omit<FilterState, 'id'>;
}
export const SAVE_FILTER_SETS = 'SAVE_FILTER_SETS';
export interface SaveFilterSets {
type: typeof SAVE_FILTER_SETS;
name: string;
- filtersState: NativeFilterState;
+ filtersState: Pick<FiltersState, FilterStateType.NativeFilters>;
filtersSetId: string;
}
export const SET_FILTERS_STATE = 'SET_FILTERS_STATE';
export interface SetFiltersState {
type: typeof SET_FILTERS_STATE;
- filtersState: NativeFilterState;
+ filtersState: FiltersState;
}
/**
* Sets the selected option(s) for a given filter
- * @param filterId the id of the native filter
- * @param extraFormData the selection translated into extra form data
- * @param currentState
+ * @param filterId the id of the nativeFilters filter
+ * @param filterState
*/
-export function setExtraFormData(
+export function updateExtraFormData(
filterId: string,
- extraFormData: ExtraFormData,
- currentState: CurrentFilterState,
-): SetExtraFormData {
+ filterState: DataMask,
+): UpdateExtraFormData {
return {
- type: SET_EXTRA_FORM_DATA,
+ type: UPDATE_EXTRA_FORM_DATA,
filterId,
- extraFormData,
- currentState,
+ ...filterState,
};
}
export function saveFilterSets(
name: string,
filtersSetId: string,
- filtersState: NativeFilterState,
+ filtersState: Pick<FiltersState, FilterStateType.NativeFilters>,
): SaveFilterSets {
return {
type: SAVE_FILTER_SETS,
@@ -196,9 +195,7 @@
};
}
-export function setFiltersState(
- filtersState: NativeFilterState,
-): SetFiltersState {
+export function setFiltersState(filtersState: FiltersState): SetFiltersState {
return {
type: SET_FILTERS_STATE,
filtersState,
@@ -213,5 +210,5 @@
| SetFilterSetsConfigComplete
| SetFilterSetsConfigFail
| SetFiltersState
- | SetExtraFormData
- | SaveFilterSets;
+ | SaveFilterSets
+ | UpdateExtraFormData;
diff --git a/superset-frontend/src/dashboard/components/Dashboard.jsx b/superset-frontend/src/dashboard/components/Dashboard.jsx
index 3f3a792..859b560 100644
--- a/superset-frontend/src/dashboard/components/Dashboard.jsx
+++ b/superset-frontend/src/dashboard/components/Dashboard.jsx
@@ -42,6 +42,7 @@
import '../stylesheets/index.less';
import getLocationHash from '../util/getLocationHash';
import isDashboardEmpty from '../util/isDashboardEmpty';
+import { getAffectedOwnDataCharts } from '../util/charts/getOwnDataCharts';
const propTypes = {
actions: PropTypes.shape({
@@ -56,6 +57,7 @@
slices: PropTypes.objectOf(slicePropShape).isRequired,
activeFilters: PropTypes.object.isRequired,
datasources: PropTypes.object.isRequired,
+ ownDataCharts: PropTypes.object.isRequired,
layout: PropTypes.object.isRequired,
impressionId: PropTypes.string.isRequired,
initMessages: PropTypes.array,
@@ -88,7 +90,8 @@
constructor(props) {
super(props);
- this.appliedFilters = props.activeFilters || {};
+ this.appliedFilters = props.activeFilters ?? {};
+ this.appliedOwnDataCharts = props.ownDataCharts ?? {};
this.onVisibilityChange = this.onVisibilityChange.bind(this);
}
@@ -147,9 +150,13 @@
componentDidUpdate() {
const { hasUnsavedChanges, editMode } = this.props.dashboardState;
- const { appliedFilters } = this;
- const { activeFilters } = this.props;
- if (!editMode && !areObjectsEqual(appliedFilters, activeFilters)) {
+ const { appliedFilters, appliedOwnDataCharts } = this;
+ const { activeFilters, ownDataCharts } = this.props;
+ if (
+ !editMode &&
+ (!areObjectsEqual(appliedOwnDataCharts, ownDataCharts) ||
+ !areObjectsEqual(appliedFilters, activeFilters))
+ ) {
this.applyFilters();
}
@@ -188,14 +195,17 @@
applyFilters() {
const { appliedFilters } = this;
- const { activeFilters } = this.props;
+ const { activeFilters, ownDataCharts } = this.props;
// refresh charts if a filter was removed, added, or changed
const currFilterKeys = Object.keys(activeFilters);
const appliedFilterKeys = Object.keys(appliedFilters);
const allKeys = new Set(currFilterKeys.concat(appliedFilterKeys));
- const affectedChartIds = [];
+ const affectedChartIds = getAffectedOwnDataCharts(
+ ownDataCharts,
+ this.appliedOwnDataCharts,
+ );
[...allKeys].forEach(filterKey => {
if (!currFilterKeys.includes(filterKey)) {
// filterKey is removed?
@@ -234,6 +244,7 @@
// remove dup in affectedChartIds
this.refreshCharts([...new Set(affectedChartIds)]);
this.appliedFilters = activeFilters;
+ this.appliedOwnDataCharts = ownDataCharts;
}
refreshCharts(ids) {
diff --git a/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts b/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts
index 2a42d04..abef1af 100644
--- a/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts
+++ b/superset-frontend/src/dashboard/components/FiltersBadge/selectors.ts
@@ -210,7 +210,8 @@
layoutItem => dashboardLayout[layoutItem]?.meta?.chartId === chartId,
);
const column = nativeFilter.targets[0]?.column?.name;
- const filterState = nativeFilters.filtersState[nativeFilter.id];
+ const filterState =
+ nativeFilters.filtersState.nativeFilters?.[nativeFilter.id];
let value = filterState?.currentState?.value ?? [];
if (!Array.isArray(value)) {
value = [value];
diff --git a/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx b/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx
index 8229994..cdc8ba9 100644
--- a/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx
+++ b/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx
@@ -69,6 +69,7 @@
sliceCanEdit: PropTypes.bool.isRequired,
addSuccessToast: PropTypes.func.isRequired,
addDangerToast: PropTypes.func.isRequired,
+ ownCurrentState: PropTypes.object,
};
const defaultProps = {
@@ -259,6 +260,7 @@
sliceCanEdit,
addSuccessToast,
addDangerToast,
+ ownCurrentState,
handleToggleFullSize,
isFullSize,
} = this.props;
@@ -360,6 +362,7 @@
dashboardId={dashboardId}
initialValues={initialValues}
formData={formData}
+ ownCurrentState={ownCurrentState}
queriesResponse={chart.queriesResponse}
timeout={timeout}
triggerQuery={chart.triggerQuery}
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadeFilterControl.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadeFilterControl.tsx
index 0a2f32c..8d7f60f 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadeFilterControl.tsx
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadeFilterControl.tsx
@@ -17,9 +17,8 @@
* under the License.
*/
import React from 'react';
-import { ExtraFormData, styled } from '@superset-ui/core';
+import { styled, DataMask } from '@superset-ui/core';
import Icon from 'src/components/Icon';
-import { CurrentFilterState } from 'src/dashboard/reducers/types';
import FilterControl from './FilterControl';
import { Filter } from '../types';
import { CascadeFilter } from './types';
@@ -27,11 +26,7 @@
interface CascadeFilterControlProps {
filter: CascadeFilter;
directPathToChild?: string[];
- onFilterSelectionChange: (
- filter: Filter,
- extraFormData: ExtraFormData,
- currentState: CurrentFilterState,
- ) => void;
+ onFilterSelectionChange: (filter: Filter, filterState: DataMask) => void;
}
const StyledCascadeChildrenList = styled.ul`
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadePopover.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadePopover.tsx
index 0a51df0..0ab31ac 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadePopover.tsx
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadePopover.tsx
@@ -17,12 +17,11 @@
* under the License.
*/
import React, { useCallback, useEffect, useMemo, useState } from 'react';
-import { ExtraFormData, styled, t } from '@superset-ui/core';
+import { styled, t, DataMask } from '@superset-ui/core';
import Popover from 'src/common/components/Popover';
import Icon from 'src/components/Icon';
import { Pill } from 'src/dashboard/components/FiltersBadge/Styles';
-import { CurrentFilterState } from 'src/dashboard/reducers/types';
-import { useFilterState } from './state';
+import { useFilterStateNative } from './state';
import FilterControl from './FilterControl';
import CascadeFilterControl from './CascadeFilterControl';
import { CascadeFilter } from './types';
@@ -33,11 +32,7 @@
visible: boolean;
directPathToChild?: string[];
onVisibleChange: (visible: boolean) => void;
- onFilterSelectionChange: (
- filter: Filter,
- extraFormData: ExtraFormData,
- currentState: CurrentFilterState,
- ) => void;
+ onFilterSelectionChange: (filter: Filter, filterState: DataMask) => void;
}
const StyledTitleBox = styled.div`
@@ -85,7 +80,7 @@
directPathToChild,
}) => {
const [currentPathToChild, setCurrentPathToChild] = useState<string[]>();
- const filterState = useFilterState(filter.id);
+ const filterStateNative = useFilterStateNative(filter.id);
useEffect(() => {
setCurrentPathToChild(directPathToChild);
@@ -98,7 +93,7 @@
const getActiveChildren = useCallback(
(filter: CascadeFilter): CascadeFilter[] | null => {
const children = filter.cascadeChildren || [];
- const currentValue = filterState.currentState?.value;
+ const currentValue = filterStateNative.currentState?.value;
const activeChildren = children.flatMap(
childFilter => getActiveChildren(childFilter) || [],
@@ -114,7 +109,7 @@
return null;
},
- [filterState],
+ [filterStateNative],
);
const getAllFilters = (filter: CascadeFilter): CascadeFilter[] => {
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.tsx
index f5db6c6..b1c403e 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.tsx
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBar.tsx
@@ -16,27 +16,21 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { styled, t, tn, ExtraFormData } from '@superset-ui/core';
+import { styled, t, tn, DataMask } from '@superset-ui/core';
import React, { useState, useEffect, useMemo, ChangeEvent } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import cx from 'classnames';
import Button from 'src/components/Button';
import Icon from 'src/components/Icon';
-import {
- CurrentFilterState,
- FiltersSet,
- NativeFilterState,
-} from 'src/dashboard/reducers/types';
+import { FiltersSet, FilterState } from 'src/dashboard/reducers/types';
import { Input, Select } from 'src/common/components';
import { FeatureFlag, isFeatureEnabled } from 'src/featureFlags';
-import { setFilterSetsConfiguration } from 'src/dashboard/actions/nativeFilters';
-import FilterConfigurationLink from './FilterConfigurationLink';
import {
- useFilters,
- useFilterSets,
- useFiltersState,
- useSetExtraFormData,
-} from './state';
+ setFilterSetsConfiguration,
+ updateExtraFormData,
+} from 'src/dashboard/actions/nativeFilters';
+import FilterConfigurationLink from './FilterConfigurationLink';
+import { useFilters, useFilterSets, useFiltersStateNative } from './state';
import { useFilterConfiguration } from '../state';
import { Filter } from '../types';
import {
@@ -183,14 +177,10 @@
directPathToChild,
}) => {
const [filterData, setFilterData] = useState<{
- [id: string]: {
- extraFormData: ExtraFormData;
- currentState: CurrentFilterState;
- };
+ [filterId: string]: Omit<FilterState, 'id'>;
}>({});
const dispatch = useDispatch();
- const setExtraFormData = useSetExtraFormData();
- const filtersState = useFiltersState();
+ const filtersStateNative = useFiltersStateNative();
const filterSets = useFilterSets();
const filterConfigs = useFilterConfiguration();
const filterSetsConfigs = useSelector<any, FiltersSet[]>(
@@ -242,22 +232,21 @@
const handleFilterSelectionChange = (
filter: Pick<Filter, 'id'> & Partial<Filter>,
- extraFormData: ExtraFormData,
- currentState: CurrentFilterState,
+ filtersState: DataMask,
) => {
setFilterData(prevFilterData => {
const children = cascadeChildren[filter.id] || [];
// force instant updating on initialization or for parent filters
if (filter.isInstant || children.length > 0) {
- setExtraFormData(filter.id, extraFormData, currentState);
+ dispatch(updateExtraFormData(filter.id, filtersState));
}
+ if (!filtersState.nativeFilters) {
+ return { ...prevFilterData };
+ }
return {
...prevFilterData,
- [filter.id]: {
- extraFormData,
- currentState,
- },
+ [filter.id]: filtersState.nativeFilters,
};
});
};
@@ -268,24 +257,25 @@
return;
}
const filtersSet = filterSets[value];
- Object.values(filtersSet.filtersState).forEach(filterState => {
- const {
- extraFormData,
- currentState,
- id,
- } = filterState as NativeFilterState;
- handleFilterSelectionChange({ id }, extraFormData, currentState);
- });
+ Object.values(filtersSet.filtersState?.nativeFilters ?? []).forEach(
+ filterState => {
+ const { extraFormData, currentState, id } = filterState as FilterState;
+ handleFilterSelectionChange(
+ { id },
+ { nativeFilters: { extraFormData, currentState } },
+ );
+ },
+ );
};
const handleApply = () => {
const filterIds = Object.keys(filterData);
filterIds.forEach(filterId => {
if (filterData[filterId]) {
- setExtraFormData(
- filterId,
- filterData[filterId]?.extraFormData,
- filterData[filterId]?.currentState,
+ dispatch(
+ updateExtraFormData(filterId, {
+ nativeFilters: filterData[filterId],
+ }),
);
}
});
@@ -304,8 +294,9 @@
{
name: filtersSetName.trim(),
id: generateFiltersSetId(),
- // TODO: After merge https://github.com/apache/superset/pull/13137, compare if data changed (meantime save only clicking `apply`)
- filtersState,
+ filtersState: {
+ nativeFilters: filtersStateNative,
+ },
},
]),
),
@@ -327,10 +318,16 @@
const handleResetAll = () => {
filterConfigs.forEach(filter => {
- setExtraFormData(filter.id, filterData[filter.id]?.extraFormData, {
- ...filterData[filter.id]?.currentState,
- value: filters[filter.id]?.defaultValue,
- });
+ dispatch(
+ updateExtraFormData(filter.id, {
+ nativeFilters: {
+ currentState: {
+ ...filterData[filter.id]?.currentState,
+ value: filters[filter.id]?.defaultValue,
+ },
+ },
+ }),
+ );
});
};
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterValue.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterValue.tsx
index 6d93528..b2b45fc 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterValue.tsx
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterValue.tsx
@@ -18,17 +18,17 @@
*/
import React, { useEffect, useRef, useState } from 'react';
import {
- ExtraFormData,
QueryFormData,
styled,
SuperChart,
+ DataMask,
t,
+ Behavior,
} from '@superset-ui/core';
import { areObjectsEqual } from 'src/reduxUtils';
import { getChartDataRequest } from 'src/chart/chartAction';
import Loading from 'src/components/Loading';
import BasicErrorAlert from 'src/components/ErrorMessage/BasicErrorAlert';
-import { CurrentFilterState } from 'src/dashboard/reducers/types';
import { FilterProps } from './types';
import { getFormData } from '../utils';
import { useCascadingFilters } from './state';
@@ -109,13 +109,8 @@
return undefined;
}, [inputRef, directPathToChild, filter.id]);
- const setExtraFormData = ({
- extraFormData,
- currentState,
- }: {
- extraFormData: ExtraFormData;
- currentState: CurrentFilterState;
- }) => onFilterSelectionChange(filter, extraFormData, currentState);
+ const setDataMask = (dataMask: DataMask) =>
+ onFilterSelectionChange(filter, dataMask);
if (loading) {
return (
@@ -144,8 +139,8 @@
// For charts that don't have datasource we need workaround for empty placeholder
queriesData={hasDataSource ? state : [{ data: [null] }]}
chartType={filterType}
- // @ts-ignore (update superset-ui)
- hooks={{ setExtraFormData }}
+ behaviors={[Behavior.NATIVE_FILTER]}
+ hooks={{ setDataMask }}
/>
</FilterItem>
);
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/state.ts b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/state.ts
index 4849871..316195d 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/state.ts
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/state.ts
@@ -16,16 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { useDispatch, useSelector } from 'react-redux';
-import { useCallback } from 'react';
-import { ExtraFormData } from '@superset-ui/core';
-import { setExtraFormData } from 'src/dashboard/actions/nativeFilters';
+import { useSelector } from 'react-redux';
import { getInitialFilterState } from 'src/dashboard/reducers/nativeFilters';
import {
- CurrentFilterState,
- NativeFilterState,
NativeFiltersState,
+ FilterState,
FilterSets,
+ FilterStates,
} from 'src/dashboard/reducers/types';
import { mergeExtraFormData } from '../utils';
import { Filter } from '../types';
@@ -34,9 +31,9 @@
return useSelector<any, Filter>(state => state.nativeFilters.filters);
}
-export function useFiltersState() {
- return useSelector<any, NativeFilterState>(
- state => state.nativeFilters.filtersState,
+export function useFiltersStateNative() {
+ return useSelector<any, FilterStates>(
+ state => state.nativeFilters.filtersState.nativeFilters ?? {},
);
}
@@ -46,36 +43,28 @@
);
}
-export function useSetExtraFormData() {
- const dispatch = useDispatch();
- return useCallback(
- (
- id: string,
- extraFormData: ExtraFormData,
- currentState: CurrentFilterState,
- ) => dispatch(setExtraFormData(id, extraFormData, currentState)),
- [dispatch],
- );
-}
-
export function useCascadingFilters(id: string) {
- const nativeFilters = useSelector<any, NativeFiltersState>(
- state => state.nativeFilters,
- );
- const { filters, filtersState } = nativeFilters;
+ const {
+ filters,
+ filtersState: { nativeFilters },
+ } = useSelector<any, NativeFiltersState>(state => state.nativeFilters);
const filter = filters[id];
- const cascadeParentIds = filter?.cascadeParentIds ?? [];
+ const cascadeParentIds: string[] = filter?.cascadeParentIds ?? [];
let cascadedFilters = {};
cascadeParentIds.forEach(parentId => {
- const parentState = filtersState[parentId] || {};
+ const parentState = nativeFilters[parentId] || {};
const { extraFormData: parentExtra = {} } = parentState;
- cascadedFilters = mergeExtraFormData(cascadedFilters, parentExtra);
+ cascadedFilters = {
+ nativeFilters: mergeExtraFormData(cascadedFilters, parentExtra),
+ };
});
return cascadedFilters;
}
-export function useFilterState(id: string) {
- return useSelector<any, NativeFilterState>(
- state => state.nativeFilters.filtersState[id] || getInitialFilterState(id),
+export function useFilterStateNative(id: string) {
+ return useSelector<any, FilterState>(
+ state =>
+ state.nativeFilters.filtersState.nativeFilters[id] ??
+ getInitialFilterState(id),
);
}
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/types.ts b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/types.ts
index b0d8a27..404eb41 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/types.ts
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/types.ts
@@ -17,19 +17,14 @@
* under the License.
*/
import React from 'react';
-import { ExtraFormData } from '@superset-ui/core';
-import { CurrentFilterState } from 'src/dashboard/reducers/types';
+import { DataMask } from '@superset-ui/core';
import { Filter } from '../types';
export interface FilterProps {
filter: Filter;
icon?: React.ReactElement;
directPathToChild?: string[];
- onFilterSelectionChange: (
- filter: Filter,
- extraFormData: ExtraFormData,
- currentState: CurrentFilterState,
- ) => void;
+ onFilterSelectionChange: (filter: Filter, filterState: DataMask) => void;
}
export interface CascadeFilter extends Filter {
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx
index 797b1b5..1019bd6 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx
@@ -17,9 +17,9 @@
* under the License.
*/
import React, { FC } from 'react';
-import { t, SuperChart } from '@superset-ui/core';
+import { t, SuperChart, Behavior } from '@superset-ui/core';
import { FormInstance } from 'antd/lib/form';
-import { setFilterFieldValues, useForceUpdate } from './utils';
+import { setFilterFieldValues } from './utils';
import { StyledFormItem, StyledLabel } from './FiltersConfigForm';
import { Filter } from '../../types';
import { NativeFiltersForm } from '../types';
@@ -27,6 +27,7 @@
type DefaultValueProps = {
filterId: string;
+ forceUpdate: Function;
hasFilledDatasource: boolean;
hasDatasource: boolean;
filterToEdit?: Filter;
@@ -40,9 +41,9 @@
hasDatasource,
filterToEdit,
form,
+ forceUpdate,
formData,
}) => {
- const forceUpdate = useForceUpdate();
const formFilter = (form.getFieldValue('filters') || {})[filterId];
return (
<StyledFormItem
@@ -56,6 +57,7 @@
<SuperChart
height={25}
width={250}
+ behaviors={[Behavior.NATIVE_FILTER]}
formData={formData}
// For charts that don't have datasource we need workaround for empty placeholder
queriesData={
@@ -65,10 +67,9 @@
}
chartType={formFilter?.filterType}
hooks={{
- // @ts-ignore (fixed in other PR)
- setExtraFormData: ({ currentState }) => {
+ setDataMask: ({ nativeFilters }) => {
setFilterFieldValues(form, filterId, {
- defaultValue: currentState?.value,
+ defaultValue: nativeFilters?.currentState?.value,
});
forceUpdate();
},
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx
index c663c4d..761dc92 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx
@@ -249,6 +249,7 @@
/>
</StyledFormItem>
<DefaultValue
+ forceUpdate={forceUpdate}
filterId={filterId}
hasFilledDatasource={hasFilledDatasource}
hasDatasource={hasDatasource}
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/utils.ts b/superset-frontend/src/dashboard/components/nativeFilters/utils.ts
index a3396d2..e63d484 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/utils.ts
+++ b/superset-frontend/src/dashboard/components/nativeFilters/utils.ts
@@ -72,7 +72,7 @@
};
export function mergeExtraFormData(
- originalExtra: ExtraFormData,
+ originalExtra: ExtraFormData = {},
newExtra: ExtraFormData,
): ExtraFormData {
const {
@@ -82,6 +82,7 @@
const {
override_form_data: newOverride = {},
append_form_data: newAppend = {},
+ custom_form_data: newCustom = {},
} = newExtra;
const appendKeys = new Set([
@@ -99,6 +100,7 @@
});
return {
+ custom_form_data: newCustom,
override_form_data: {
...originalOverride,
...newOverride,
@@ -121,14 +123,14 @@
): ExtraFormData {
let extraFormData: ExtraFormData = {};
filterIdsAppliedOnChart.forEach(key => {
- const filterState = nativeFilters.filtersState[key] || {};
+ const filterState = nativeFilters.filtersState.nativeFilters[key] || {};
const { extraFormData: newExtra = {} } = filterState;
extraFormData = mergeExtraFormData(extraFormData, newExtra);
});
if (isFeatureEnabled(FeatureFlag.DASHBOARD_CROSS_FILTERS)) {
Object.entries(charts).forEach(([key, chart]) => {
if (isCrossFilter(chart?.formData?.viz_type)) {
- const filterState = nativeFilters.filtersState[key] || {};
+ const filterState = nativeFilters.filtersState.crossFilters[key] || {};
const { extraFormData: newExtra = {} } = filterState;
extraFormData = mergeExtraFormData(extraFormData, newExtra);
}
diff --git a/superset-frontend/src/dashboard/containers/Chart.jsx b/superset-frontend/src/dashboard/containers/Chart.jsx
index 19f4c9a..0e39dc2 100644
--- a/superset-frontend/src/dashboard/containers/Chart.jsx
+++ b/superset-frontend/src/dashboard/containers/Chart.jsx
@@ -82,6 +82,7 @@
supersetCanExplore: !!dashboardInfo.superset_can_explore,
supersetCanCSV: !!dashboardInfo.superset_can_csv,
sliceCanEdit: !!dashboardInfo.slice_can_edit,
+ ownCurrentState: nativeFilters.filtersState.ownFilters?.[id]?.currentState,
};
}
diff --git a/superset-frontend/src/dashboard/containers/Dashboard.jsx b/superset-frontend/src/dashboard/containers/Dashboard.jsx
index 07fc924..90e7734 100644
--- a/superset-frontend/src/dashboard/containers/Dashboard.jsx
+++ b/superset-frontend/src/dashboard/containers/Dashboard.jsx
@@ -62,6 +62,7 @@
layout: dashboardLayout.present,
}),
},
+ ownDataCharts: nativeFilters.filtersState.ownFilters ?? {},
slices: sliceEntities.slices,
layout: dashboardLayout.present,
impressionId,
diff --git a/superset-frontend/src/dashboard/reducers/nativeFilters.ts b/superset-frontend/src/dashboard/reducers/nativeFilters.ts
index 2aaa880..59ed135 100644
--- a/superset-frontend/src/dashboard/reducers/nativeFilters.ts
+++ b/superset-frontend/src/dashboard/reducers/nativeFilters.ts
@@ -19,15 +19,22 @@
import {
AnyFilterAction,
SAVE_FILTER_SETS,
- SET_EXTRA_FORM_DATA,
SET_FILTER_CONFIG_COMPLETE,
SET_FILTER_SETS_CONFIG_COMPLETE,
SET_FILTERS_STATE,
+ UPDATE_EXTRA_FORM_DATA,
+ UpdateExtraFormData,
} from 'src/dashboard/actions/nativeFilters';
-import { FiltersSet, NativeFiltersState, NativeFilterState } from './types';
+import {
+ FiltersSet,
+ FiltersState,
+ FilterState,
+ FilterStateType,
+ NativeFiltersState,
+} from './types';
import { FilterConfiguration } from '../components/nativeFilters/types';
-export function getInitialFilterState(id: string): NativeFilterState {
+export function getInitialFilterState(id: string): FilterState {
return {
id,
extraFormData: {},
@@ -46,20 +53,30 @@
}): NativeFiltersState {
const state: Partial<NativeFiltersState> = {};
+ const emptyFiltersState = {
+ [FilterStateType.NativeFilters]: {},
+ [FilterStateType.CrossFilters]: {},
+ [FilterStateType.OwnFilters]: {},
+ };
+
const filters = {};
- const filtersState = {};
+ const filtersState = { ...emptyFiltersState };
if (filterConfig) {
filterConfig.forEach(filter => {
const { id } = filter;
filters[id] = filter;
- filtersState[id] =
- prevState?.filtersState?.[id] || getInitialFilterState(id);
+ filtersState.nativeFilters[id] =
+ prevState?.filtersState?.nativeFilters[id] || getInitialFilterState(id);
});
state.filters = filters;
- state.filtersState = filtersState;
+ state.filtersState = {
+ ...emptyFiltersState,
+ ...prevState?.filtersState,
+ nativeFilters: filtersState.nativeFilters,
+ };
} else {
state.filters = prevState?.filters ?? {};
- state.filtersState = prevState?.filtersState ?? {};
+ state.filtersState = prevState?.filtersState ?? { ...emptyFiltersState };
}
if (filterSetsConfig) {
@@ -75,23 +92,57 @@
return state as NativeFiltersState;
}
+const getUnitState = (
+ unitName: FilterStateType,
+ action: UpdateExtraFormData,
+ filtersState: FiltersState,
+) => {
+ if (action[unitName])
+ return {
+ ...filtersState[unitName],
+ [action.filterId]: {
+ ...filtersState[unitName][action.filterId],
+ ...action[unitName],
+ },
+ };
+ return { ...filtersState[unitName] };
+};
+
export default function nativeFilterReducer(
- state: NativeFiltersState = { filters: {}, filtersState: {}, filterSets: {} },
+ state: NativeFiltersState = {
+ filters: {},
+ filterSets: {},
+ filtersState: {
+ [FilterStateType.NativeFilters]: {},
+ [FilterStateType.CrossFilters]: {},
+ [FilterStateType.OwnFilters]: {},
+ },
+ },
action: AnyFilterAction,
) {
const { filters, filtersState, filterSets } = state;
switch (action.type) {
- case SET_EXTRA_FORM_DATA:
+ case UPDATE_EXTRA_FORM_DATA:
return {
...state,
filters,
filtersState: {
...filtersState,
- [action.filterId]: {
- ...filtersState[action.filterId],
- extraFormData: action.extraFormData,
- currentState: action.currentState,
- },
+ [FilterStateType.NativeFilters]: getUnitState(
+ FilterStateType.NativeFilters,
+ action,
+ filtersState,
+ ),
+ [FilterStateType.CrossFilters]: getUnitState(
+ FilterStateType.CrossFilters,
+ action,
+ filtersState,
+ ),
+ [FilterStateType.OwnFilters]: getUnitState(
+ FilterStateType.OwnFilters,
+ action,
+ filtersState,
+ ),
},
};
case SAVE_FILTER_SETS:
diff --git a/superset-frontend/src/dashboard/reducers/types.ts b/superset-frontend/src/dashboard/reducers/types.ts
index 493bbc1..03e273f 100644
--- a/superset-frontend/src/dashboard/reducers/types.ts
+++ b/superset-frontend/src/dashboard/reducers/types.ts
@@ -18,7 +18,7 @@
*/
import componentTypes from 'src/dashboard/util/componentTypes';
-import { ExtraFormData, JsonObject } from '@superset-ui/core';
+import { ExtraFormData, DataMaskCurrentState } from '@superset-ui/core';
import { Filter } from '../components/nativeFilters/types';
export enum Scoping {
@@ -45,11 +45,6 @@
/** State of dashboardLayout in redux */
export type Layout = { [key: string]: LayoutItem };
-/** State of nativeFilters currentState */
-export type CurrentFilterState = JsonObject & {
- value?: any;
-};
-
/** State of charts in redux */
export type Charts = { [key: number]: Chart };
@@ -73,28 +68,42 @@
};
/** Current state of the filter, stored in `nativeFilters` in redux */
-export type NativeFilterState = {
+export type FilterState = {
id: string; // ties this filter state to the config object
- extraFormData: ExtraFormData;
- currentState: CurrentFilterState;
+ extraFormData?: ExtraFormData;
+ currentState: DataMaskCurrentState;
};
export type FiltersSet = {
id: string;
name: string;
- filtersState: NativeFilterState;
+ filtersState: Partial<FiltersState>;
};
export type FilterSets = {
[filtersSetId: string]: FiltersSet;
};
+export type FilterStates = { [filterId: string]: FilterState };
+
+export enum FilterStateType {
+ NativeFilters = 'nativeFilters',
+ CrossFilters = 'crossFilters',
+ OwnFilters = 'ownFilters',
+}
+
+export type FiltersState = {
+ [FilterStateType.NativeFilters]: FilterStates;
+ [FilterStateType.CrossFilters]: FilterStates;
+ [FilterStateType.OwnFilters]: FilterStates;
+};
+
+export type Filters = {
+ [filterId: string]: Filter;
+};
+
export type NativeFiltersState = {
- filters: {
- [filterId: string]: Filter;
- };
+ filters: Filters;
+ filtersState: FiltersState;
filterSets: FilterSets;
- filtersState: {
- [filterId: string]: NativeFilterState;
- };
};
diff --git a/superset-frontend/src/dashboard/util/activeDashboardNativeFilters.ts b/superset-frontend/src/dashboard/util/activeDashboardNativeFilters.ts
index 4477939..af8954d 100644
--- a/superset-frontend/src/dashboard/util/activeDashboardNativeFilters.ts
+++ b/superset-frontend/src/dashboard/util/activeDashboardNativeFilters.ts
@@ -78,31 +78,32 @@
layout: { [key: string]: LayoutItem };
}): ActiveFilters => {
const activeNativeFilters = {};
- if (!nativeFilters?.filtersState) {
+ if (!nativeFilters?.filtersState?.nativeFilters) {
return activeNativeFilters;
}
- Object.values(nativeFilters.filtersState).forEach(
- ({ id: filterId, extraFormData }) => {
- // TODO: for a case of a cross filters (should be updated will be added scope there)
- const scope = nativeFilters?.filters?.[filterId]?.scope ?? {
- rootPath: [DASHBOARD_ROOT_ID],
- excluded: [],
- };
- // Iterate over all roots to find all affected charts
- scope.rootPath.forEach(layoutItemId => {
- layout[layoutItemId].children.forEach((child: string) => {
- // Need exclude from affected charts, charts that located in scope `excluded`
- findAffectedCharts({
- child,
- layout,
- scope,
- activeNativeFilters,
- filterId,
- extraFormData,
- });
+ Object.values({
+ ...nativeFilters.filtersState.nativeFilters,
+ ...nativeFilters.filtersState.crossFilters,
+ }).forEach(({ id: filterId, extraFormData }) => {
+ // TODO: for a case of a cross filters (should be updated will be added scope there)
+ const scope = nativeFilters?.filters?.[filterId]?.scope ?? {
+ rootPath: [DASHBOARD_ROOT_ID],
+ excluded: [],
+ };
+ // Iterate over all roots to find all affected charts
+ scope.rootPath.forEach(layoutItemId => {
+ layout[layoutItemId].children.forEach((child: string) => {
+ // Need exclude from affected charts, charts that located in scope `excluded`
+ findAffectedCharts({
+ child,
+ layout,
+ scope,
+ activeNativeFilters,
+ filterId,
+ extraFormData,
});
});
- },
- );
+ });
+ });
return activeNativeFilters;
};
diff --git a/superset-frontend/src/dashboard/util/charts/getFormDataWithExtraFilters.ts b/superset-frontend/src/dashboard/util/charts/getFormDataWithExtraFilters.ts
index 5659eb0..b3d7827 100644
--- a/superset-frontend/src/dashboard/util/charts/getFormDataWithExtraFilters.ts
+++ b/superset-frontend/src/dashboard/util/charts/getFormDataWithExtraFilters.ts
@@ -20,9 +20,13 @@
import {
CategoricalColorNamespace,
DataRecordFilters,
+ JsonObject,
} from '@superset-ui/core';
import { ChartQueryPayload, Charts, LayoutItem } from 'src/dashboard/types';
-import { getExtraFormData } from 'src/dashboard/components/nativeFilters/utils';
+import {
+ getExtraFormData,
+ mergeExtraFormData,
+} from 'src/dashboard/components/nativeFilters/utils';
import getEffectiveExtraFilters from './getEffectiveExtraFilters';
import { getActiveNativeFilters } from '../activeDashboardNativeFilters';
import { NativeFiltersState } from '../../reducers/types';
@@ -73,7 +77,7 @@
return cachedFormdataByChart[sliceId];
}
- let extraData = {};
+ let extraData: { extra_form_data?: JsonObject } = {};
const activeNativeFilters = getActiveNativeFilters({ nativeFilters, layout });
const filterIdsAppliedOnChart = Object.entries(activeNativeFilters)
.filter(([, { scope }]) => scope.includes(chart.id))
@@ -88,6 +92,13 @@
};
}
+ const { extraFormData: newExtra = {} } =
+ nativeFilters.filtersState?.ownFilters?.[chart.id] ?? {};
+ extraData.extra_form_data = mergeExtraFormData(
+ extraData?.extra_form_data,
+ newExtra,
+ );
+
const formData = {
...chart.formData,
...(colorScheme && { color_scheme: colorScheme }),
diff --git a/superset-frontend/src/dashboard/util/charts/getOwnDataCharts.ts b/superset-frontend/src/dashboard/util/charts/getOwnDataCharts.ts
new file mode 100644
index 0000000..096f18a
--- /dev/null
+++ b/superset-frontend/src/dashboard/util/charts/getOwnDataCharts.ts
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { JsonObject } from '@superset-ui/core';
+import { areObjectsEqual } from '../../../reduxUtils';
+
+export const arrayDiff = (a: string[], b: string[]) => [
+ ...a.filter(x => !b.includes(x)),
+ ...b.filter(x => !a.includes(x)),
+];
+
+export const getAffectedOwnDataCharts = (
+ ownDataCharts: JsonObject,
+ appliedOwnDataCharts: JsonObject,
+) => {
+ const chartIds = Object.keys(ownDataCharts);
+ const appliedChartIds = Object.keys(appliedOwnDataCharts);
+ const affectedIds: string[] = arrayDiff(chartIds, appliedChartIds).filter(
+ id =>
+ ownDataCharts[id]?.extraFormData ||
+ appliedOwnDataCharts[id]?.extraFormData,
+ );
+ const checkForUpdateIds = new Set<string>([...chartIds, ...appliedChartIds]);
+ checkForUpdateIds.forEach(chartId => {
+ if (
+ !areObjectsEqual(
+ ownDataCharts[chartId]?.extraFormData,
+ appliedOwnDataCharts[chartId]?.extraFormData,
+ )
+ ) {
+ affectedIds.push(chartId);
+ }
+ });
+ return [...new Set(affectedIds)];
+};
diff --git a/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx b/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx
index fe007d5..0df41a2 100644
--- a/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx
+++ b/superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { styled, t } from '@superset-ui/core';
+import { styled, t, DataMask, Behavior } from '@superset-ui/core';
import React, { useEffect, useState } from 'react';
import { Slider } from 'src/common/components';
import { PluginFilterRangeProps } from './types';
@@ -29,7 +29,15 @@
`;
export default function RangeFilterPlugin(props: PluginFilterRangeProps) {
- const { data, formData, height, width, setExtraFormData, inputRef } = props;
+ const {
+ data,
+ formData,
+ height,
+ width,
+ setDataMask,
+ inputRef,
+ behaviors,
+ } = props;
const [row] = data;
// @ts-ignore
const { min, max }: { min: number; max: number } = row;
@@ -42,12 +50,23 @@
const handleAfterChange = (value: [number, number]) => {
const [lower, upper] = value;
setValue(value);
- setExtraFormData({
+ const dataMask = {
extraFormData: getRangeExtraFormData(col, lower, upper),
currentState: {
value,
},
- });
+ };
+
+ const dataMaskObject: DataMask = {};
+ if (behaviors.includes(Behavior.NATIVE_FILTER)) {
+ dataMaskObject.nativeFilters = dataMask;
+ }
+
+ if (behaviors.includes(Behavior.CROSS_FILTER)) {
+ dataMaskObject.crossFilters = dataMask;
+ }
+
+ setDataMask(dataMaskObject);
};
const handleChange = (value: [number, number]) => {
diff --git a/superset-frontend/src/filters/components/Range/transformProps.ts b/superset-frontend/src/filters/components/Range/transformProps.ts
index ca9ec7f..56b8bc0 100644
--- a/superset-frontend/src/filters/components/Range/transformProps.ts
+++ b/superset-frontend/src/filters/components/Range/transformProps.ts
@@ -19,15 +19,16 @@
import { ChartProps } from '@superset-ui/core';
export default function transformProps(chartProps: ChartProps) {
- const { formData, height, hooks, queriesData, width } = chartProps;
- const { setExtraFormData } = hooks;
+ const { formData, height, hooks, queriesData, width, behaviors } = chartProps;
+ const { setDataMask } = hooks;
const { data } = queriesData[0];
return {
data,
formData,
+ behaviors,
height,
- setExtraFormData,
+ setDataMask,
width,
};
}
diff --git a/superset-frontend/src/filters/components/Range/types.ts b/superset-frontend/src/filters/components/Range/types.ts
index a07c8d7..a3b9d56 100644
--- a/superset-frontend/src/filters/components/Range/types.ts
+++ b/superset-frontend/src/filters/components/Range/types.ts
@@ -19,7 +19,8 @@
import {
DataRecord,
QueryFormData,
- SetExtraFormDataHook,
+ SetDataMaskHook,
+ Behavior,
} from '@superset-ui/core';
import { RefObject } from 'react';
import { PluginFilterStylesProps } from '../types';
@@ -36,6 +37,7 @@
export type PluginFilterRangeProps = PluginFilterStylesProps & {
data: DataRecord[];
formData: PluginFilterRangeQueryFormData;
- setExtraFormData: SetExtraFormDataHook;
+ setDataMask: SetDataMaskHook;
+ behaviors: Behavior[];
inputRef: RefObject<any>;
};
diff --git a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.stories.tsx b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.stories.tsx
index 41e1ced..5dd07cb 100644
--- a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.stories.tsx
+++ b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.stories.tsx
@@ -56,7 +56,7 @@
metrics: ['SUM(SP_POP_TOTL)'],
}}
hooks={{
- setExtraFormData: action('setExtraFormData'),
+ setDataMask: action('setDataMask'),
}}
/>
);
diff --git a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx
index 70664af..d9b8e0b 100644
--- a/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx
+++ b/superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { styled } from '@superset-ui/core';
+import { styled, Behavior, DataMask, t } from '@superset-ui/core';
import React, { useEffect, useState } from 'react';
import { Select } from 'src/common/components';
import { PluginFilterSelectProps } from './types';
@@ -31,7 +31,7 @@
const { Option } = Select;
export default function PluginFilterSelect(props: PluginFilterSelectProps) {
- const { data, formData, height, width, setExtraFormData } = props;
+ const { data, formData, height, width, behaviors, setDataMask } = props;
const {
defaultValue,
enableEmptyFilter,
@@ -58,10 +58,12 @@
resultValue = value;
}
setValues(resultValue);
+
const [col] = groupby;
const emptyFilter =
enableEmptyFilter && !inverseSelection && resultValue?.length === 0;
- setExtraFormData({
+
+ const dataMask = {
extraFormData: getSelectExtraFormData(
col,
resultValue,
@@ -71,7 +73,18 @@
currentState: {
value: resultValue.length ? resultValue : null,
},
- });
+ };
+
+ const dataMaskObject: DataMask = {};
+ if (behaviors.includes(Behavior.NATIVE_FILTER)) {
+ dataMaskObject.nativeFilters = dataMask;
+ }
+
+ if (behaviors.includes(Behavior.CROSS_FILTER)) {
+ dataMaskObject.crossFilters = dataMask;
+ }
+
+ setDataMask(dataMaskObject);
};
useEffect(() => {
@@ -86,8 +99,8 @@
const placeholderText =
(data || []).length === 0
- ? 'No data'
- : `${data.length} option${data.length > 1 ? 's' : 0}`;
+ ? t('No data')
+ : t(`%d option%s`, data.length, data.length === 1 ? '' : 's');
return (
<Styles height={height} width={width}>
<Select
diff --git a/superset-frontend/src/filters/components/Select/transformProps.ts b/superset-frontend/src/filters/components/Select/transformProps.ts
index 5888bb5..74c590e 100644
--- a/superset-frontend/src/filters/components/Select/transformProps.ts
+++ b/superset-frontend/src/filters/components/Select/transformProps.ts
@@ -20,17 +20,18 @@
import { DEFAULT_FORM_DATA } from './types';
export default function transformProps(chartProps: ChartProps) {
- const { formData, height, hooks, queriesData, width } = chartProps;
+ const { formData, height, hooks, queriesData, width, behaviors } = chartProps;
const newFormData = { ...DEFAULT_FORM_DATA, ...formData };
- const { setExtraFormData = () => {} } = hooks;
+ const { setDataMask = () => {} } = hooks;
const { data } = queriesData[0];
return {
width,
+ behaviors,
height,
data,
formData: newFormData,
- setExtraFormData,
+ setDataMask,
};
}
diff --git a/superset-frontend/src/filters/components/Select/types.ts b/superset-frontend/src/filters/components/Select/types.ts
index 7657940..aaa0337 100644
--- a/superset-frontend/src/filters/components/Select/types.ts
+++ b/superset-frontend/src/filters/components/Select/types.ts
@@ -19,7 +19,8 @@
import {
QueryFormData,
DataRecord,
- SetExtraFormDataHook,
+ SetDataMaskHook,
+ Behavior,
} from '@superset-ui/core';
import { RefObject } from 'react';
import { PluginFilterStylesProps } from '../types';
@@ -40,7 +41,8 @@
export type PluginFilterSelectProps = PluginFilterStylesProps & {
data: DataRecord[];
- setExtraFormData: SetExtraFormDataHook;
+ setDataMask: SetDataMaskHook;
+ behaviors: Behavior[];
formData: PluginFilterSelectQueryFormData;
};
diff --git a/superset-frontend/src/filters/components/Time/TimeFilterPlugin.tsx b/superset-frontend/src/filters/components/Time/TimeFilterPlugin.tsx
index 7700c9b..cf00526 100644
--- a/superset-frontend/src/filters/components/Time/TimeFilterPlugin.tsx
+++ b/superset-frontend/src/filters/components/Time/TimeFilterPlugin.tsx
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { styled } from '@superset-ui/core';
+import { styled, DataMask, Behavior } from '@superset-ui/core';
import React, { useState, useEffect } from 'react';
import DateFilterControl from 'src/explore/components/controls/DateFilterControl';
import { PluginFilterStylesProps } from '../types';
@@ -31,22 +31,32 @@
`;
export default function TimeFilterPlugin(props: PluginFilterTimeProps) {
- const { formData, setExtraFormData, width } = props;
+ const { formData, setDataMask, width, behaviors } = props;
const { defaultValue, currentValue } = formData;
const [value, setValue] = useState<string>(defaultValue ?? DEFAULT_VALUE);
const handleTimeRangeChange = (timeRange: string): void => {
- setExtraFormData({
- // @ts-ignore
+ setValue(timeRange);
+ const dataMask = {
extraFormData: {
override_form_data: {
time_range: timeRange,
},
},
currentState: { value: timeRange },
- });
- setValue(timeRange);
+ };
+
+ const dataMaskObject: DataMask = {};
+ if (behaviors.includes(Behavior.NATIVE_FILTER)) {
+ dataMaskObject.nativeFilters = dataMask;
+ }
+
+ if (behaviors.includes(Behavior.CROSS_FILTER)) {
+ dataMaskObject.crossFilters = dataMask;
+ }
+
+ setDataMask(dataMaskObject);
};
useEffect(() => {
diff --git a/superset-frontend/src/filters/components/Time/transformProps.ts b/superset-frontend/src/filters/components/Time/transformProps.ts
index fc3acb0..1cdd7e6 100644
--- a/superset-frontend/src/filters/components/Time/transformProps.ts
+++ b/superset-frontend/src/filters/components/Time/transformProps.ts
@@ -20,8 +20,8 @@
import { DEFAULT_FORM_DATA } from './types';
export default function transformProps(chartProps: ChartProps) {
- const { formData, height, hooks, queriesData, width } = chartProps;
- const { setExtraFormData } = hooks;
+ const { formData, height, hooks, queriesData, width, behaviors } = chartProps;
+ const { setDataMask = () => {} } = hooks;
const { data } = queriesData[0];
return {
@@ -31,7 +31,8 @@
...formData,
},
height,
- setExtraFormData,
+ behaviors,
+ setDataMask,
width,
};
}
diff --git a/superset-frontend/src/filters/components/Time/types.ts b/superset-frontend/src/filters/components/Time/types.ts
index f1fc35e..bb22498 100644
--- a/superset-frontend/src/filters/components/Time/types.ts
+++ b/superset-frontend/src/filters/components/Time/types.ts
@@ -19,7 +19,8 @@
import {
QueryFormData,
DataRecord,
- SetExtraFormDataHook,
+ SetDataMaskHook,
+ Behavior,
} from '@superset-ui/core';
import { PluginFilterStylesProps } from '../types';
@@ -33,8 +34,9 @@
PluginFilterTimeCustomizeProps;
export type PluginFilterTimeProps = PluginFilterStylesProps & {
+ behaviors: Behavior[];
data: DataRecord[];
- setExtraFormData: SetExtraFormDataHook;
+ setDataMask: SetDataMaskHook;
formData: PluginFilterSelectQueryFormData;
};