diff --git a/superset/assets/package-lock.json b/superset/assets/package-lock.json index 289bd9650de1c..b4a7916add083 100644 --- a/superset/assets/package-lock.json +++ b/superset/assets/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@airbnb/lunar": { - "version": "2.41.0", - "resolved": "https://registry.npmjs.org/@airbnb/lunar/-/lunar-2.41.0.tgz", - "integrity": "sha512-pijDKAMg3Du05IM1riJqTMEFdAurJN0vPKyHrHSvXubadPegckm3KU2JPaU6hAYq5rZzxwaDHpAY64iUc8OchQ==", + "version": "2.42.0", + "resolved": "https://registry.npmjs.org/@airbnb/lunar/-/lunar-2.42.0.tgz", + "integrity": "sha512-DP6symJ9RHXhhCJII9NF1DwIaEJvwY4H3zpXSxF1oIVuldbgMpAvCQKONJpchy2C6Zgo+eiWqG2gOSYN0YjdzQ==", "requires": { "@types/airbnb-prop-types": "*", "@types/hoist-non-react-statics": "*", @@ -80,9 +80,9 @@ "integrity": "sha512-s9PGTaQIkT69HaeoTVjwGsLfb8V8ScJLx5XGFcKHg0MqLUH/UZ4EKOtqtXX9k7AFqCGxD1aJmYb8Q5VYDibVRQ==" }, "hoist-non-react-statics": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", - "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==", "requires": { "react-is": "^16.7.0" } @@ -121,9 +121,9 @@ } }, "react-is": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", - "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", + "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==" }, "react-virtualized": { "version": "9.21.2", @@ -4955,9 +4955,9 @@ } }, "@superset-ui/plugin-chart-table": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.11.6.tgz", - "integrity": "sha512-Tnmfdz+QK2v/O89ifUP9AgrqhFP/IAeMf1XR0KGa/BfpPsFZBptnKvD1L7pxLIzfynJyhFOUmmShpzA0pEThsQ==", + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@superset-ui/plugin-chart-table/-/plugin-chart-table-0.11.7.tgz", + "integrity": "sha512-U+HaTRmrGQ3IdEDlYS9nyFwMHBRvtWxqo/MI3toP7Ghq7Q9anocwQANUgKWjj+ITSomVmww+msDXNNO2GPus1w==", "requires": { "@airbnb/lunar": "^2.35.0", "@airbnb/lunar-icons": "^2.1.4", @@ -5301,17 +5301,17 @@ }, "dependencies": { "hoist-non-react-statics": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", - "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==", "requires": { "react-is": "^16.7.0" } }, "react-is": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", - "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", + "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==" } } }, @@ -5347,9 +5347,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.146", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.146.tgz", - "integrity": "sha512-JzJcmQ/ikHSv7pbvrVNKJU5j9jL9VLf3/gqs048CEnBVVVEv4kve3vLxoPHGvclutS+Il4SBIuQQ087m1eHffw==" + "version": "4.14.147", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.147.tgz", + "integrity": "sha512-+0zY1Axql6ru5T85Rh6aR6Zr0xT7c0USLqsHv01b3ID//dOrV3OvpXJGjm69+4QpxoZ0oMNEfmW1ltwXe2WVzQ==" }, "@types/luxon": { "version": "1.15.2", @@ -6108,9 +6108,9 @@ }, "dependencies": { "hoist-non-react-statics": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", - "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==", "requires": { "react-is": "^16.7.0" } @@ -6126,9 +6126,9 @@ } }, "react-is": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", - "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", + "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==" }, "uuid": { "version": "3.3.3", @@ -14492,9 +14492,9 @@ } }, "react-is": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", - "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", + "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==" } } }, @@ -14519,9 +14519,9 @@ } }, "react-is": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", - "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", + "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==" } } }, @@ -14548,9 +14548,9 @@ } }, "react-is": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", - "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", + "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==" } } }, diff --git a/superset/assets/package.json b/superset/assets/package.json index ee96234c60bdb..e850355b5ef95 100644 --- a/superset/assets/package.json +++ b/superset/assets/package.json @@ -80,7 +80,7 @@ "@superset-ui/legacy-preset-chart-kepler": "^0.1.1", "@superset-ui/legacy-preset-chart-nvd3": "^0.11.5", "@superset-ui/number-format": "^0.12.1", - "@superset-ui/plugin-chart-table": "^0.11.6", + "@superset-ui/plugin-chart-table": "^0.11.7", "@superset-ui/preset-chart-xy": "^0.11.0", "@superset-ui/query": "^0.12.2", "@superset-ui/time-format": "^0.12.4", diff --git a/superset/assets/spec/javascripts/sqllab/actions/sqlLab_spec.js b/superset/assets/spec/javascripts/sqllab/actions/sqlLab_spec.js index cb8c3b491ca25..306a5f9777a60 100644 --- a/superset/assets/spec/javascripts/sqllab/actions/sqlLab_spec.js +++ b/superset/assets/spec/javascripts/sqllab/actions/sqlLab_spec.js @@ -278,7 +278,7 @@ describe('async actions', () => { id: 'abcd', }, }]; - return store.dispatch(actions.cloneQueryToNewTab(query)).then(() => { + return store.dispatch(actions.cloneQueryToNewTab(query, true)).then(() => { expect(store.getActions()).toEqual(expectedActions); }); }); diff --git a/superset/assets/src/SqlLab/actions/sqlLab.js b/superset/assets/src/SqlLab/actions/sqlLab.js index 5381ff70a1a16..36df2f4fbc7de 100644 --- a/superset/assets/src/SqlLab/actions/sqlLab.js +++ b/superset/assets/src/SqlLab/actions/sqlLab.js @@ -186,7 +186,7 @@ export function estimateQueryCost(query) { dispatch({ type: COST_ESTIMATE_STARTED, query }), SupersetClient.post({ endpoint, - postPayload: { sql, templateParams: JSON.parse(templateParams) }, + postPayload: { sql, templateParams: JSON.parse(templateParams || '{}') }, }) .then(({ json }) => dispatch({ type: COST_ESTIMATE_RETURNED, query, json })) .catch(response => @@ -445,7 +445,7 @@ export function addQueryEditor(queryEditor) { }; } -export function cloneQueryToNewTab(query) { +export function cloneQueryToNewTab(query, autorun) { return function (dispatch, getState) { const state = getState(); const { queryEditors, tabHistory } = state.sqlLab; @@ -454,10 +454,11 @@ export function cloneQueryToNewTab(query) { title: t('Copy of %s', sourceQueryEditor.title), dbId: query.dbId ? query.dbId : null, schema: query.schema ? query.schema : null, - autorun: true, + autorun, sql: query.sql, queryLimit: sourceQueryEditor.queryLimit, maxRow: sourceQueryEditor.maxRow, + templateParams: sourceQueryEditor.templateParams, }; return dispatch(addQueryEditor(queryEditor)); }; diff --git a/superset/assets/src/SqlLab/components/QueryTable.jsx b/superset/assets/src/SqlLab/components/QueryTable.jsx index 983d8cfcca48b..67a10042b5c4a 100644 --- a/superset/assets/src/SqlLab/components/QueryTable.jsx +++ b/superset/assets/src/SqlLab/components/QueryTable.jsx @@ -80,7 +80,7 @@ class QueryTable extends React.PureComponent { } openQueryInNewTab(query) { - this.props.actions.cloneQueryToNewTab(query); + this.props.actions.cloneQueryToNewTab(query, true); } openAsyncResults(query, displayLimit) { this.props.actions.fetchQueryResults(query, displayLimit); diff --git a/superset/assets/src/SqlLab/components/TabbedSqlEditors.jsx b/superset/assets/src/SqlLab/components/TabbedSqlEditors.jsx index 0ee19ffb61766..90f6eb9db9cd2 100644 --- a/superset/assets/src/SqlLab/components/TabbedSqlEditors.jsx +++ b/superset/assets/src/SqlLab/components/TabbedSqlEditors.jsx @@ -218,7 +218,7 @@ class TabbedSqlEditors extends React.PureComponent { .forEach(qe => qe !== cqe && this.removeQueryEditor(qe)); } duplicateQueryEditor(qe) { - this.props.actions.cloneQueryToNewTab(qe); + this.props.actions.cloneQueryToNewTab(qe, false); } toggleLeftBar() { this.setState({ hideLeftBar: !this.state.hideLeftBar }); diff --git a/superset/assets/src/components/FilterableTable/FilterableTable.jsx b/superset/assets/src/components/FilterableTable/FilterableTable.jsx index b8c09ef9dd16f..3f4b4f45f9f98 100644 --- a/superset/assets/src/components/FilterableTable/FilterableTable.jsx +++ b/superset/assets/src/components/FilterableTable/FilterableTable.jsx @@ -170,10 +170,13 @@ export default class FilterableTable extends PureComponent { ).map(dimension => dimension.width); this.props.orderedColumnKeys.forEach((key, index) => { - widthsByColumnKey[key] = Math.max(...colWidths.slice( + // we can't use Math.max(...colWidths.slice(...)) here since the number + // of elements might be bigger than the number of allowed arguments in a + // Javascript function + widthsByColumnKey[key] = colWidths.slice( index * (this.list.size + 1), (index + 1) * (this.list.size + 1), - )) + PADDING; + ).reduce((a, b) => Math.max(a, b)) + PADDING; }); return widthsByColumnKey;