@syncfusion/ej2-pivotview 19.3.46 → 19.3.55

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.
@@ -3866,10 +3866,14 @@ class PivotEngine {
3866
3866
  if (keyInd !== 0) {
3867
3867
  member.valueSort.levelName = parentMember + this.valueSortSettings.headerDelimiter + member.formattedText;
3868
3868
  member.valueSort[parentMember + this.valueSortSettings.headerDelimiter + member.formattedText] = 1;
3869
+ member.valueSort.uniqueName = parentMember + this.valueSortSettings.headerDelimiter + (member.actualText ? member.actualText : member.formattedText);
3870
+ member.valueSort[parentMember + this.valueSortSettings.headerDelimiter + (member.actualText ? member.actualText : member.formattedText)] = 1;
3869
3871
  }
3870
3872
  else {
3871
3873
  member.valueSort[member.formattedText] = 1;
3872
3874
  member.valueSort.levelName = member.formattedText;
3875
+ member.valueSort[member.actualText ? member.actualText : member.formattedText] = 1;
3876
+ member.valueSort.uniqueName = (member.actualText ? member.actualText : member.formattedText);
3873
3877
  }
3874
3878
  let memberString = member.valueSort.axis + this.valueSortSettings.headerDelimiter + member.valueSort.levelName;
3875
3879
  member.isDrilled = (valueFil && this.isValueFiltersAvail) ?
@@ -4037,10 +4041,16 @@ class PivotEngine {
4037
4041
  slicedHeader.formattedText;
4038
4042
  slicedHeader.valueSort[parentMember + this.valueSortSettings.headerDelimiter +
4039
4043
  slicedHeader.formattedText] = 1;
4044
+ slicedHeader.valueSort.uniqueName = parentMember + this.valueSortSettings.headerDelimiter +
4045
+ (slicedHeader.actualText ? slicedHeader.actualText : slicedHeader.formattedText);
4046
+ slicedHeader.valueSort[parentMember + this.valueSortSettings.headerDelimiter +
4047
+ (slicedHeader.actualText ? slicedHeader.actualText : slicedHeader.formattedText)] = 1;
4040
4048
  }
4041
4049
  else {
4042
4050
  slicedHeader.valueSort[slicedHeader.formattedText] = 1;
4043
4051
  slicedHeader.valueSort.levelName = slicedHeader.formattedText;
4052
+ slicedHeader.valueSort[(slicedHeader.actualText ? slicedHeader.actualText : slicedHeader.formattedText)] = 1;
4053
+ slicedHeader.valueSort.uniqueName = (slicedHeader.actualText ? slicedHeader.actualText : slicedHeader.formattedText);
4044
4054
  }
4045
4055
  member.members = [];
4046
4056
  hierarchy.push(member);
@@ -4225,6 +4235,7 @@ class PivotEngine {
4225
4235
  isDrilled: false,
4226
4236
  indexObject: {},
4227
4237
  members: [],
4238
+ actualText: 'Grand' + customText,
4228
4239
  formattedText: 'Grand' + customText,
4229
4240
  ordinal: len,
4230
4241
  type: 'grand sum',
@@ -4232,6 +4243,8 @@ class PivotEngine {
4232
4243
  };
4233
4244
  set[len].valueSort[set[len].formattedText] = 1;
4234
4245
  set[len].valueSort.levelName = set[len].formattedText;
4246
+ set[len].valueSort[set[len].actualText] = 1;
4247
+ set[len].valueSort.uniqueName = set[len].actualText;
4235
4248
  for (let ln = 0, lt = filter.length; ln < lt; ln++) {
4236
4249
  set[len].indexObject[filter[ln]] = filter[ln];
4237
4250
  }
@@ -4252,74 +4265,85 @@ class PivotEngine {
4252
4265
  let isLeastNode = !reformAxis[tnum].members.length;
4253
4266
  row.colIndex = 0;
4254
4267
  row.rowIndex = tnum;
4255
- if (!data[tnum]) {
4256
- data[tnum] = [];
4257
- this.valueContent[actCnt] = {};
4258
- data[tnum][0] = this.valueContent[actCnt][0] = this.frameHeaderWithKeys(row);
4268
+ let isRowFieldsAvail = false;
4269
+ if (this.valueAxis && this.dataSourceSettings.rows.length === 0 && this.dataSourceSettings.values.length > 1) {
4270
+ this.rowIndex = (isNullOrUndefined(this.rowIndex) && !isLeastNode && this.dataSourceSettings.rows.length === 0) ? row.index : this.rowIndex;
4271
+ isRowFieldsAvail = (this.valueAxis && this.dataSourceSettings.rows.length === 0 && row.valueSort.levelName.toString().indexOf('Grand Total.') !== 0);
4272
+ if (this.valueAxis && this.dataSourceSettings.rows.length === 0 && row.valueSort.levelName.toString().indexOf('Grand Total.') === 0) {
4273
+ row.index = this.rowIndex;
4274
+ }
4259
4275
  }
4260
- else {
4261
- data[tnum][0] = this.valueContent[actCnt][0] = this.frameHeaderWithKeys(row);
4262
- }
4263
- if (this.valueAxis && (this.isMultiMeasures || this.alwaysShowValueHeader)) {
4264
- let hpos = tnum;
4265
- let actpos = actCnt;
4266
- let rowIndex = tnum;
4267
- let isValueCellUpdated = false;
4268
- if ((((!(level === 0 && this.measureIndex === 0) && !isLeastNode) || isLeastNode) && row.type === 'value' && !row.valueSort.axis) ||
4269
- (level > this.measureIndex && row.axis === 'row' && row.valueSort.axis)) {
4270
- let vln = 0;
4271
- let isValueIndexFound = false;
4272
- for (let cln = 0, dln = 1, clt = columns.length; cln < clt; ++cln) {
4273
- if (!isValueIndexFound) {
4274
- for (vln = 0; vln < vlt; vln++) {
4275
- let name = this.values[vln].caption ? this.values[vln].caption : this.values[vln].name;
4276
- if (row.valueSort.levelName && row.valueSort.levelName.toString().indexOf(name) > -1) {
4277
- isValueIndexFound = true;
4278
- isValueCellUpdated = true;
4276
+ if (!isRowFieldsAvail) {
4277
+ if (!data[tnum]) {
4278
+ data[tnum] = [];
4279
+ this.valueContent[actCnt] = {};
4280
+ data[tnum][0] = this.valueContent[actCnt][0] = this.frameHeaderWithKeys(row);
4281
+ }
4282
+ else {
4283
+ data[tnum][0] = this.valueContent[actCnt][0] = this.frameHeaderWithKeys(row);
4284
+ }
4285
+ if (this.valueAxis && (this.isMultiMeasures || this.alwaysShowValueHeader)) {
4286
+ let hpos = tnum;
4287
+ let actpos = actCnt;
4288
+ let rowIndex = tnum;
4289
+ let isValueCellUpdated = false;
4290
+ if ((((!(level === 0 && this.measureIndex === 0) && !isLeastNode) || isLeastNode) && row.type === 'value' && !row.valueSort.axis) ||
4291
+ (level > this.measureIndex && row.axis === 'row' && row.valueSort.axis)) {
4292
+ let vln = 0;
4293
+ let isValueIndexFound = false;
4294
+ for (let cln = 0, dln = 1, clt = columns.length; cln < clt; ++cln) {
4295
+ if (!isValueIndexFound) {
4296
+ for (vln = 0; vln < vlt; vln++) {
4297
+ if (row.valueSort.uniqueName && row.valueSort.uniqueName.toString().split(this.valueSortSettings.headerDelimiter).indexOf(this.values[vln].name) > -1) {
4298
+ isValueIndexFound = true;
4299
+ isValueCellUpdated = true;
4300
+ break;
4301
+ }
4302
+ }
4303
+ }
4304
+ if (level > this.measureIndex && row.axis == 'row' && row.valueSort.axis) {
4305
+ this.updateRowData(rows, columns, tnum, data, vln, rln, cln, dln, actCnt, rTotal, cTotal);
4306
+ }
4307
+ else {
4308
+ if (!reformAxis[pIndex]) {
4309
+ isValueCellUpdated = false;
4279
4310
  break;
4280
4311
  }
4312
+ this.updateRowData(reformAxis, columns, tnum, data, vln, pIndex, cln, dln, actCnt, rTotal, cTotal);
4281
4313
  }
4314
+ dln = data[tnum].length;
4282
4315
  }
4283
- if (level > this.measureIndex && row.axis == 'row' && row.valueSort.axis) {
4284
- this.updateRowData(rows, columns, tnum, data, vln, rln, cln, dln, actCnt, rTotal, cTotal);
4285
- }
4286
- else {
4287
- if (!reformAxis[pIndex]) {
4288
- isValueCellUpdated = false;
4289
- break;
4290
- }
4291
- this.updateRowData(reformAxis, columns, tnum, data, vln, pIndex, cln, dln, actCnt, rTotal, cTotal);
4316
+ }
4317
+ if (!isValueCellUpdated) {
4318
+ for (let cln = 0, dln = 1, clt = columns.length; cln < clt; ++cln) {
4319
+ dln = data[tnum].length;
4320
+ data[hpos][dln] = this.valueContent[actpos][dln] = {
4321
+ axis: 'value', actualText: '', colSpan: 1,
4322
+ colIndex: dln, formattedText: '', hasChild: false
4323
+ };
4292
4324
  }
4293
- dln = data[tnum].length;
4294
4325
  }
4326
+ this.recursiveRowData(rows, reformAxis, columns, rowIndex, data, vlt, isLeastNode, rln, vlt, level, rTotal, cTotal);
4295
4327
  }
4296
- if (!isValueCellUpdated) {
4328
+ else {
4297
4329
  for (let cln = 0, dln = 1, clt = columns.length; cln < clt; ++cln) {
4298
- dln = data[tnum].length;
4299
- data[hpos][dln] = this.valueContent[actpos][dln] = {
4300
- axis: 'value', actualText: '', colSpan: 1,
4301
- colIndex: dln, formattedText: '', hasChild: false
4302
- };
4303
- }
4304
- }
4305
- this.recursiveRowData(rows, reformAxis, columns, rowIndex, data, vlt, isLeastNode, rln, vlt, level, rTotal, cTotal);
4306
- }
4307
- else {
4308
- for (let cln = 0, dln = 1, clt = columns.length; cln < clt; ++cln) {
4309
- for (let vln = 0; vln < vlt; vln++) {
4310
- if (!this.valueAxis && !this.isLastHeaderHasMeasures) {
4311
- let name = this.values[vln].caption ? this.values[vln].caption : this.values[vln].name;
4312
- if (columns[cln].valueSort.levelName && columns[cln].valueSort.levelName.toString().indexOf(name) > -1) {
4330
+ for (let vln = 0; vln < vlt; vln++) {
4331
+ if (!this.valueAxis && !this.isLastHeaderHasMeasures) {
4332
+ if (columns[cln].valueSort.uniqueName && columns[cln].valueSort.uniqueName.toString().split(this.valueSortSettings.headerDelimiter).indexOf(this.values[vln].name) > -1) {
4333
+ this.updateRowData(rows, columns, tnum, data, vln, rln, cln, dln, actCnt, rTotal, cTotal);
4334
+ dln = data[tnum].length;
4335
+ }
4336
+ }
4337
+ else {
4313
4338
  this.updateRowData(rows, columns, tnum, data, vln, rln, cln, dln, actCnt, rTotal, cTotal);
4314
4339
  dln = data[tnum].length;
4315
4340
  }
4316
4341
  }
4317
- else {
4318
- this.updateRowData(rows, columns, tnum, data, vln, rln, cln, dln, actCnt, rTotal, cTotal);
4319
- dln = data[tnum].length;
4320
- }
4321
4342
  }
4343
+ this.recursiveRowData(rows, reformAxis, columns, tnum, data, vlt, isLeastNode, rln, 0, level, rTotal, cTotal);
4322
4344
  }
4345
+ }
4346
+ else if (!isLeastNode) {
4323
4347
  this.recursiveRowData(rows, reformAxis, columns, tnum, data, vlt, isLeastNode, rln, 0, level, rTotal, cTotal);
4324
4348
  }
4325
4349
  }
@@ -5115,14 +5139,17 @@ class PivotEngine {
5115
5139
  return currentCellSets;
5116
5140
  }
5117
5141
  /* eslint-disable , @typescript-eslint/no-explicit-any */
5118
- updateValueMembers(hasMeasureIndex, headerInfo, levelName, columnHeaders, axis, vcnt, levelIndex) {
5142
+ updateValueMembers(hasMeasureIndex, headerInfo, levelInfo, columnHeaders, axis, vcnt, levelIndex) {
5143
+ let levelName = levelInfo && !isNullOrUndefined(levelInfo.levelName) ? levelInfo.levelName.toString() : undefined;
5144
+ let uniqueName = levelInfo && !isNullOrUndefined(levelInfo.uniqueName) ? levelInfo.uniqueName.toString() : undefined;
5119
5145
  if (hasMeasureIndex) {
5120
5146
  for (let vln = 0; vln < vcnt; vln++) {
5121
- let name = this.values[vln].caption ? this.values[vln].caption : this.values[vln].name;
5147
+ let field = this.values[vln];
5148
+ let name = field.caption ? field.caption : field.name;
5122
5149
  let calObj = {
5123
5150
  axis: this.valueAxis ? 'row' : 'column',
5124
5151
  rowIndex: !this.valueAxis ? (headerInfo && levelIndex <= headerInfo.rowIndex ? (headerInfo.rowIndex + 1) : levelIndex) : 0,
5125
- actualText: this.values[vln].name,
5152
+ actualText: field.name,
5126
5153
  formattedText: name,
5127
5154
  level: 0,
5128
5155
  valueSort: {},
@@ -5134,14 +5161,16 @@ class PivotEngine {
5134
5161
  indexObject: !this.valueAxis && headerInfo ? headerInfo.indexObject : null
5135
5162
  };
5136
5163
  if (axis.length > 0) {
5137
- calObj.showSubTotals = this.values[vln].showSubTotals;
5164
+ calObj.showSubTotals = field.showSubTotals;
5138
5165
  }
5139
5166
  let vData = calObj.valueSort;
5140
- vData.axis = !this.valueAxis ? this.values[vln].name : undefined;
5167
+ vData.axis = !this.valueAxis ? field.name : undefined;
5141
5168
  vData[(levelName ? (levelName + this.valueSortSettings.headerDelimiter) : '') + name] = 1;
5169
+ vData[(uniqueName ? (uniqueName + this.valueSortSettings.headerDelimiter) : '') + field.name] = 1;
5142
5170
  vData.levelName = (levelName ? (levelName + this.valueSortSettings.headerDelimiter) : '') + name;
5171
+ vData.uniqueName = (uniqueName ? (uniqueName + this.valueSortSettings.headerDelimiter) : '') + field.name;
5143
5172
  columnHeaders.push(calObj);
5144
- this.updateValueMembers(false, headerInfo, ((levelName ? (levelName + this.valueSortSettings.headerDelimiter) : '') + name), calObj.members, axis, vcnt, levelIndex + 1);
5173
+ this.updateValueMembers(false, headerInfo, vData, calObj.members, axis, vcnt, levelIndex + 1);
5145
5174
  }
5146
5175
  }
5147
5176
  else {
@@ -5152,7 +5181,9 @@ class PivotEngine {
5152
5181
  let hData = {};
5153
5182
  hData.axis = header.valueSort.axis;
5154
5183
  hData[(levelName ? (levelName + this.valueSortSettings.headerDelimiter) : '') + header.formattedText] = 1;
5184
+ hData[(uniqueName ? (uniqueName + this.valueSortSettings.headerDelimiter) : '') + header.actualText] = 1;
5155
5185
  hData.levelName = (levelName ? (levelName + this.valueSortSettings.headerDelimiter) : '') + header.formattedText;
5186
+ hData.uniqueName = (uniqueName ? (uniqueName + this.valueSortSettings.headerDelimiter) : '') + header.actualText;
5156
5187
  header.valueSort = hData;
5157
5188
  let drillInfo = hData.axis + this.valueSortSettings.headerDelimiter + hData.levelName;
5158
5189
  if (header.isDrilled && ((this.isExpandAll && this.fieldDrillCollection[drillInfo]) ||
@@ -5163,16 +5194,16 @@ class PivotEngine {
5163
5194
  if (header.isDrilled && axis[rln].members.length > 0) {
5164
5195
  if (this.valueAxis && levelIndex < this.measureIndex && this.measureIndex !== (levelIndex + 1) && (!(axis[rln].hasChild &&
5165
5196
  ((!isNullOrUndefined(axis[rln].showSubTotals) && !axis[rln].showSubTotals) || !this.showSubTotals || !this.showRowSubTotals)))) {
5166
- this.updateValueMembers(true, header, hData.levelName, columnHeaders[columnHeaders.length - 1].members, [], vcnt, levelIndex);
5197
+ this.updateValueMembers(true, header, hData, columnHeaders[columnHeaders.length - 1].members, [], vcnt, levelIndex);
5167
5198
  }
5168
- this.updateValueMembers(this.measureIndex === (levelIndex + 1), header, hData.levelName, columnHeaders[columnHeaders.length - 1].members, axis[rln].members, vcnt, levelIndex + 1);
5199
+ this.updateValueMembers(this.measureIndex === (levelIndex + 1), header, hData, columnHeaders[columnHeaders.length - 1].members, axis[rln].members, vcnt, levelIndex + 1);
5169
5200
  if (!this.valueAxis && levelIndex < this.measureIndex && this.measureIndex !== (levelIndex + 1) && (!(axis[rln].hasChild &&
5170
5201
  ((!isNullOrUndefined(axis[rln].showSubTotals) && !axis[rln].showSubTotals) || !this.showSubTotals || !this.showColumnSubTotals)))) {
5171
- this.updateValueMembers(true, header, hData.levelName, columnHeaders[columnHeaders.length - 1].members, [], vcnt, levelIndex);
5202
+ this.updateValueMembers(true, header, hData, columnHeaders[columnHeaders.length - 1].members, [], vcnt, levelIndex);
5172
5203
  }
5173
5204
  }
5174
5205
  else if (levelIndex < this.measureIndex) {
5175
- this.updateValueMembers(true, header, hData.levelName, columnHeaders[columnHeaders.length - 1].members, [], vcnt, levelIndex);
5206
+ this.updateValueMembers(true, header, hData, columnHeaders[columnHeaders.length - 1].members, [], vcnt, levelIndex);
5176
5207
  }
5177
5208
  }
5178
5209
  }
@@ -5215,11 +5246,12 @@ class PivotEngine {
5215
5246
  if (!this.valueAxis && !this.isLastHeaderHasMeasures) {
5216
5247
  let columnHeaders = [];
5217
5248
  if (this.showGrandTotals && this.showColumnGrandTotals && axis[axis.length - 1].type == 'grand sum') {
5218
- this.updateValueMembers(this.measureIndex === 0, null, null, columnHeaders, axis.slice(0, axis.length - 1), vcnt, 0);
5249
+ this.updateValueMembers(this.measureIndex === 0 && axis.length > 1, null, null, columnHeaders, axis.slice(0, axis.length - 1), vcnt, 0);
5219
5250
  this.updateValueMembers(false, null, null, columnHeaders, axis.slice(axis.length - 1, axis.length), vcnt, -1);
5220
5251
  }
5221
5252
  else {
5222
- this.updateValueMembers(this.measureIndex === 0, null, null, columnHeaders, axis, vcnt, 0);
5253
+ let hasColumnTotal = columns.length === 0 && axis.length === 1 && axis[0].type == 'grand sum';
5254
+ this.updateValueMembers(!hasColumnTotal && this.measureIndex === 0, null, null, columnHeaders, axis, vcnt, hasColumnTotal ? -1 : 0);
5223
5255
  }
5224
5256
  this.getAggregatedHeaders(rows, columns, this.rMembers, columnHeaders, values);
5225
5257
  if (this.selectedHeaders.values.length > 0) {
@@ -5253,11 +5285,12 @@ class PivotEngine {
5253
5285
  }
5254
5286
  else if (rowAxis.length == 0 && (this.valueAxis && (this.isMultiMeasures || this.alwaysShowValueHeader)) && this.values.length > 0) {
5255
5287
  if (this.showGrandTotals && this.showRowGrandTotals && this.rMembers[this.rMembers.length - 1].type == 'grand sum') {
5256
- this.updateValueMembers(this.measureIndex == 0, null, null, rowAxis, this.rMembers.slice(0, this.rMembers.length - 1), this.values.length, 0);
5288
+ this.updateValueMembers(this.measureIndex == 0 && this.rMembers.length > 1, null, null, rowAxis, this.rMembers.slice(0, this.rMembers.length - 1), this.values.length, 0);
5257
5289
  this.updateValueMembers(false, null, null, rowAxis, this.rMembers.slice(this.rMembers.length - 1, this.rMembers.length), this.values.length, -1);
5258
5290
  }
5259
5291
  else {
5260
- this.updateValueMembers(this.measureIndex == 0, null, null, rowAxis, this.rMembers, this.values.length, 0);
5292
+ let hasRowTotal = rows.length === 0 && this.rMembers.length === 1 && this.rMembers[0].type == 'grand sum';
5293
+ this.updateValueMembers(!hasRowTotal && this.measureIndex == 0, null, null, rowAxis, this.rMembers, this.values.length, hasRowTotal ? -1 : 0);
5261
5294
  }
5262
5295
  this.getAggregatedHeaders(rows, columns, rowAxis, axis, values);
5263
5296
  if (this.selectedHeaders.values.length > 0) {
@@ -5365,6 +5398,8 @@ class PivotEngine {
5365
5398
  let vData = data[colItmLn][(tnum * vcnt) + 1 + vln].valueSort;
5366
5399
  vData[axis[rln].valueSort.levelName + this.valueSortSettings.headerDelimiter + name] = 1;
5367
5400
  vData.levelName = axis[rln].valueSort.levelName + this.valueSortSettings.headerDelimiter + name;
5401
+ vData[axis[rln].valueSort.uniqueName + this.valueSortSettings.headerDelimiter + this.values[vln].name] = 1;
5402
+ vData.uniqueName = axis[rln].valueSort.uniqueName + this.valueSortSettings.headerDelimiter + this.values[vln].name;
5368
5403
  if (vData && vData[sortText]) {
5369
5404
  this.valueSortSettings.columnIndex = (tnum * vcnt) + 1 + vln;
5370
5405
  }
@@ -7028,27 +7063,30 @@ class Render {
7028
7063
  /* eslint-disable-next-line */
7029
7064
  /** @hidden */
7030
7065
  render() {
7031
- let parent = this.parent;
7032
- let engine = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule;
7066
+ this.resColWidth = (this.parent.showGroupingBar && this.parent.groupingBarModule) ? (this.parent.isAdaptive ? 180 : 250) :
7067
+ (this.parent.isAdaptive ? 140 : 200);
7068
+ this.engine = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule;
7069
+ this.gridSettings = this.parent.gridSettings;
7070
+ this.formatList = this.getFormatList();
7033
7071
  this.parent.gridHeaderCellInfo = [];
7034
7072
  this.parent.gridCellCollection = {};
7035
- this.injectGridModules(parent);
7073
+ this.injectGridModules(this.parent);
7036
7074
  this.rowStartPos = this.getRowStartPos();
7037
7075
  if (this.parent.grid && this.parent.grid.element && this.parent.element.querySelector('.e-grid')) {
7038
7076
  this.parent.notEmpty = true;
7039
- if (!engine.isEngineUpdated) {
7040
- engine.headerContent = this.frameDataSource('header');
7041
- engine.valueContent = this.frameDataSource('value');
7077
+ if (!this.engine.isEngineUpdated) {
7078
+ this.engine.headerContent = this.frameDataSource('header');
7079
+ this.engine.valueContent = this.frameDataSource('value');
7042
7080
  }
7043
7081
  else {
7044
7082
  if (this.parent.enableValueSorting) {
7045
- engine.valueContent = this.frameDataSource('value');
7083
+ this.engine.valueContent = this.frameDataSource('value');
7046
7084
  }
7047
- engine.isEngineUpdated = false;
7085
+ this.engine.isEngineUpdated = false;
7048
7086
  }
7049
7087
  this.parent.grid.setProperties({
7050
7088
  columns: this.frameStackedHeaders(), dataSource: (this.parent.dataType === 'olap' ? true :
7051
- parent.dataSourceSettings.values.length > 0) && !this.engine.isEmptyData ? engine.valueContent :
7089
+ this.parent.dataSourceSettings.values.length > 0) && !this.engine.isEmptyData ? this.engine.valueContent :
7052
7090
  this.frameDataSource('value')
7053
7091
  }, true);
7054
7092
  if (this.parent.grid.height === 'auto') {
@@ -7980,6 +8018,8 @@ class Render {
7980
8018
  if (tCell && (this.parent.notEmpty) && this.engine.headerContent) {
7981
8019
  let customClass = this.parent.hyperlinkSettings.cssClass;
7982
8020
  let cell = args.data[0];
8021
+ let isRowFieldsAvail = cell.valueSort && cell.valueSort.levelName === (this.parent.dataSourceSettings.rows.length === 0 && this.parent.dataSourceSettings.valueAxis === 'row' &&
8022
+ this.parent.localeObj.getConstant('grandTotal') + (this.parent.dataSourceSettings.valueSortSettings.headerDelimiter) + (cell.formattedText));
7983
8023
  tCell.setAttribute('index', cell.rowIndex ? cell.rowIndex.toString() : '0');
7984
8024
  if (tCell.getAttribute('aria-colindex') === '0') {
7985
8025
  if (this.parent.dataType === 'pivot') {
@@ -8033,11 +8073,17 @@ class Render {
8033
8073
  if (cell.type === 'grand sum') {
8034
8074
  this.rowGrandPos = cell.rowIndex;
8035
8075
  tCell.classList.add('e-gtot');
8036
- localizedText = isNullOrUndefined(cell.valueSort.axis) ? this.parent.localeObj.getConstant('grandTotal') : cell.formattedText;
8076
+ let values = this.parent.dataSourceSettings.values;
8077
+ localizedText = isNullOrUndefined(cell.valueSort.axis) ? (this.parent.dataSourceSettings.rows.length === 0 && values.length === 1 && this.parent.dataSourceSettings.valueAxis === 'row') ?
8078
+ this.parent.localeObj.getConstant('total') + ' ' + this.parent.localeObj.getConstant(values[values.length - 1].type) + ' ' +
8079
+ this.parent.localeObj.getConstant('of') + ' ' + (!isNullOrUndefined(values[values.length - 1].caption) ? values[values.length - 1].caption : values[values.length - 1].name) :
8080
+ this.parent.localeObj.getConstant('grandTotal') : cell.formattedText;
8037
8081
  }
8038
8082
  else if (cell.valueSort.levelName === (this.parent.localeObj.getConstant('grandTotal') +
8039
8083
  (this.parent.dataSourceSettings.valueSortSettings.headerDelimiter) + (cell.formattedText))) {
8040
8084
  tCell.classList.add('e-gtot');
8085
+ localizedText = isRowFieldsAvail ? this.parent.localeObj.getConstant('total') + ' ' + this.parent.localeObj.getConstant(this.parent.engineModule.fieldList[cell.actualText].aggregateType) + ' '
8086
+ + this.parent.localeObj.getConstant('of') + ' ' + cell.formattedText : localizedText;
8041
8087
  }
8042
8088
  else {
8043
8089
  tCell.classList.add('e-stot');
@@ -8059,8 +8105,9 @@ class Render {
8059
8105
  }));
8060
8106
  let vSort = this.parent.pivotView.dataSourceSettings.valueSortSettings;
8061
8107
  if (this.parent.enableValueSorting) {
8062
- if (vSort && vSort.headerText && this.parent.dataSourceSettings.valueAxis === 'row'
8063
- && this.parent.pivotValues[Number(tCell.getAttribute('index'))][0].valueSort.levelName) {
8108
+ if (vSort && vSort.headerText && this.parent.dataSourceSettings.valueAxis === 'row' &&
8109
+ this.parent.pivotValues[Number(tCell.getAttribute('index'))][0] &&
8110
+ this.parent.pivotValues[Number(tCell.getAttribute('index'))][0].valueSort.levelName) {
8064
8111
  if (this.parent.pivotValues[Number(tCell.getAttribute('index'))][0].valueSort.levelName
8065
8112
  === vSort.headerText) {
8066
8113
  let style = (tCell.querySelector('.e-expand') || tCell.querySelector('.e-collapse')) ?
@@ -8081,6 +8128,7 @@ class Render {
8081
8128
  tCell.classList.add(VALUESCONTENT);
8082
8129
  cell = args.data[Number(tCell.getAttribute('aria-colindex'))];
8083
8130
  cell = isNullOrUndefined(cell) ? args.column.customAttributes.cell : cell;
8131
+ cell.isGrandSum = isRowFieldsAvail ? true : cell.isGrandSum;
8084
8132
  if (cell.isSum) {
8085
8133
  tCell.classList.add(SUMMARY);
8086
8134
  }
@@ -8288,16 +8336,20 @@ class Render {
8288
8336
  else {
8289
8337
  tCell = this.onOlapColumnCellBoundEvent(tCell, cell);
8290
8338
  }
8291
- if (cell.type) {
8339
+ let isColumnFieldsAvail = (this.parent.dataSourceSettings.columns.length === 0 && this.parent.dataSourceSettings.valueAxis === 'column' && cell.valueSort &&
8340
+ cell.valueSort.levelName === (this.parent.localeObj.getConstant('grandTotal') + (this.parent.dataSourceSettings.valueSortSettings.headerDelimiter) + (cell.formattedText)));
8341
+ if (cell.type || isColumnFieldsAvail) {
8292
8342
  tCell.classList.add(cell.type === 'grand sum' ? 'e-gtot' : 'e-stot');
8293
8343
  if (cell.type === 'grand sum') {
8294
8344
  this.colGrandPos = cell.colIndex;
8295
8345
  }
8296
- else {
8346
+ else if (cell.type) {
8297
8347
  tCell.classList.add('e-colstot');
8298
8348
  }
8299
8349
  let localizedText = cell.type === 'grand sum' ? (isNullOrUndefined(cell.valueSort.axis) ? this.parent.localeObj.getConstant('grandTotal') : cell.formattedText) :
8300
8350
  cell.formattedText.split('Total')[0] + this.parent.localeObj.getConstant('total');
8351
+ localizedText = isColumnFieldsAvail ? this.parent.localeObj.getConstant('total') + ' ' + this.parent.localeObj.getConstant(this.parent.engineModule.fieldList[cell.actualText].aggregateType)
8352
+ + ' ' + this.parent.localeObj.getConstant('of') + ' ' + cell.formattedText : localizedText;
8301
8353
  if (tCell.querySelector('.e-headertext') !== null) {
8302
8354
  tCell.querySelector('.e-headertext').innerText = localizedText;
8303
8355
  }
@@ -8735,8 +8787,41 @@ class Render {
8735
8787
  }
8736
8788
  return formatArray;
8737
8789
  }
8790
+ getValidHeader(args, axis) {
8791
+ let values = this.parent.dataSourceSettings.values;
8792
+ if (axis === 'row') {
8793
+ let cellInfo = args;
8794
+ if (this.parent.dataSourceSettings.rows.length === 0 || this.parent.dataSourceSettings.columns.length === 0) {
8795
+ if (this.parent.dataSourceSettings.rows.length === 0 && this.parent.dataSourceSettings.valueAxis === 'row' && (this.parent.localeObj.getConstant('grandTotal') +
8796
+ this.parent.dataSourceSettings.valueSortSettings.headerDelimiter + cellInfo.value) === cellInfo.data[0].valueSort.levelName) {
8797
+ return this.parent.localeObj.getConstant('total') + ' ' + this.parent.localeObj.getConstant(this.parent.engineModule.fieldList[cellInfo.value.toString()].aggregateType)
8798
+ + ' ' + this.parent.localeObj.getConstant('of') + ' ' + cellInfo.value.toString();
8799
+ }
8800
+ else if (values.length === 1 && this.parent.dataSourceSettings.rows.length === 0) {
8801
+ return this.parent.localeObj.getConstant('total') + ' ' + this.parent.localeObj.getConstant(values[values.length - 1].type)
8802
+ + ' ' + this.parent.localeObj.getConstant('of') + ' ' + (!isNullOrUndefined(values[values.length - 1].caption) ? values[values.length - 1].caption : values[values.length - 1].name);
8803
+ }
8804
+ }
8805
+ return cellInfo.value;
8806
+ }
8807
+ else if (axis === 'column') {
8808
+ let cellInfo = args;
8809
+ if (this.parent.dataSourceSettings.rows.length === 0 || this.parent.dataSourceSettings.columns.length === 0) {
8810
+ if (!isNullOrUndefined(args.gridCell.column.customAttributes) && this.parent.dataSourceSettings.columns.length === 0 && this.parent.dataSourceSettings.valueAxis === 'column' &&
8811
+ (this.parent.localeObj.getConstant('grandTotal') + this.parent.dataSourceSettings.valueSortSettings.headerDelimiter + cellInfo.gridCell.column.customAttributes.cell.formattedText)
8812
+ === cellInfo.gridCell.column.customAttributes.cell.valueSort.levelName) {
8813
+ return this.parent.localeObj.getConstant('total') + ' ' + this.parent.localeObj.getConstant(this.parent.engineModule.fieldList[cellInfo
8814
+ .gridCell.column.customAttributes.cell.actualText].aggregateType) + ' ' + this.parent.localeObj.getConstant('of') + ' ' + cellInfo.gridCell.column.customAttributes.cell.formattedText;
8815
+ }
8816
+ }
8817
+ return (cellInfo.cell).value;
8818
+ }
8819
+ }
8738
8820
  /* eslint-disable */
8739
8821
  excelColumnEvent(args) {
8822
+ if (this.parent.dataSourceSettings.columns.length === 0 && this.parent.dataSourceSettings.valueAxis === 'column') {
8823
+ (args.cell).value = this.getValidHeader(args, 'column');
8824
+ }
8740
8825
  if (args.gridCell !== undefined && args.gridCell.column.width === 'auto') {
8741
8826
  this.parent.lastColumn = args.gridCell.column;
8742
8827
  args.gridCell.column.width = args.gridCell.column.minWidth;
@@ -8745,6 +8830,9 @@ class Render {
8745
8830
  this.parent.trigger(excelHeaderQueryCellInfo, args);
8746
8831
  }
8747
8832
  pdfColumnEvent(args) {
8833
+ if (this.parent.dataSourceSettings.columns.length === 0 && this.parent.dataSourceSettings.valueAxis === 'column') {
8834
+ (args.cell).value = this.getValidHeader(args, 'column');
8835
+ }
8748
8836
  if (args.gridCell !== undefined && args.gridCell.column.width === 'auto') {
8749
8837
  this.parent.lastColumn = args.gridCell.column;
8750
8838
  args.gridCell.column.width = args.gridCell.column.minWidth;
@@ -8785,6 +8873,9 @@ class Render {
8785
8873
  }
8786
8874
  }
8787
8875
  args = this.exportContentEvent(args);
8876
+ if (this.parent.dataSourceSettings.rows.length === 0 && this.parent.dataSourceSettings.valueAxis === 'row') {
8877
+ args.value = args.column.field === '0.formattedText' ? this.getValidHeader(args, 'row') : args.value;
8878
+ }
8788
8879
  this.parent.trigger(excelQueryCellInfo, args);
8789
8880
  }
8790
8881
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -8808,6 +8899,9 @@ class Render {
8808
8899
  }
8809
8900
  args.style = { paragraphIndent: level * 10 };
8810
8901
  this.lastSpan = isValueCell ? this.lastSpan : level;
8902
+ if (this.parent.dataSourceSettings.rows.length === 0 && this.parent.dataSourceSettings.valueAxis === 'row') {
8903
+ args.value = this.getValidHeader(args, 'row');
8904
+ }
8811
8905
  }
8812
8906
  this.parent.trigger(pdfQueryCellInfo, args);
8813
8907
  }
@@ -13724,11 +13818,13 @@ class DrillThrough {
13724
13818
  let valuetText = aggType === 'CalculatedField' ? valueCaption.toString() : aggType !== '' ?
13725
13819
  (this.parent.localeObj.getConstant(aggType) + ' ' + this.parent.localeObj.getConstant('of') + ' ' + valueCaption) :
13726
13820
  valueCaption;
13821
+ let rowHeaders = this.parent.dataSourceSettings.valueAxis === 'row' ? this.parent.getRowText(Number(element.getAttribute('index')), 0) :
13822
+ pivotValue.rowHeaders === '' ? '' : pivotValue.rowHeaders.toString().split(this.parent.dataSourceSettings.valueSortSettings.headerDelimiter).join(' - ');
13727
13823
  let eventArgs = {
13728
13824
  currentTarget: element,
13729
13825
  currentCell: pivotValue,
13730
13826
  rawData: rawData,
13731
- rowHeaders: pivotValue.rowHeaders === '' ? '' : pivotValue.rowHeaders.toString().split(this.parent.dataSourceSettings.valueSortSettings.headerDelimiter).join(' - '),
13827
+ rowHeaders: rowHeaders,
13732
13828
  columnHeaders: pivotValue.columnHeaders === '' ? '' : pivotValue.columnHeaders.toString().split(this.parent.dataSourceSettings.valueSortSettings.headerDelimiter).join(' - '),
13733
13829
  value: valuetText + '(' + pivotValue.formattedText + ')',
13734
13830
  gridColumns: this.drillThroughDialog.frameGridColumns(rawData),
@@ -22802,7 +22898,7 @@ let PivotView = class PivotView extends Component {
22802
22898
  true : this.hyperlinkSettings.showHyperlink ? true : false);
22803
22899
  this.applyHyperlinkSettings();
22804
22900
  }
22805
- this.renderModule = new Render(this);
22901
+ this.renderModule = this.renderModule ? this.renderModule : new Render(this);
22806
22902
  this.renderModule.render();
22807
22903
  }
22808
22904
  else if (this.grid) {
@@ -23656,13 +23752,21 @@ let PivotView = class PivotView extends Component {
23656
23752
  let cell = this.pivotValues[rowIndex][colIndex];
23657
23753
  let level = this.getLevel(cell);
23658
23754
  let rowText = cell.type === 'grand sum' ? this.localeObj.getConstant('grandTotal') : cell.formattedText;
23659
- while (level > 0 || cell.index === undefined) {
23660
- rowIndex--;
23661
- cell = this.pivotValues[rowIndex][colIndex];
23662
- if (cell.index !== undefined) {
23663
- if (level > cell.level) {
23664
- rowText = rowText + ' - ' + cell.formattedText;
23665
- level = level - 1;
23755
+ if (this.dataSourceSettings.valueAxis === 'row') {
23756
+ rowText = (this.dataSourceSettings.rows.length === 0 && this.dataSourceSettings.values.length > 1) ? this.pivotValues[rowIndex][0].valueSort.levelName.toString().slice((this.localeObj.getConstant('grandTotal')
23757
+ + this.dataSourceSettings.valueSortSettings.headerDelimiter).length).toString() : this.dataSourceSettings.values.length === 1 ? !isNullOrUndefined(this.dataSourceSettings.values[0].caption) ?
23758
+ this.dataSourceSettings.values[0].caption : this.dataSourceSettings.values[0].name : this.pivotValues[rowIndex][0].valueSort.levelName.toString();
23759
+ return rowText.split(this.dataSourceSettings.valueSortSettings.headerDelimiter).join(' - ');
23760
+ }
23761
+ else {
23762
+ while (level > 0 || cell.index === undefined) {
23763
+ rowIndex--;
23764
+ cell = this.pivotValues[rowIndex][colIndex];
23765
+ if (cell.index !== undefined) {
23766
+ if (level > cell.level) {
23767
+ rowText = rowText + ' - ' + cell.formattedText;
23768
+ level = level - 1;
23769
+ }
23666
23770
  }
23667
23771
  }
23668
23772
  }
@@ -24377,7 +24481,7 @@ let PivotView = class PivotView extends Component {
24377
24481
  this.isEmptyGrid = true;
24378
24482
  this.notEmpty = false;
24379
24483
  this.isInitial = true;
24380
- this.renderModule = new Render(this);
24484
+ this.renderModule = this.renderModule ? this.renderModule : new Render(this);
24381
24485
  if (this.grid && this.grid.element && this.element.querySelector('.e-grid')) {
24382
24486
  this.notEmpty = true;
24383
24487
  this.grid.setProperties({
@@ -25047,6 +25151,22 @@ let PivotView = class PivotView extends Component {
25047
25151
  this.numberFormattingModule.showNumberFormattingDialog();
25048
25152
  }
25049
25153
  }
25154
+ /** @hidden */
25155
+ getValuesHeader(pivotCell, type) {
25156
+ let values = this.dataSourceSettings.values;
25157
+ if (type === 'value' && !isNullOrUndefined(pivotCell.valueSort) && (this.localeObj.getConstant('grandTotal') + this.dataSourceSettings.valueSortSettings.headerDelimiter + pivotCell.formattedText)
25158
+ === pivotCell.valueSort.levelName && ((pivotCell.axis === 'column' && this.dataSourceSettings.columns.length === 0 && this.dataSourceSettings.valueAxis === 'column') || (pivotCell.axis === 'row' &&
25159
+ this.dataSourceSettings.rows.length === 0 && this.dataSourceSettings.valueAxis === 'row'))) {
25160
+ return this.localeObj.getConstant('total') + ' ' + this.localeObj.getConstant(this.engineModule.fieldList[pivotCell.actualText].aggregateType) + ' ' +
25161
+ this.localeObj.getConstant('of') + ' ' + pivotCell.formattedText;
25162
+ }
25163
+ else if (type === 'grandTotal' && values.length === 1 && this.dataSourceSettings.valueAxis === 'row' && pivotCell.formattedText === this.localeObj.getConstant('grandTotal')) {
25164
+ return this.localeObj.getConstant('total') + ' ' + this.localeObj.getConstant(values[values.length - 1].type) + ' ' +
25165
+ this.localeObj.getConstant('of') + ' ' + (!isNullOrUndefined(values[values.length - 1].caption) ? values[values.length - 1].caption
25166
+ : values[values.length - 1].name);
25167
+ }
25168
+ return pivotCell.formattedText;
25169
+ }
25050
25170
  };
25051
25171
  __decorate([
25052
25172
  Property('USD')
@@ -25494,13 +25614,14 @@ class ExcelExport$1 {
25494
25614
  if (!(pivotCell.level === -1 && !pivotCell.rowSpan)) {
25495
25615
  let cellValue = pivotCell.axis === 'value' ? pivotCell.value : pivotCell.formattedText;
25496
25616
  if (pivotCell.type === 'grand sum') {
25497
- cellValue = this.parent.localeObj.getConstant('grandTotal');
25617
+ cellValue = (this.parent.dataSourceSettings.rows.length === 0 || this.parent.dataSourceSettings.columns.length === 0) ? this.parent.getValuesHeader(pivotCell, 'grandTotal') :
25618
+ this.parent.localeObj.getConstant('grandTotal');
25498
25619
  }
25499
25620
  else if (pivotCell.type === 'sum') {
25500
25621
  cellValue = cellValue.toString().replace('Total', this.parent.localeObj.getConstant('total'));
25501
25622
  }
25502
25623
  else {
25503
- cellValue = cellValue;
25624
+ cellValue = (this.parent.dataSourceSettings.rows.length === 0 || this.parent.dataSourceSettings.columns.length === 0) ? this.parent.getValuesHeader(pivotCell, 'value') : cellValue;
25504
25625
  }
25505
25626
  if (!(pivotCell.level === -1 && !pivotCell.rowSpan)) {
25506
25627
  cells.push({
@@ -25817,9 +25938,10 @@ class PDFExport {
25817
25938
  let pivotCell = pivotValues[rCnt][cCnt];
25818
25939
  if (!(pivotCell.level === -1 && !pivotCell.rowSpan)) {
25819
25940
  let cellValue = pivotCell.formattedText;
25820
- cellValue = pivotCell.type === 'grand sum' ? this.parent.localeObj.getConstant('grandTotal') :
25821
- (pivotCell.type === 'sum' ?
25822
- cellValue.toString().replace('Total', this.parent.localeObj.getConstant('total')) : cellValue);
25941
+ cellValue = (this.parent.dataSourceSettings.rows.length === 0 || this.parent.dataSourceSettings.columns.length === 0) ? this.parent.getValuesHeader(pivotCell, 'value') : cellValue;
25942
+ cellValue = pivotCell.type === 'grand sum' ? (this.parent.dataSourceSettings.rows.length === 0 || this.parent.dataSourceSettings.columns.length === 0) ? this.parent.getValuesHeader(pivotCell, 'grandTotal') :
25943
+ this.parent.localeObj.getConstant('grandTotal') : (pivotCell.type === 'sum' ?
25944
+ cellValue.toString().replace('Total', this.parent.localeObj.getConstant('total')) : cellValue);
25823
25945
  if (!(pivotCell.level === -1 && !pivotCell.rowSpan)) {
25824
25946
  pdfGridRow.cells.getCell(localCnt).columnSpan = pivotCell.colSpan ?
25825
25947
  (pageSize - localCnt < pivotCell.colSpan ? pageSize - localCnt : pivotCell.colSpan) : 1;