@cubejs-client/react 1.7.37 → 1.7.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/CubeProvider.d.ts +1 -1
- package/dist/QueryBuilder.d.ts +4 -2
- package/dist/QueryBuilder.d.ts.map +1 -1
- package/dist/QueryRenderer.d.ts +2 -0
- package/dist/QueryRenderer.d.ts.map +1 -1
- package/dist/QueryRendererWithTotals.d.ts +2 -1
- package/dist/QueryRendererWithTotals.d.ts.map +1 -1
- package/dist/cubejs-client-react.cjs.js +88 -42
- package/dist/cubejs-client-react.cjs.js.map +1 -1
- package/dist/cubejs-client-react.esm.js +62 -34
- package/dist/cubejs-client-react.esm.js.map +1 -1
- package/dist/cubejs-client-react.umd.js +88 -42
- package/dist/cubejs-client-react.umd.js.map +1 -1
- package/dist/hooks/cube-query.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/types.d.ts +5 -5
- package/package.json +17 -4
- package/src/CubeProvider.tsx +1 -1
- package/src/QueryBuilder.tsx +3 -5
- package/src/QueryRenderer.tsx +2 -4
- package/src/hooks/cube-query.ts +68 -25
- package/src/index.ts +1 -1
- package/src/types.ts +5 -5
package/README.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
<p align="center"><a href="https://cube.dev"><img src="https://i.imgur.com/zYHXm4o.png" alt="Cube
|
|
1
|
+
<p align="center"><a href="https://cube.dev"><img src="https://i.imgur.com/zYHXm4o.png" alt="Cube" width="300px"></a></p>
|
|
2
2
|
|
|
3
3
|
[Website](https://cube.dev) • [Docs](https://docs.cube.dev) • [Blog](https://cube.dev/blog) • [Slack](https://slack.cube.dev) • [Twitter](https://twitter.com/the_cube_dev)
|
|
4
4
|
|
|
5
5
|
[](https://badge.fury.io/js/%40cubejs-client%2Freact)
|
|
6
6
|
[](https://github.com/cube-js/cube.js/actions?query=workflow%3ABuild+branch%3Amaster)
|
|
7
7
|
|
|
8
|
-
# Cube
|
|
8
|
+
# Cube React
|
|
9
9
|
|
|
10
|
-
Cube
|
|
10
|
+
Cube React is a set of helper React components to simplify Cube query rendering.
|
|
11
11
|
|
|
12
12
|
[Learn more](https://github.com/cube-js/cube.js#getting-started)
|
|
13
13
|
|
|
14
14
|
### License
|
|
15
15
|
|
|
16
|
-
Cube
|
|
16
|
+
Cube React is [MIT licensed](./LICENSE).
|
package/dist/CubeProvider.d.ts
CHANGED
package/dist/QueryBuilder.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { CubeApi, DryRunResponse, Meta, PivotConfig, Query } from '@cubejs-client/core';
|
|
3
|
+
import CubeContext from './CubeContext';
|
|
3
4
|
import type { ChartType, CubeContextProps, QueryBuilderInternalState, QueryBuilderProps, QueryBuilderRenderProps, QueryBuilderStateUpdate, QueryMemberType, QueryRendererRenderProps, ResolveMemberArgs } from './types';
|
|
4
5
|
/**
|
|
5
|
-
* `<QueryBuilder />` is used to build interactive analytics query builders. It abstracts state management and API calls to Cube
|
|
6
|
+
* `<QueryBuilder />` is used to build interactive analytics query builders. It abstracts state management and API calls to Cube Backend. It uses render prop technique and doesn’t render anything itself, but calls the render function instead.
|
|
6
7
|
*
|
|
7
8
|
* **Example**
|
|
8
9
|
*
|
|
@@ -67,6 +68,7 @@ import type { ChartType, CubeContextProps, QueryBuilderInternalState, QueryBuild
|
|
|
67
68
|
*/
|
|
68
69
|
export default class QueryBuilder extends React.Component<QueryBuilderProps, QueryBuilderInternalState> {
|
|
69
70
|
static contextType: React.Context<CubeContextProps>;
|
|
71
|
+
context: React.ContextType<typeof CubeContext>;
|
|
70
72
|
static defaultProps: {
|
|
71
73
|
cubeApi: null;
|
|
72
74
|
stateChangeHeuristics: null;
|
|
@@ -130,6 +132,6 @@ export default class QueryBuilder extends React.Component<QueryBuilderProps, Que
|
|
|
130
132
|
validatedQuery(state?: QueryBuilderStateUpdate): Query;
|
|
131
133
|
defaultHeuristics(newState: QueryBuilderStateUpdate): QueryBuilderStateUpdate;
|
|
132
134
|
applyStateChangeHeuristics(newState: QueryBuilderStateUpdate): QueryBuilderStateUpdate;
|
|
133
|
-
render(): React.ReactNode;
|
|
135
|
+
render(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
|
|
134
136
|
}
|
|
135
137
|
//# sourceMappingURL=QueryBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.d.ts","sourceRoot":"","sources":["../src/QueryBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,KAAK,EACV,OAAO,EAEP,cAAc,EACd,IAAI,EAEJ,WAAW,EAEX,KAAK,EAQN,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryBuilder.d.ts","sourceRoot":"","sources":["../src/QueryBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,KAAK,EACV,OAAO,EAEP,cAAc,EACd,IAAI,EAEJ,WAAW,EAEX,KAAK,EAQN,MAAM,qBAAqB,CAAC;AAG7B,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAGV,SAAS,EACT,gBAAgB,EAYhB,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,EAEvB,uBAAuB,EACvB,eAAe,EACf,wBAAwB,EAExB,iBAAiB,EAMlB,MAAM,SAAS,CAAC;AAcjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IACrG,MAAM,CAAC,WAAW,kCAAe;IAEjC,OAAO,EAAG,KAAK,CAAC,WAAW,CAAC,OAAO,WAAW,CAAC,CAAC;IAEhD,MAAM,CAAC,YAAY;;;;;;;;;;;;;;MAgBjB;IAIF,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsB1F,MAAM,CAAC,aAAa,CAClB,IAAI,EAAE,eAAe,EACrB,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,iBAAiB,GACjC,OAAO,EAAE;gBAkCA,KAAK,EAAE,iBAAiB;IAmB9B,iBAAiB;IAKjB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IA+BrD,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,qBAAqB,CAAW;IAExC,OAAO,CAAC,WAAW,CAAC,CAAmB;IAEvC,SAAS,sBAmCP;IAEF,OAAO,IAAI,OAAO;IAMlB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI;IAgB3C,cAAc;IAKd,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,wBAAwB,GAAG,uBAAuB;IAgP1F,WAAW,CAAC,WAAW,EAAE,KAAK;IAWxB,cAAc,CAAC,KAAK,EAAE,uBAAuB;IAkGnD,cAAc,CAAC,KAAK,CAAC,EAAE,uBAAuB;IAM9C,iBAAiB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,uBAAuB;IAS7E,0BAA0B,CAAC,QAAQ,EAAE,uBAAuB,GAAG,uBAAuB;IAQtF,MAAM;CAyBP"}
|
package/dist/QueryRenderer.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { CubeApi, Query } from '@cubejs-client/core';
|
|
3
|
+
import CubeContext from './CubeContext';
|
|
3
4
|
import type { QueryRendererProps, QueryRendererState } from './types';
|
|
4
5
|
/**
|
|
5
6
|
* `<QueryRenderer />` a react component that accepts a query, fetches the given query, and uses the render prop to render the resulting data
|
|
@@ -8,6 +9,7 @@ import type { QueryRendererProps, QueryRendererState } from './types';
|
|
|
8
9
|
*/
|
|
9
10
|
export default class QueryRenderer extends React.Component<QueryRendererProps, QueryRendererState> {
|
|
10
11
|
static contextType: React.Context<import("./types").CubeContextProps>;
|
|
12
|
+
context: React.ContextType<typeof CubeContext>;
|
|
11
13
|
static defaultProps: {
|
|
12
14
|
cubeApi: null;
|
|
13
15
|
query: null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryRenderer.d.ts","sourceRoot":"","sources":["../src/QueryRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,OAAO,EAAqB,KAAK,EAAa,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryRenderer.d.ts","sourceRoot":"","sources":["../src/QueryRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,OAAO,EAAqB,KAAK,EAAa,MAAM,qBAAqB,CAAC;AAExF,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAGV,kBAAkB,EAElB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChG,MAAM,CAAC,WAAW,oDAAe;IAEjC,OAAO,EAAG,KAAK,CAAC,WAAW,CAAC,OAAO,WAAW,CAAC,CAAC;IAEhD,MAAM,CAAC,YAAY;;;;;;;;;MASjB;IAGF,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE;gBAIhC,KAAK,EAAE,kBAAkB;IAMrC,iBAAiB;IAUjB,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB;IAgBlF,kBAAkB,CAAC,SAAS,EAAE,kBAAkB;IAehD,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,IAAI,OAAO;IAKlB,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE;IAkD3B,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE;IA8B9C,MAAM;CAqBP"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import type { QueryRendererWithTotalsProps } from './types';
|
|
2
|
-
declare const QueryRendererWithTotals: ({ query, ...restProps }: QueryRendererWithTotalsProps) => JSX.Element;
|
|
3
|
+
declare const QueryRendererWithTotals: ({ query, ...restProps }: QueryRendererWithTotalsProps) => React.JSX.Element;
|
|
3
4
|
export default QueryRendererWithTotals;
|
|
4
5
|
//# sourceMappingURL=QueryRendererWithTotals.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryRendererWithTotals.d.ts","sourceRoot":"","sources":["../src/QueryRendererWithTotals.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"QueryRendererWithTotals.d.ts","sourceRoot":"","sources":["../src/QueryRendererWithTotals.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAE5D,QAAA,MAAM,uBAAuB,GAAI,yBAAyB,4BAA4B,sBAerF,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
|
@@ -407,14 +407,11 @@ var QueryRenderer = /*#__PURE__*/function (_React$Component) {
|
|
|
407
407
|
var _this;
|
|
408
408
|
_classCallCheck(this, QueryRenderer);
|
|
409
409
|
_this = _callSuper(this, QueryRenderer, [props]);
|
|
410
|
+
_defineProperty(_this, "context", void 0);
|
|
410
411
|
// These sit after the lifecycle methods because `react/sort-comp` sorts
|
|
411
412
|
// TypeScript field declarations into `everything-else`, which the configured
|
|
412
413
|
// order puts after `lifecycle`. Runtime is unaffected: field initializers run
|
|
413
414
|
// right after `super()`, so the constructor's assignments still win.
|
|
414
|
-
//
|
|
415
|
-
// `this.context` is not re-declared: React types it as `any`, and a field
|
|
416
|
-
// declaration would be emitted at runtime and shadow the context React
|
|
417
|
-
// assigns.
|
|
418
415
|
_defineProperty(_this, "mutexObj", void 0);
|
|
419
416
|
_this.state = {};
|
|
420
417
|
_this.mutexObj = {};
|
|
@@ -708,7 +705,7 @@ var granularities = [{
|
|
|
708
705
|
}];
|
|
709
706
|
|
|
710
707
|
/**
|
|
711
|
-
* `<QueryBuilder />` is used to build interactive analytics query builders. It abstracts state management and API calls to Cube
|
|
708
|
+
* `<QueryBuilder />` is used to build interactive analytics query builders. It abstracts state management and API calls to Cube Backend. It uses render prop technique and doesn’t render anything itself, but calls the render function instead.
|
|
712
709
|
*
|
|
713
710
|
* **Example**
|
|
714
711
|
*
|
|
@@ -776,14 +773,11 @@ var QueryBuilder = /*#__PURE__*/function (_React$Component) {
|
|
|
776
773
|
var _this;
|
|
777
774
|
_classCallCheck(this, QueryBuilder);
|
|
778
775
|
_this = _callSuper(this, QueryBuilder, [props]);
|
|
776
|
+
_defineProperty(_this, "context", void 0);
|
|
779
777
|
// These sit after the lifecycle methods because `react/sort-comp` sorts
|
|
780
778
|
// TypeScript field declarations into `everything-else`, which the configured
|
|
781
779
|
// order puts after `lifecycle`. Runtime is unaffected: field initializers run
|
|
782
780
|
// right after `super()`, so the constructor's assignments still win.
|
|
783
|
-
//
|
|
784
|
-
// `this.context` is not re-declared: React types it as `any`, and a field
|
|
785
|
-
// declaration would be emitted at runtime and shadow the context React
|
|
786
|
-
// assigns.
|
|
787
781
|
_defineProperty(_this, "mutexObj", void 0);
|
|
788
782
|
_defineProperty(_this, "orderMembersOrderKeys", void 0);
|
|
789
783
|
_defineProperty(_this, "prevContext", void 0);
|
|
@@ -1454,7 +1448,7 @@ _defineProperty(QueryBuilder, "defaultProps", {
|
|
|
1454
1448
|
});
|
|
1455
1449
|
|
|
1456
1450
|
/**
|
|
1457
|
-
* Cube
|
|
1451
|
+
* Cube context provider
|
|
1458
1452
|
* ```js
|
|
1459
1453
|
* import React from 'react';
|
|
1460
1454
|
* import cube from '@cubejs-client/core';
|
|
@@ -1647,7 +1641,7 @@ function useLazyDryRun(query) {
|
|
|
1647
1641
|
}
|
|
1648
1642
|
|
|
1649
1643
|
/**
|
|
1650
|
-
* A React hook for executing Cube
|
|
1644
|
+
* A React hook for executing Cube queries
|
|
1651
1645
|
* ```js
|
|
1652
1646
|
* import React from 'react';
|
|
1653
1647
|
* import { Table } from 'antd';
|
|
@@ -1706,17 +1700,29 @@ function useCubeQuery(query) {
|
|
|
1706
1700
|
error = _useState0[0],
|
|
1707
1701
|
setError = _useState0[1];
|
|
1708
1702
|
var context = React.useContext(CubeContext);
|
|
1703
|
+
var requestIdRef = React.useRef(0);
|
|
1704
|
+
var hasStartedRequestRef = React.useRef(false);
|
|
1709
1705
|
var subscribeRequest = null;
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
var progressCallback = function progressCallback(progressResult) {
|
|
1713
|
-
return setProgress(progressResult.progressResponse);
|
|
1714
|
-
};
|
|
1715
|
-
function fetch() {
|
|
1716
|
-
return _fetch.apply(this, arguments);
|
|
1706
|
+
function isCurrentRequest(requestId) {
|
|
1707
|
+
return requestId === requestIdRef.current;
|
|
1717
1708
|
}
|
|
1718
|
-
function
|
|
1719
|
-
|
|
1709
|
+
function startRequest() {
|
|
1710
|
+
hasStartedRequestRef.current = true;
|
|
1711
|
+
return ++requestIdRef.current;
|
|
1712
|
+
}
|
|
1713
|
+
function createProgressCallback(requestId) {
|
|
1714
|
+
return function (progressResult) {
|
|
1715
|
+
if (isCurrentRequest(requestId)) {
|
|
1716
|
+
// `progressResponse` is not part of the public `ProgressResult` API
|
|
1717
|
+
setProgress(progressResult.progressResponse);
|
|
1718
|
+
}
|
|
1719
|
+
};
|
|
1720
|
+
}
|
|
1721
|
+
function fetchQuery(_x) {
|
|
1722
|
+
return _fetchQuery.apply(this, arguments);
|
|
1723
|
+
}
|
|
1724
|
+
function _fetchQuery() {
|
|
1725
|
+
_fetchQuery = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(requestId) {
|
|
1720
1726
|
var resetResultSetOnChange, cubeApi, _context$options, response, _t2;
|
|
1721
1727
|
return _regenerator().w(function (_context2) {
|
|
1722
1728
|
while (1) switch (_context2.p = _context2.n) {
|
|
@@ -1734,35 +1740,61 @@ function useCubeQuery(query) {
|
|
|
1734
1740
|
}
|
|
1735
1741
|
setError(null);
|
|
1736
1742
|
setLoading(true);
|
|
1743
|
+
setProgress(null);
|
|
1737
1744
|
_context2.p = 2;
|
|
1738
1745
|
_context2.n = 3;
|
|
1739
1746
|
return cubeApi.load(query, _objectSpread2({
|
|
1740
1747
|
mutexObj: mutexRef.current,
|
|
1741
1748
|
mutexKey: 'query',
|
|
1742
|
-
progressCallback:
|
|
1749
|
+
progressCallback: createProgressCallback(requestId),
|
|
1743
1750
|
castNumerics: Boolean(typeof options.castNumerics === 'boolean' ? options.castNumerics : context === null || context === void 0 || (_context$options = context.options) === null || _context$options === void 0 ? void 0 : _context$options.castNumerics)
|
|
1744
1751
|
}, options.cache ? {
|
|
1745
1752
|
cache: options.cache
|
|
1746
1753
|
} : {}));
|
|
1747
1754
|
case 3:
|
|
1748
1755
|
response = _context2.v;
|
|
1749
|
-
|
|
1750
|
-
|
|
1756
|
+
if (isCurrentRequest(requestId)) {
|
|
1757
|
+
setResultSet(response);
|
|
1758
|
+
setProgress(null);
|
|
1759
|
+
}
|
|
1751
1760
|
_context2.n = 5;
|
|
1752
1761
|
break;
|
|
1753
1762
|
case 4:
|
|
1754
1763
|
_context2.p = 4;
|
|
1755
1764
|
_t2 = _context2.v;
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1765
|
+
if (isCurrentRequest(requestId)) {
|
|
1766
|
+
setError(_t2);
|
|
1767
|
+
setResultSet(null);
|
|
1768
|
+
setProgress(null);
|
|
1769
|
+
}
|
|
1759
1770
|
case 5:
|
|
1760
|
-
|
|
1771
|
+
if (isCurrentRequest(requestId)) {
|
|
1772
|
+
setLoading(false);
|
|
1773
|
+
}
|
|
1761
1774
|
case 6:
|
|
1762
1775
|
return _context2.a(2);
|
|
1763
1776
|
}
|
|
1764
1777
|
}, _callee2, null, [[2, 4]]);
|
|
1765
1778
|
}));
|
|
1779
|
+
return _fetchQuery.apply(this, arguments);
|
|
1780
|
+
}
|
|
1781
|
+
function fetch() {
|
|
1782
|
+
return _fetch.apply(this, arguments);
|
|
1783
|
+
}
|
|
1784
|
+
function _fetch() {
|
|
1785
|
+
_fetch = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
1786
|
+
var requestId;
|
|
1787
|
+
return _regenerator().w(function (_context3) {
|
|
1788
|
+
while (1) switch (_context3.n) {
|
|
1789
|
+
case 0:
|
|
1790
|
+
requestId = startRequest();
|
|
1791
|
+
_context3.n = 1;
|
|
1792
|
+
return fetchQuery(requestId);
|
|
1793
|
+
case 1:
|
|
1794
|
+
return _context3.a(2);
|
|
1795
|
+
}
|
|
1796
|
+
}, _callee3);
|
|
1797
|
+
}));
|
|
1766
1798
|
return _fetch.apply(this, arguments);
|
|
1767
1799
|
}
|
|
1768
1800
|
React.useEffect(function () {
|
|
@@ -1778,15 +1810,15 @@ function useCubeQuery(query) {
|
|
|
1778
1810
|
}
|
|
1779
1811
|
function _loadQuery() {
|
|
1780
1812
|
_loadQuery = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
1781
|
-
var previousQuery, _t;
|
|
1813
|
+
var requestId, previousQuery, _t;
|
|
1782
1814
|
return _regenerator().w(function (_context) {
|
|
1783
1815
|
while (1) switch (_context.p = _context.n) {
|
|
1784
1816
|
case 0:
|
|
1785
1817
|
if (!(!skip && core.isQueryPresent(query))) {
|
|
1786
|
-
_context.n =
|
|
1818
|
+
_context.n = 8;
|
|
1787
1819
|
break;
|
|
1788
1820
|
}
|
|
1789
|
-
// `areQueriesEqual` is declared for a single query, and reads no more
|
|
1821
|
+
requestId = startRequest(); // `areQueriesEqual` is declared for a single query, and reads no more
|
|
1790
1822
|
// than `order` off one when given an array of queries
|
|
1791
1823
|
previousQuery = currentQuery;
|
|
1792
1824
|
if (!core.areQueriesEqual(previousQuery, query)) {
|
|
@@ -1797,6 +1829,7 @@ function useCubeQuery(query) {
|
|
|
1797
1829
|
}
|
|
1798
1830
|
setError(null);
|
|
1799
1831
|
setLoading(true);
|
|
1832
|
+
setProgress(null);
|
|
1800
1833
|
_context.p = 1;
|
|
1801
1834
|
if (!subscribeRequest) {
|
|
1802
1835
|
_context.n = 3;
|
|
@@ -1814,34 +1847,46 @@ function useCubeQuery(query) {
|
|
|
1814
1847
|
subscribeRequest = cubeApi.subscribe(query, _objectSpread2({
|
|
1815
1848
|
mutexObj: mutexRef.current,
|
|
1816
1849
|
mutexKey: 'query',
|
|
1817
|
-
progressCallback:
|
|
1850
|
+
progressCallback: createProgressCallback(requestId)
|
|
1818
1851
|
}, options.cache ? {
|
|
1819
1852
|
cache: options.cache
|
|
1820
1853
|
} : {}), function (e, result) {
|
|
1821
|
-
if (
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1854
|
+
if (isCurrentRequest(requestId)) {
|
|
1855
|
+
if (e) {
|
|
1856
|
+
setError(e);
|
|
1857
|
+
} else {
|
|
1858
|
+
setResultSet(result);
|
|
1859
|
+
}
|
|
1860
|
+
setLoading(false);
|
|
1861
|
+
setProgress(null);
|
|
1825
1862
|
}
|
|
1826
|
-
setLoading(false);
|
|
1827
|
-
setProgress(null);
|
|
1828
1863
|
});
|
|
1829
1864
|
_context.n = 5;
|
|
1830
1865
|
break;
|
|
1831
1866
|
case 4:
|
|
1832
1867
|
_context.n = 5;
|
|
1833
|
-
return
|
|
1868
|
+
return fetchQuery(requestId);
|
|
1834
1869
|
case 5:
|
|
1835
1870
|
_context.n = 7;
|
|
1836
1871
|
break;
|
|
1837
1872
|
case 6:
|
|
1838
1873
|
_context.p = 6;
|
|
1839
1874
|
_t = _context.v;
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1875
|
+
if (isCurrentRequest(requestId)) {
|
|
1876
|
+
setError(_t);
|
|
1877
|
+
setResultSet(null);
|
|
1878
|
+
setLoading(false);
|
|
1879
|
+
setProgress(null);
|
|
1880
|
+
}
|
|
1844
1881
|
case 7:
|
|
1882
|
+
_context.n = 9;
|
|
1883
|
+
break;
|
|
1884
|
+
case 8:
|
|
1885
|
+
if (hasStartedRequestRef.current) {
|
|
1886
|
+
setLoading(false);
|
|
1887
|
+
setProgress(null);
|
|
1888
|
+
}
|
|
1889
|
+
case 9:
|
|
1845
1890
|
return _context.a(2);
|
|
1846
1891
|
}
|
|
1847
1892
|
}, _callee, null, [[1, 6]]);
|
|
@@ -1850,6 +1895,7 @@ function useCubeQuery(query) {
|
|
|
1850
1895
|
}
|
|
1851
1896
|
loadQuery();
|
|
1852
1897
|
return function () {
|
|
1898
|
+
requestIdRef.current += 1;
|
|
1853
1899
|
if (subscribeRequest) {
|
|
1854
1900
|
subscribeRequest.unsubscribe();
|
|
1855
1901
|
subscribeRequest = null;
|