@cubejs-client/core 0.28.45 → 0.28.52

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cubejs-client/core",
3
- "version": "0.28.45",
3
+ "version": "0.28.52",
4
4
  "engines": {},
5
5
  "repository": {
6
6
  "type": "git",
@@ -45,5 +45,5 @@
45
45
  "eslint-plugin-node": "^5.2.1",
46
46
  "jest": "^26.0.1"
47
47
  },
48
- "gitHead": "5d3def74d8e2b029706358b6a3ca4c21a02ed497"
48
+ "gitHead": "22f1fcf3dc77d5784eda6b8eff8bcd430652cc69"
49
49
  }
package/src/ResultSet.js CHANGED
@@ -9,12 +9,12 @@ import {
9
9
 
10
10
  import { aliasSeries } from './utils';
11
11
 
12
- dayjs.locale({
13
- ...en,
14
- weekStart: 1,
15
- });
16
12
  dayjs.extend(quarterOfYear);
17
13
 
14
+ // When granularity is week, weekStart Value must be 1. However, since the client can change it globally (https://day.js.org/docs/en/i18n/changing-locale)
15
+ // So the function below has been added.
16
+ const internalDayjs = (...args) => dayjs(...args).locale({ ...en, weekStart: 1 });
17
+
18
18
  export const TIME_SERIES = {
19
19
  day: (range) => range.by('d').map(d => d.format('YYYY-MM-DDT00:00:00.000')),
20
20
  month: (range) => range.snapTo('month').by('M').map(d => d.format('YYYY-MM-01T00:00:00.000')),
@@ -60,8 +60,8 @@ export const dayRange = (from, to) => ({
60
60
  by: (value) => {
61
61
  const results = [];
62
62
 
63
- let start = dayjs(from);
64
- const end = dayjs(to);
63
+ let start = internalDayjs(from);
64
+ const end = internalDayjs(to);
65
65
 
66
66
  while (start.isBefore(end) || start.isSame(end)) {
67
67
  results.push(start);
@@ -70,9 +70,9 @@ export const dayRange = (from, to) => ({
70
70
 
71
71
  return results;
72
72
  },
73
- snapTo: (value) => dayRange(dayjs(from).startOf(value), dayjs(to).endOf(value)),
74
- start: dayjs(from),
75
- end: dayjs(to),
73
+ snapTo: (value) => dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value)),
74
+ start: internalDayjs(from),
75
+ end: internalDayjs(to),
76
76
  });
77
77
 
78
78
  export const QUERY_TYPE = {
@@ -318,7 +318,7 @@ class ResultSet {
318
318
  if (!dateRange) {
319
319
  const member = ResultSet.timeDimensionMember(timeDimension);
320
320
  const dates = pipe(
321
- map(row => row[member] && dayjs(row[member])),
321
+ map(row => row[member] && internalDayjs(row[member])),
322
322
  filter(Boolean)
323
323
  )(this.timeDimensionBackwardCompatibleData(resultIndex));
324
324
 
@@ -1,5 +1,6 @@
1
1
  import 'jest';
2
-
2
+ import dayjs from 'dayjs';
3
+ import ko from 'dayjs/locale/ko';
3
4
  import ResultSet from '../ResultSet';
4
5
 
5
6
  describe('ResultSet Granularity', () => {
@@ -110,5 +111,113 @@ describe('ResultSet Granularity', () => {
110
111
  },
111
112
  ]);
112
113
  });
114
+
115
+ test('week granularity in other locale', () => {
116
+ dayjs.locale(ko);
117
+ const result = new ResultSet({
118
+ queryType: 'regularQuery',
119
+ results: [
120
+ {
121
+ query: {
122
+ measures: ['LineItems.count'],
123
+ timeDimensions: [
124
+ {
125
+ dimension: 'LineItems.createdAt',
126
+ granularity: 'week',
127
+ dateRange: ['2019-01-08T00:00:00.000', '2019-01-18T00:00:00.000'],
128
+ },
129
+ ],
130
+ filters: [
131
+ {
132
+ operator: 'equals',
133
+ values: ['us-ut'],
134
+ member: 'Users.state',
135
+ },
136
+ ],
137
+ limit: 2,
138
+ rowLimit: 2,
139
+ timezone: 'UTC',
140
+ order: [],
141
+ dimensions: [],
142
+ queryType: 'regularQuery',
143
+ },
144
+ data: [
145
+ {
146
+ 'LineItems.createdAt.week': '2019-01-07T00:00:00.000',
147
+ 'LineItems.createdAt': '2019-01-07T00:00:00.000',
148
+ 'LineItems.count': '2',
149
+ },
150
+ ],
151
+ lastRefreshTime: '2021-07-07T14:31:30.458Z',
152
+ annotation: {
153
+ measures: {
154
+ 'LineItems.count': {
155
+ title: 'Line Items Count',
156
+ shortTitle: 'Count',
157
+ type: 'number',
158
+ drillMembers: ['LineItems.id', 'LineItems.createdAt'],
159
+ drillMembersGrouped: {
160
+ measures: [],
161
+ dimensions: ['LineItems.id', 'LineItems.createdAt'],
162
+ },
163
+ },
164
+ },
165
+ dimensions: {},
166
+ segments: {},
167
+ timeDimensions: {
168
+ 'LineItems.createdAt.week': {
169
+ title: 'Line Items Created at',
170
+ shortTitle: 'Created at',
171
+ type: 'time',
172
+ },
173
+ 'LineItems.createdAt': {
174
+ title: 'Line Items Created at',
175
+ shortTitle: 'Created at',
176
+ type: 'time',
177
+ },
178
+ },
179
+ },
180
+ slowQuery: false,
181
+ },
182
+ ],
183
+ pivotQuery: {
184
+ measures: ['LineItems.count'],
185
+ timeDimensions: [
186
+ {
187
+ dimension: 'LineItems.createdAt',
188
+ granularity: 'week',
189
+ dateRange: ['2019-01-08T00:00:00.000', '2019-01-18T00:00:00.000'],
190
+ },
191
+ ],
192
+ filters: [
193
+ {
194
+ operator: 'equals',
195
+ values: ['us-ut'],
196
+ member: 'Users.state',
197
+ },
198
+ ],
199
+ limit: 2,
200
+ rowLimit: 2,
201
+ timezone: 'UTC',
202
+ order: [],
203
+ dimensions: [],
204
+ queryType: 'regularQuery',
205
+ },
206
+ slowQuery: false,
207
+ });
208
+
209
+ expect(result.chartPivot()).toStrictEqual([
210
+ {
211
+ x: '2019-01-07T00:00:00.000',
212
+ xValues: ['2019-01-07T00:00:00.000'],
213
+ 'LineItems.count': 2,
214
+ },
215
+ {
216
+ x: '2019-01-14T00:00:00.000',
217
+ xValues: ['2019-01-14T00:00:00.000'],
218
+ 'LineItems.count': 0,
219
+ },
220
+ ]);
221
+ });
113
222
  });
114
223
  });