@sis-cc/dotstatsuite-components 9.2.2 → 9.3.3

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.
@@ -3,7 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getTimePeriodLabel = exports.getLocale = undefined;
6
+ exports.getTimePeriodLabel = exports.getReportedTimePeriodLabel = exports.getLocale = undefined;
7
+
8
+ var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
9
+
10
+ var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
7
11
 
8
12
  var _ramda = require('ramda');
9
13
 
@@ -45,10 +49,10 @@ var _th = require('date-fns/locale/th');
45
49
 
46
50
  var _th2 = _interopRequireDefault(_th);
47
51
 
48
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
49
-
50
52
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
51
53
 
54
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
55
+
52
56
  var isValidDate = function isValidDate(period) {
53
57
  return R.and(_dateFns2.default.isDate, function (date) {
54
58
  return R.not(R.equals(date.getTime(date), NaN));
@@ -63,6 +67,58 @@ var formaterPeriod = function formaterPeriod(locale, format) {
63
67
  };
64
68
  };
65
69
 
70
+ var getReportedTimePeriodLabel = exports.getReportedTimePeriodLabel = function getReportedTimePeriodLabel(freq, _format, locale) {
71
+ return function (reportYearStart, _ref) {
72
+ var id = _ref.id,
73
+ start = _ref.start,
74
+ reportedStart = _ref.reportedStart;
75
+
76
+ var year = _dateFns2.default.getYear(start);
77
+ var reportStartDate = new Date(year, reportYearStart.month, reportYearStart.day);
78
+ var isReportFirstDate = _dateFns2.default.isEqual(reportStartDate, new Date(year, 1, 1));
79
+ if (isReportFirstDate || freq === 'D') {
80
+ return R.isNil(_format) ? id : _dateFns2.default.format(start, _format, { locale: getLocale(locale) });
81
+ }
82
+ var nextYear = year + 1;
83
+ if (freq === 'A') {
84
+ return year + '/' + nextYear;
85
+ }
86
+ if (freq === 'S') {
87
+ var _R$match = R.match(/S\d/, id),
88
+ _R$match2 = (0, _slicedToArray3.default)(_R$match, 1),
89
+ semester = _R$match2[0];
90
+
91
+ return year + '/' + nextYear + '-' + semester;
92
+ }
93
+ if (freq === 'Q') {
94
+ var _R$match3 = R.match(/Q\d/, id),
95
+ _R$match4 = (0, _slicedToArray3.default)(_R$match3, 1),
96
+ quarter = _R$match4[0];
97
+
98
+ return year + '/' + nextYear + '-' + quarter;
99
+ }
100
+ if (freq === 'M') {
101
+ var isFirstDayOfMonth = _dateFns2.default.isFirstDayOfMonth(reportedStart);
102
+ if (isFirstDayOfMonth) {
103
+ return R.isNil(_format) ? id : _dateFns2.default.format(reportedStart, _format, { locale: getLocale(locale) });
104
+ }
105
+
106
+ var _R$match5 = R.match(/M[\d]{2}/, id),
107
+ _R$match6 = (0, _slicedToArray3.default)(_R$match5, 1),
108
+ month = _R$match6[0];
109
+
110
+ return year + '/' + nextYear + '-' + month;
111
+ }
112
+ // freq === 'W'
113
+
114
+ var _R$match7 = R.match(/W[\d]{2}/, id),
115
+ _R$match8 = (0, _slicedToArray3.default)(_R$match7, 1),
116
+ week = _R$match8[0];
117
+
118
+ return year + '/' + nextYear + '-' + week;
119
+ };
120
+ };
121
+
66
122
  var getTimePeriodLabel = exports.getTimePeriodLabel = function getTimePeriodLabel(locale) {
67
123
  var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'YYYY MMM';
68
124
  return R.pipe(R.when(R.isNil, R.always('')), R.when(isValidDate, formaterPeriod(locale, format)));
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getReportingYearStart = undefined;
7
+
8
+ var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
9
+
10
+ var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
11
+
12
+ var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
13
+
14
+ var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
15
+
16
+ var _ramda = require('ramda');
17
+
18
+ var R = _interopRequireWildcard(_ramda);
19
+
20
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ var getReportingYearStart = exports.getReportingYearStart = function getReportingYearStart(sdmxJson) {
25
+ var attributes = R.pipe(R.pathOr({}, ['data', 'structure', 'attributes']), function (_ref) {
26
+ var _ref$dataSet = _ref.dataSet,
27
+ dataSet = _ref$dataSet === undefined ? [] : _ref$dataSet,
28
+ _ref$observation = _ref.observation,
29
+ observation = _ref$observation === undefined ? [] : _ref$observation,
30
+ _ref$series = _ref.series,
31
+ series = _ref$series === undefined ? [] : _ref$series;
32
+ return [].concat((0, _toConsumableArray3.default)(dataSet), (0, _toConsumableArray3.default)(observation), (0, _toConsumableArray3.default)(series));
33
+ })(sdmxJson);
34
+
35
+ var reportYearStartAttr = R.find(R.propEq('id', 'REPORTING_YEAR_START_DAY'), attributes) || {};
36
+ var reportYearStart = R.pathOr('--01-01', ['values', 0, 'name'], reportYearStartAttr);
37
+
38
+ var _R$match = R.match(/[\d]{2}/g, reportYearStart),
39
+ _R$match2 = (0, _slicedToArray3.default)(_R$match, 2),
40
+ month = _R$match2[0],
41
+ day = _R$match2[1];
42
+
43
+ return { month: month, day: day };
44
+ };
@@ -9,6 +9,10 @@ var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
9
9
 
10
10
  var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
11
11
 
12
+ var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
13
+
14
+ var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
15
+
12
16
  var _extends2 = require('babel-runtime/helpers/extends');
13
17
 
14
18
  var _extends3 = _interopRequireDefault(_extends2);
@@ -136,10 +140,10 @@ var getRowsData = function getRowsData(rowsIndexes, dimensions) {
136
140
  return R.unnest(res);
137
141
  };
138
142
 
139
- var getLayoutData = exports.getLayoutData = function getLayoutData(layoutIndexes, layout) {
143
+ var getLayoutData = function getLayoutData(layoutIndexes, layout) {
140
144
  var header = layoutIndexes.header,
141
145
  sections = layoutIndexes.sections,
142
- truncated = layoutIndexes.truncated;
146
+ rest = (0, _objectWithoutProperties3.default)(layoutIndexes, ['header', 'sections']);
143
147
 
144
148
  var headerData = R.map(function (i) {
145
149
  return indexesToLayoutData(layout.header, i);
@@ -157,5 +161,6 @@ var getLayoutData = exports.getLayoutData = function getLayoutData(layoutIndexes
157
161
  return [sectionData, rowsData];
158
162
  }, sections);
159
163
 
160
- return { headerData: headerData, sectionsData: sectionsData, truncated: truncated };
161
- };
164
+ return (0, _extends3.default)({ headerData: headerData, sectionsData: sectionsData }, rest);
165
+ };
166
+ exports.getLayoutData = getLayoutData;
@@ -142,7 +142,7 @@ var refineLayoutSize = exports.refineLayoutSize = function refineLayoutSize(_ref
142
142
  sections = layoutIndexes.sections;
143
143
 
144
144
  if (R.isNil(limit) || limit === 0 || R.all(R.isEmpty, [header, sections])) {
145
- return R.assoc('truncated', false, layoutIndexes);
145
+ return R.pipe(R.set(R.lensProp('truncated'), false), R.set(R.lensProp('totalCells'), null))(layoutIndexes);
146
146
  }
147
147
 
148
148
  //number of dimensions in header
@@ -178,7 +178,7 @@ var refineLayoutSize = exports.refineLayoutSize = function refineLayoutSize(_ref
178
178
 
179
179
  var excess = total - limit;
180
180
  if (excess <= 0) {
181
- return R.assoc('truncated', false, layoutIndexes);
181
+ return R.pipe(R.set(R.lensProp('truncated'), false), R.set(R.lensProp('totalCells'), total))(layoutIndexes);
182
182
  }
183
183
 
184
184
  // total of cells in one column
@@ -205,6 +205,6 @@ var refineLayoutSize = exports.refineLayoutSize = function refineLayoutSize(_ref
205
205
 
206
206
  var result = getRefinedLayout(isVertical, truncated, refined);
207
207
 
208
- return R.assoc('truncated', true, result);
208
+ return R.pipe(R.set(R.lensProp('truncated'), true), R.set(R.lensProp('totalCells'), total))(result);
209
209
  };
210
210
  };
@@ -23,6 +23,8 @@ var _sdmxData = require('./sdmx-data');
23
23
 
24
24
  var _date = require('./date');
25
25
 
26
+ var _getReportingYearStart = require('./preparators/getReportingYearStart');
27
+
26
28
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
27
29
 
28
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -32,7 +34,7 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
32
34
 
33
35
  var getLanguage = R.pipe(R.pathOr('', ['meta', 'contentLanguages']), R.head());
34
36
  var locale = getLanguage(dataNew);
35
-
37
+ var reportYearStart = (0, _getReportingYearStart.getReportingYearStart)(dataNew);
36
38
  var getProp = function getProp(prop, locale) {
37
39
  return R.pathOr(null, [prop, locale]);
38
40
  };
@@ -47,7 +49,12 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
47
49
  var valueAnnotations = R.pipe(R.propOr([], 'annotations'), R.flip(R.props)(annotations))(value);
48
50
  var name = getLocalisedProp('names')(value);
49
51
  var __indexPosition = NaN;
52
+ var start = null;
50
53
  if (isTimeDimension) {
54
+ start = new Date(R.prop('start', value));
55
+ start = Date.UTC(_dateFns2.default.getYear(start), _dateFns2.default.getMonth(start), _dateFns2.default.getDate(start), _dateFns2.default.getHours(start), _dateFns2.default.getMinutes(start), _dateFns2.default.getSeconds(start));
56
+ start = _dateFns2.default.addMonths(start, reportYearStart.month - 1);
57
+ start = _dateFns2.default.addDays(start, reportYearStart.day - 1);
51
58
  __indexPosition = _dateFns2.default.getTime(new Date(R.prop('start', value)));
52
59
  }
53
60
  if (isNaN(__indexPosition)) {
@@ -56,9 +63,8 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
56
63
  var timeFormat = R.prop('timeFormat', options);
57
64
  return (0, _extends3.default)({}, value, {
58
65
  id: R.when(R.always(isTimeDimension), R.replace(/M/g, ''))(value.id),
59
- name: R.when(R.always(isTimeDimension), function (name) {
60
- return R.isNil(timeFormat) ? name : (0, _date.getTimePeriodLabel)(locale, timeFormat)(R.prop('start', value));
61
- })(name),
66
+ name: R.when(R.always(isTimeDimension), R.always((0, _date.getReportedTimePeriodLabel)(options.frequency, timeFormat, locale)(reportYearStart, { id: value.id, reportedStart: start, start: value.start })))(name),
67
+ start: start ? start.toISOString() : null,
62
68
  __indexPosition: __indexPosition,
63
69
  __index: __index
64
70
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sis-cc/dotstatsuite-components",
3
3
  "description": "Set components based on React.",
4
- "version": "9.2.2",
4
+ "version": "9.3.3",
5
5
  "main": "lib/index.js",
6
6
  "author": "OECD",
7
7
  "license": "MIT",
@@ -20,7 +20,7 @@
20
20
  "@react-hook/size": "^2.1.1",
21
21
  "@sis-cc/dotstatsuite-d3-charts": "^8.0.0",
22
22
  "@sis-cc/dotstatsuite-sdmxjs": "^4.5.2",
23
- "@sis-cc/dotstatsuite-visions": "^6.4.2",
23
+ "@sis-cc/dotstatsuite-visions": "^6.6.1",
24
24
  "date-fns": "^1.30.1",
25
25
  "glamor": "^2.20.40",
26
26
  "glamorous": "^4.13.1",
@@ -23,7 +23,40 @@ export const getLocale = R.cond([
23
23
  [R.T, R.always(en)]
24
24
  ]);
25
25
 
26
- const formaterPeriod = (locale, format) => date => dateFns.format(date, format, { locale: getLocale(locale) })
26
+ const formaterPeriod = (locale, format) => date => dateFns.format(date, format, { locale: getLocale(locale) });
27
+
28
+ export const getReportedTimePeriodLabel = (freq, _format, locale) => (reportYearStart, { id, start, reportedStart }) => {
29
+ const year = dateFns.getYear(start);
30
+ const reportStartDate = new Date(year, reportYearStart.month, reportYearStart.day);
31
+ const isReportFirstDate = dateFns.isEqual(reportStartDate, new Date(year, 1, 1));
32
+ if (isReportFirstDate || freq === 'D') {
33
+ return R.isNil(_format) ? id : dateFns.format(start, _format, { locale: getLocale(locale) });
34
+ }
35
+ const nextYear = year + 1;
36
+ if (freq === 'A') {
37
+ return `${year}/${nextYear}`;
38
+ }
39
+ if (freq === 'S') {
40
+ const [semester] = R.match(/S\d/, id);
41
+ return `${year}/${nextYear}-${semester}`;
42
+ }
43
+ if (freq === 'Q') {
44
+ const [quarter] = R.match(/Q\d/, id);
45
+ return `${year}/${nextYear}-${quarter}`;
46
+ }
47
+ if (freq === 'M') {
48
+ const isFirstDayOfMonth = dateFns.isFirstDayOfMonth(reportedStart);
49
+ if (isFirstDayOfMonth) {
50
+ return R.isNil(_format) ? id : dateFns.format(reportedStart, _format, { locale: getLocale(locale) });
51
+ }
52
+ const [month] = R.match(/M[\d]{2}/, id);
53
+ return `${year}/${nextYear}-${month}`;
54
+ }
55
+ // freq === 'W'
56
+ const [week] = R.match(/W[\d]{2}/, id)
57
+ return `${year}/${nextYear}-${week}`;
58
+ }
59
+
27
60
 
28
61
  export const getTimePeriodLabel = (locale, format = 'YYYY MMM') => R.pipe(
29
62
  R.when(R.isNil, R.always('')),
@@ -0,0 +1,13 @@
1
+ import * as R from 'ramda';
2
+
3
+ export const getReportingYearStart = (sdmxJson) => {
4
+ const attributes = R.pipe(
5
+ R.pathOr({}, ['data', 'structure', 'attributes']),
6
+ ({ dataSet=[], observation=[], series=[] }) => [...dataSet, ...observation, ...series]
7
+ )(sdmxJson);
8
+
9
+ const reportYearStartAttr = R.find(R.propEq('id', 'REPORTING_YEAR_START_DAY'), attributes) || {};
10
+ const reportYearStart = R.pathOr('--01-01', ['values', 0, 'name'], reportYearStartAttr);
11
+ const [month, day] = R.match(/[\d]{2}/g, reportYearStart);
12
+ return ({ month, day });
13
+ };
@@ -150,7 +150,7 @@ const getRowsData = (rowsIndexes, dimensions) => {
150
150
  };
151
151
 
152
152
  export const getLayoutData = (layoutIndexes, layout) => {
153
- const { header, sections, truncated } = layoutIndexes;
153
+ const { header, sections, ...rest } = layoutIndexes;
154
154
  const headerData = R.map(i => indexesToLayoutData(layout.header, i), header);
155
155
 
156
156
  const sectionsData = R.map(
@@ -165,5 +165,5 @@ export const getLayoutData = (layoutIndexes, layout) => {
165
165
  sections
166
166
  );
167
167
 
168
- return ({ headerData, sectionsData, truncated });
168
+ return ({ headerData, sectionsData, ...rest });
169
169
  };
@@ -140,7 +140,10 @@ const segregateLayout = (isVertical) => R.ifElse(
140
140
  export const refineLayoutSize = ({ layout, observations, limit }) => layoutIndexes => {
141
141
  const { header, sections } = layoutIndexes;
142
142
  if (R.isNil(limit) || limit === 0 || R.all(R.isEmpty, [header, sections])) {
143
- return R.assoc('truncated', false, layoutIndexes);
143
+ return R.pipe(
144
+ R.set(R.lensProp('truncated'), false),
145
+ R.set(R.lensProp('totalCells'), null),
146
+ )(layoutIndexes);
144
147
  }
145
148
 
146
149
  //number of dimensions in header
@@ -192,7 +195,10 @@ export const refineLayoutSize = ({ layout, observations, limit }) => layoutIndex
192
195
 
193
196
  const excess = total - limit;
194
197
  if (excess <= 0) {
195
- return R.assoc('truncated', false, layoutIndexes);
198
+ return R.pipe(
199
+ R.set(R.lensProp('truncated'), false),
200
+ R.set(R.lensProp('totalCells'), total),
201
+ )(layoutIndexes);
196
202
  }
197
203
 
198
204
  // total of cells in one column
@@ -202,7 +208,6 @@ export const refineLayoutSize = ({ layout, observations, limit }) => layoutIndex
202
208
 
203
209
  const [toTruncate, toRefine] = segregateLayout(isVertical)(layoutIndexes);
204
210
 
205
-
206
211
  const cutLength = R.pipe(
207
212
  R.ifElse(R.identity, R.always(rowCellsCount), R.always(columnCellsCount)),
208
213
  R.divide(excess),
@@ -220,5 +225,8 @@ export const refineLayoutSize = ({ layout, observations, limit }) => layoutIndex
220
225
 
221
226
  const result = getRefinedLayout(isVertical, truncated, refined);
222
227
 
223
- return R.assoc('truncated', true, result);
228
+ return R.pipe(
229
+ R.set(R.lensProp('truncated'), true),
230
+ R.set(R.lensProp('totalCells'), total),
231
+ )(result);
224
232
  };
@@ -3,12 +3,13 @@ import dateFns from 'date-fns';
3
3
  import { getCodeOrder, isTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';
4
4
  import {
5
5
  getRelationnalAnnotations, setAnnotationsLayout, getIsHidden, hiddenFormat } from './sdmx-data';
6
- import { getTimePeriodLabel } from './date';
6
+ import { getReportedTimePeriodLabel } from './date';
7
+ import { getReportingYearStart } from './preparators/getReportingYearStart';
7
8
 
8
9
  export const dataTransformer = (dataNew, options = {}) => {
9
10
  const getLanguage = R.pipe(R.pathOr('', ['meta', 'contentLanguages']), R.head());
10
11
  const locale = getLanguage(dataNew);
11
-
12
+ const reportYearStart = getReportingYearStart(dataNew);
12
13
  const getProp = (prop, locale) => R.pathOr(null,[prop, locale]);
13
14
  const getLocalisedProp = R.curry((prop, collection) => getProp(prop, locale)(collection));
14
15
  const getValues = R.map((value) => ({ ...value, name: getLocalisedProp('names', value) }));
@@ -21,7 +22,12 @@ export const dataTransformer = (dataNew, options = {}) => {
21
22
  )(value);
22
23
  const name = getLocalisedProp('names')(value);
23
24
  let __indexPosition = NaN;
25
+ let start = null;
24
26
  if (isTimeDimension) {
27
+ start = new Date(R.prop('start', value));
28
+ start = Date.UTC(dateFns.getYear(start), dateFns.getMonth(start), dateFns.getDate(start), dateFns.getHours(start), dateFns.getMinutes(start), dateFns.getSeconds(start));
29
+ start = dateFns.addMonths(start, reportYearStart.month - 1);
30
+ start = dateFns.addDays(start, reportYearStart.day - 1);
25
31
  __indexPosition = dateFns.getTime(new Date(R.prop('start', value)));
26
32
  }
27
33
  if (isNaN(__indexPosition)) {
@@ -36,8 +42,9 @@ export const dataTransformer = (dataNew, options = {}) => {
36
42
  )(value.id),
37
43
  name: R.when(
38
44
  R.always(isTimeDimension),
39
- name => R.isNil(timeFormat) ? name : getTimePeriodLabel(locale, timeFormat)(R.prop('start', value))
45
+ R.always(getReportedTimePeriodLabel(options.frequency, timeFormat, locale)(reportYearStart, { id: value.id, reportedStart: start, start:value.start }))
40
46
  )(name),
47
+ start: start ? start.toISOString() : null,
41
48
  __indexPosition,
42
49
  __index,
43
50
  });
@@ -1306,6 +1306,7 @@ describe('getTableData tests', () => {
1306
1306
  observationsType: null
1307
1307
  })).to.deep.equal({
1308
1308
  truncated: false,
1309
+ totalCells: null,
1309
1310
  cells: {},
1310
1311
  headerData: [],
1311
1312
  sectionsData: [],
@@ -32406,5 +32406,6 @@
32406
32406
  ]
32407
32407
  ]
32408
32408
  ],
32409
- "truncated": false
32409
+ "truncated": false,
32410
+ "totalCells": 2754
32410
32411
  }
@@ -2757,5 +2757,6 @@
2757
2757
  ]
2758
2758
  ]
2759
2759
  ],
2760
- "truncated": false
2760
+ "truncated": false,
2761
+ "totalCells": 2754
2761
2762
  }
@@ -20353,5 +20353,6 @@
20353
20353
  ]
20354
20354
  ]
20355
20355
  ],
20356
- "truncated": true
20356
+ "truncated": true,
20357
+ "totalCells": 7503
20357
20358
  }
@@ -3006,5 +3006,6 @@
3006
3006
  "header": [
3007
3007
  []
3008
3008
  ],
3009
- "truncated": true
3009
+ "truncated": true,
3010
+ "totalCells": 7503
3010
3011
  }
@@ -118,6 +118,7 @@ describe('refineLayoutSize tests', () => {
118
118
 
119
119
  const expected = {
120
120
  truncated: false,
121
+ totalCells: 57,
121
122
  header: [[0], [1], [2]],
122
123
  sections: [
123
124
  [[0], [[0], [1], [2]]],
@@ -179,6 +180,7 @@ describe('refineLayoutSize tests', () => {
179
180
  };
180
181
 
181
182
  const expected = {
183
+ totalCells: 140,
182
184
  truncated: true,
183
185
  header: [[]],
184
186
  sections: [
@@ -260,6 +262,7 @@ describe('refineLayoutSize tests', () => {
260
262
  };
261
263
 
262
264
  const expected = {
265
+ totalCells: 140,
263
266
  truncated: true,
264
267
  header: [
265
268
  [0, 0, 0],
@@ -310,6 +313,7 @@ describe('refineLayoutSize tests', () => {
310
313
  };
311
314
 
312
315
  const expected = {
316
+ totalCells: 57,
313
317
  truncated: true,
314
318
  header: [[0],[2]],
315
319
  sections: [
@@ -349,6 +353,7 @@ describe('refineLayoutSize tests', () => {
349
353
  };
350
354
 
351
355
  const expected = {
356
+ totalCells: 64,
352
357
  truncated:true,
353
358
  header: [
354
359
  [0, 0],
@@ -392,6 +397,7 @@ describe('refineLayoutSize tests', () => {
392
397
  };
393
398
 
394
399
  const expected = {
400
+ totalCells: 64,
395
401
  truncated: true,
396
402
  header: [
397
403
  [0, 0],