@syncfusion/ej2-gantt 21.2.8 → 21.2.9

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.
@@ -2039,29 +2039,53 @@ class TaskProcessor extends DateProcessor {
2039
2039
  startDate = this.checkStartDate(startDate, data.ganttProperties, false);
2040
2040
  if (!isNullOrUndefined(duration)) {
2041
2041
  endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);
2042
+ if (taskSettings.duration) {
2043
+ remainingDuration = data.ganttProperties.duration - sumOfDuration;
2044
+ if (remainingDuration <= 0) {
2045
+ continue;
2046
+ }
2047
+ duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&
2048
+ duration > remainingDuration ? remainingDuration : duration;
2049
+ endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);
2050
+ }
2051
+ else if (!taskSettings.duration && taskSettings.endDate) {
2052
+ endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() >
2053
+ data.ganttProperties.endDate.getTime() && i !== segments.length - 1 ? endDate : data.ganttProperties.endDate;
2054
+ duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2055
+ if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()
2056
+ && endDate.getTime() <= data.ganttProperties.endDate.getTime()) {
2057
+ ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2058
+ continue;
2059
+ }
2060
+ }
2042
2061
  }
2043
2062
  else {
2044
2063
  endDate = this.getDateFromFormat(endDate);
2064
+ if (endDate && (isNullOrUndefined(duration) || String(duration) === '')) {
2065
+ if (endDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {
2066
+ this.setTime(this.parent.defaultEndTime, endDate);
2067
+ }
2068
+ }
2045
2069
  endDate = this.checkEndDate(endDate, data.ganttProperties, false);
2046
2070
  duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2047
- }
2048
- if (taskSettings.duration) {
2049
- remainingDuration = data.ganttProperties.duration - sumOfDuration;
2050
- if (remainingDuration <= 0) {
2051
- continue;
2071
+ if (taskSettings.duration) {
2072
+ remainingDuration = data.ganttProperties.duration - sumOfDuration - 1;
2073
+ if (remainingDuration <= 0) {
2074
+ continue;
2075
+ }
2076
+ duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&
2077
+ duration > remainingDuration ? remainingDuration : duration;
2078
+ endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);
2052
2079
  }
2053
- duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&
2054
- duration > remainingDuration ? remainingDuration : duration;
2055
- endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);
2056
- }
2057
- else if (!taskSettings.duration && taskSettings.endDate) {
2058
- endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() >
2059
- data.ganttProperties.endDate.getTime() && i !== segments.length - 1 ? endDate : data.ganttProperties.endDate;
2060
- duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2061
- if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()
2062
- && endDate.getTime() <= data.ganttProperties.endDate.getTime()) {
2063
- ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2064
- continue;
2080
+ else if (!taskSettings.duration && taskSettings.endDate) {
2081
+ endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() >
2082
+ data.ganttProperties.endDate.getTime() && i !== segments.length - 1 ? endDate : data.ganttProperties.endDate;
2083
+ duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2084
+ if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()
2085
+ && endDate.getTime() <= data.ganttProperties.endDate.getTime()) {
2086
+ ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2087
+ continue;
2088
+ }
2065
2089
  }
2066
2090
  }
2067
2091
  segment = {};
@@ -3886,6 +3910,9 @@ class TaskProcessor extends DateProcessor {
3886
3910
  }
3887
3911
  }
3888
3912
  this.parent.setRecordValue('isMilestone', milestone, parentProp, true);
3913
+ if (!isNullOrUndefined(this.parent.taskFields.milestone)) {
3914
+ this.updateMappingData(parentData, 'milestone');
3915
+ }
3889
3916
  if (parentProp.isAutoSchedule) {
3890
3917
  this.calculateDuration(parentData);
3891
3918
  }
@@ -5305,7 +5332,13 @@ class GanttChart {
5305
5332
  * @private
5306
5333
  */
5307
5334
  getRecordByTaskBar(target) {
5308
- const item = this.parent.currentViewData[this.getIndexByTaskBar(target)];
5335
+ let item;
5336
+ if (this.parent.enableVirtualization && this.parent.enableMultiTaskbar) {
5337
+ item = this.parent.flatData[this.getIndexByTaskBar(target)];
5338
+ }
5339
+ else {
5340
+ item = this.parent.currentViewData[this.getIndexByTaskBar(target)];
5341
+ }
5309
5342
  return item;
5310
5343
  }
5311
5344
  /**
@@ -5663,7 +5696,12 @@ class GanttChart {
5663
5696
  else {
5664
5697
  const id = row.getAttribute('rowUniqueId');
5665
5698
  const record = this.parent.getRecordByID(id);
5666
- recordIndex = this.parent.currentViewData.indexOf(record);
5699
+ if (this.parent.enableVirtualization && this.parent.enableMultiTaskbar) {
5700
+ recordIndex = this.parent.flatData.indexOf(record);
5701
+ }
5702
+ else {
5703
+ recordIndex = this.parent.currentViewData.indexOf(record);
5704
+ }
5667
5705
  }
5668
5706
  return recordIndex;
5669
5707
  }
@@ -7067,9 +7105,11 @@ class Timeline {
7067
7105
  const validStartLeft = this.parent.dataOperation.getTaskLeft(validStartDate, false);
7068
7106
  const validEndLeft = this.parent.dataOperation.getTaskLeft(validEndDate, false);
7069
7107
  let isChanged;
7108
+ let taskbarModule = this.parent.editModule.taskbarEditModule;
7070
7109
  if (!isNullOrUndefined(maxStartLeft) && ((minStartDate < this.timelineStartDate) ||
7071
- (!isNullOrUndefined(this.parent.editModule.taskbarEditModule)) &&
7072
- (!isNullOrUndefined(this.parent.editModule.taskbarEditModule.taskBarEditAction))) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
7110
+ (!isNullOrUndefined(taskbarModule)) && (!isNullOrUndefined(taskbarModule.taskBarEditAction)
7111
+ && taskbarModule.taskBarEditAction !== 'ProgressResizing' &&
7112
+ taskbarModule.taskBarEditAction !== 'RightResizing')) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {
7073
7113
  isChanged = 'prevTimeSpan';
7074
7114
  minStartDate = minStartDate > this.timelineStartDate ? this.timelineStartDate : minStartDate;
7075
7115
  }
@@ -7663,7 +7703,7 @@ class GanttTreeGrid {
7663
7703
  this.parent.columnByField = {};
7664
7704
  this.parent.customColumns = [];
7665
7705
  const tasksMapping = ['id', 'name', 'startDate', 'endDate', 'duration', 'dependency',
7666
- 'progress', 'baselineStartDate', 'baselineEndDate', 'resourceInfo', 'notes', 'work', 'manual', 'type'];
7706
+ 'progress', 'baselineStartDate', 'baselineEndDate', 'resourceInfo', 'notes', 'work', 'manual', 'type', 'milestone'];
7667
7707
  for (let i = 0; i < length; i++) {
7668
7708
  let column = {};
7669
7709
  if (typeof ganttObj.columns[i] === 'string') {
@@ -8005,7 +8045,7 @@ class GanttTreeGrid {
8005
8045
  }
8006
8046
  } // eslint-disable-next-line
8007
8047
  durationValueAccessor(field, data, column) {
8008
- const ganttProp = data.ganttProperties;
8048
+ const ganttProp = (!isNullOrUndefined(data)) ? data.ganttProperties : null;
8009
8049
  if (!isNullOrUndefined(ganttProp)) {
8010
8050
  return this.parent.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);
8011
8051
  }
@@ -8784,7 +8824,7 @@ class ChartRows extends DateProcessor {
8784
8824
  (isNullOrUndefined(data.ganttProperties.segments) || (!isNullOrUndefined(data.ganttProperties.segments) &&
8785
8825
  data.ganttProperties.segments.length === 0))) {
8786
8826
  if (template !== '' && !isNullOrUndefined(progressDiv) && progressDiv.length > 0) {
8787
- let templateElement = this.createDivElement(template)[0];
8827
+ const templateElement = this.createDivElement(template)[0];
8788
8828
  if (this.parent.disableHtmlEncode) {
8789
8829
  templateElement.innerText = labelString;
8790
8830
  }
@@ -8799,7 +8839,7 @@ class ChartRows extends DateProcessor {
8799
8839
  !this.isTemplate(childLabel) &&
8800
8840
  progressDiv[0].querySelectorAll('.e-task-label')[0].children[0])
8801
8841
  progressDiv[0].querySelectorAll('.e-task-label')[0].children[0].remove();
8802
- if (progressDiv[0].querySelectorAll('.e-task-label')[0].textContent == '' &&
8842
+ if (progressDiv[0].querySelectorAll('.e-task-label')[0].textContent === '' &&
8803
8843
  childLabel && !childLabel['elementRef'] && tempDiv.innerHTML !== '')
8804
8844
  progressDiv[0].querySelectorAll('.e-task-label')[0].textContent = childLabel;
8805
8845
  }
@@ -9470,7 +9510,7 @@ class ChartRows extends DateProcessor {
9470
9510
  !this.isTemplate(parentLabel) &&
9471
9511
  progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].children[0])
9472
9512
  progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].children[0].remove();
9473
- if (progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent == '' &&
9513
+ if (progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent === '' &&
9474
9514
  parentLabel && !parentLabel['elementRef'] && div.innerHTML !== '')
9475
9515
  progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent = parentLabel;
9476
9516
  }
@@ -9500,11 +9540,19 @@ class ChartRows extends DateProcessor {
9500
9540
  * @returns {NodeList} .
9501
9541
  * @private
9502
9542
  */
9503
- getTableTrNode() {
9543
+ getTableTrNode(i) {
9504
9544
  const table = createElement('table');
9505
9545
  const className = (this.parent.gridLines === 'Horizontal' || this.parent.gridLines === 'Both') ?
9506
9546
  'e-chart-row-border' : '';
9507
- table.innerHTML = '<tr class="' + this.getRowClassName(this.templateData) + ' ' + chartRow + '"' +
9547
+ const rows = this.parent.treeGrid.grid.contentModule.getRows()[i];
9548
+ let activecls;
9549
+ if (rows && rows.isSelected) {
9550
+ activecls = 'e-active';
9551
+ }
9552
+ else {
9553
+ activecls = '';
9554
+ }
9555
+ table.innerHTML = '<tr class="' + this.getRowClassName(this.templateData) + ' ' + chartRow + ' ' + (activecls) + '"' +
9508
9556
  'style="display:' + this.getExpandDisplayProp(this.templateData) + ';height:' +
9509
9557
  this.parent.rowHeight + 'px;">' +
9510
9558
  '<td class="' + chartRowCell + ' ' + className
@@ -9614,7 +9662,7 @@ class ChartRows extends DateProcessor {
9614
9662
  return this.createDivElement(template);
9615
9663
  }
9616
9664
  childTaskbarProgressResizer() {
9617
- let width = this.parent.enableRtl ? (this.templateData.ganttProperties.progressWidth + 8) : (this.templateData.ganttProperties.progressWidth - 6);
9665
+ const width = this.parent.enableRtl ? (this.templateData.ganttProperties.progressWidth + 8) : (this.templateData.ganttProperties.progressWidth - 6);
9618
9666
  const template = '<div class="' + childProgressResizer + '"' +
9619
9667
  'style="' + (this.parent.enableRtl ? 'right:' : 'left:') + width + 'px;margin-top:' +
9620
9668
  (this.taskBarHeight - 4) + 'px;"><div class="' + progressBarHandler + '"' +
@@ -9941,7 +9989,7 @@ class ChartRows extends DateProcessor {
9941
9989
  this.parent.renderTemplates();
9942
9990
  this.triggerQueryTaskbarInfo();
9943
9991
  this.parent.modifiedRecords = [];
9944
- if (this.parent.viewType == 'ResourceView' && this.parent.showOverAllocation) {
9992
+ if (this.parent.viewType === 'ResourceView' && this.parent.showOverAllocation) {
9945
9993
  this.updateOverlapped();
9946
9994
  }
9947
9995
  if (collapsedResourceRecord.length) {
@@ -9965,7 +10013,7 @@ class ChartRows extends DateProcessor {
9965
10013
  getGanttChartRow(i, tempTemplateData) {
9966
10014
  this.templateData = tempTemplateData;
9967
10015
  let taskBaselineTemplateNode = null;
9968
- const parentTrNode = this.getTableTrNode();
10016
+ const parentTrNode = this.getTableTrNode(i);
9969
10017
  const leftLabelNode = this.getLeftLabelNode(i);
9970
10018
  const taskbarContainerNode = this.taskbarContainer();
9971
10019
  taskbarContainerNode[0].setAttribute('aria-label', this.generateAriaLabel(this.templateData));
@@ -10405,8 +10453,8 @@ class ChartRows extends DateProcessor {
10405
10453
  }
10406
10454
  // To update the row height when allow overallocation set to false
10407
10455
  updateDragDropRecords(data, tr) {
10408
- let childRecords = data.childRecords;
10409
- let rowIndex = this.parent.currentViewData.indexOf(data);
10456
+ const childRecords = data.childRecords;
10457
+ const rowIndex = this.parent.currentViewData.indexOf(data);
10410
10458
  let treeGridContentHeight = this.parent.enableRtl ? this.parent['element'].getElementsByClassName('e-content')[2].children[0]['offsetHeight'] :
10411
10459
  this.parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];
10412
10460
  if (!tr) {
@@ -10516,6 +10564,19 @@ class ChartRows extends DateProcessor {
10516
10564
  }
10517
10565
  }
10518
10566
  }
10567
+ updateResourceTaskbarElement(tRow, parentTr) {
10568
+ const cloneElement = tRow.querySelector('.e-taskbar-main-container');
10569
+ addClass([cloneElement], 'collpse-parent-border');
10570
+ const id = tRow.querySelector('.' + taskBarMainContainer).getAttribute('rowUniqueId');
10571
+ const ganttData = this.parent.getRecordByID(id);
10572
+ let zIndex = "";
10573
+ if (ganttData && !isNullOrUndefined(ganttData.ganttProperties.eOverlapIndex)) {
10574
+ zIndex = (ganttData.ganttProperties.eOverlapIndex).toString();
10575
+ }
10576
+ const cloneChildElement = cloneElement.cloneNode(true);
10577
+ cloneChildElement.style.zIndex = zIndex;
10578
+ parentTr[0].childNodes[0].childNodes[0].childNodes[0].appendChild(cloneChildElement);
10579
+ }
10519
10580
  getResourceParent(record) {
10520
10581
  const chartRows = this.parent.ganttChartModule.getChartRows();
10521
10582
  //Below code is for rendering taskbartemplate in resource view with multi taskbar
@@ -10539,20 +10600,19 @@ class ChartRows extends DateProcessor {
10539
10600
  parentTrNode[0].childNodes[0].childNodes[0].appendChild(collapseParent);
10540
10601
  const tasks = this.parent.dataOperation.setSortedChildTasks(record);
10541
10602
  this.parent.dataOperation.updateOverlappingIndex(tasks);
10542
- for (let i = 0; i < chartRows.length; i++) {
10543
- if (chartRows[i].classList.contains('gridrowtaskId'
10544
- + record.ganttProperties.rowUniqueID + 'level' + (record.level + 1))) {
10545
- const cloneElement = chartRows[i].querySelector('.e-taskbar-main-container');
10546
- addClass([cloneElement], 'collpse-parent-border');
10547
- const id = chartRows[i].querySelector('.' + taskBarMainContainer).getAttribute('rowUniqueId');
10548
- const ganttData = this.parent.getRecordByID(id);
10549
- let zIndex = "";
10550
- if (ganttData && !isNullOrUndefined(ganttData.ganttProperties.eOverlapIndex)) {
10551
- zIndex = (ganttData.ganttProperties.eOverlapIndex).toString();
10603
+ let tRow;
10604
+ if (this.parent.enableVirtualization) {
10605
+ for (let i = 0; i < record.childRecords.length; i++) {
10606
+ tRow = this.getGanttChartRow(record.childRecords[i].index, this.parent.flatData[record.childRecords[i].index]);
10607
+ this.updateResourceTaskbarElement(tRow, parentTrNode);
10608
+ }
10609
+ }
10610
+ else {
10611
+ for (let i = 0; i < chartRows.length; i++) {
10612
+ if (chartRows[i].classList.contains('gridrowtaskId'
10613
+ + record.ganttProperties.rowUniqueID + 'level' + (record.level + 1))) {
10614
+ this.updateResourceTaskbarElement(chartRows[i], parentTrNode);
10552
10615
  }
10553
- const cloneChildElement = cloneElement.cloneNode(true);
10554
- cloneChildElement.style.zIndex = zIndex;
10555
- parentTrNode[0].childNodes[0].childNodes[0].childNodes[0].appendChild(cloneChildElement);
10556
10616
  }
10557
10617
  }
10558
10618
  parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(leftLabelNode)[0]);
@@ -11059,6 +11119,15 @@ class Dependency {
11059
11119
  for (let count = 0; count < totLength; count++) {
11060
11120
  if (flatData[count].ganttProperties.predecessorsName) {
11061
11121
  this.validatePredecessorDates(flatData[count]);
11122
+ let predecessorCollection = flatData[count].ganttProperties.predecessor;
11123
+ if (predecessorCollection && predecessorCollection.length > 1) {
11124
+ for (let i = 0; i < predecessorCollection.length; i++) {
11125
+ const validateRecord = this.parent.getRecordByID(predecessorCollection[i].to);
11126
+ if (validateRecord) {
11127
+ this.validatePredecessorDates(validateRecord);
11128
+ }
11129
+ }
11130
+ }
11062
11131
  if (flatData[count].hasChildRecords && this.parent.editModule && !this.parent.allowUnscheduledTasks
11063
11132
  && this.parent.allowParentDependency) {
11064
11133
  this.parent.editModule['updateChildItems'](flatData[count]);
@@ -23471,6 +23540,7 @@ class Edit$2 {
23471
23540
  this.isFromDeleteMethod = false;
23472
23541
  this.targetedRecords = [];
23473
23542
  this.isNewRecordAdded = false;
23543
+ this.isValidatedEditedRecord = false;
23474
23544
  /** @hidden */
23475
23545
  this.updateParentRecords = [];
23476
23546
  /** @hidden */
@@ -24123,8 +24193,9 @@ class Edit$2 {
24123
24193
  (isNullOrUndefined(taskData.startDate) && !isNullOrUndefined(prevStart)) ||
24124
24194
  (isNullOrUndefined(taskData.endDate) && !isNullOrUndefined(prevEnd)) ||
24125
24195
  (prevStart && prevStart.getTime() !== taskData.startDate.getTime())
24126
- && (prevEnd && prevEnd.getTime() !== taskData.endDate.getTime())
24127
- || (!isNullOrUndefined(prevDuration) && prevDuration !== taskData.duration &&
24196
+ || (prevEnd && prevEnd.getTime() !== taskData.endDate.getTime())
24197
+ || (!isNullOrUndefined(prevDuration) && prevDuration !== taskData.duration)
24198
+ || (!isNullOrUndefined(prevDuration) && prevDuration === taskData.duration &&
24128
24199
  prevDurationUnit !== taskData.durationUnit)) {
24129
24200
  isMoved = true;
24130
24201
  }
@@ -24237,6 +24308,11 @@ class Edit$2 {
24237
24308
  this.parent.connectorLineEditModule.openValidationDialog(validateObject);
24238
24309
  }
24239
24310
  else {
24311
+ if (this.parent.editModule && this.parent.editModule.dialogModule &&
24312
+ this.parent.editModule.dialogModule['isEdit'] && this.predecessorUpdated) {
24313
+ this.isValidatedEditedRecord = true;
24314
+ this.parent.predecessorModule.validatePredecessor(args.data, [], '');
24315
+ }
24240
24316
  this.parent.connectorLineEditModule.applyPredecessorOption();
24241
24317
  }
24242
24318
  }
@@ -24300,7 +24376,10 @@ class Edit$2 {
24300
24376
  if (this.taskbarMoved) {
24301
24377
  this.parent.editedTaskBarItem = ganttRecord;
24302
24378
  }
24303
- this.parent.predecessorModule.validatePredecessor(ganttRecord, [], '');
24379
+ if (!this.isValidatedEditedRecord) {
24380
+ this.parent.predecessorModule.validatePredecessor(ganttRecord, [], '');
24381
+ }
24382
+ this.isValidatedEditedRecord = false;
24304
24383
  this.parent.predecessorModule.isValidatedParentTaskID = '';
24305
24384
  }
24306
24385
  if (this.parent.allowParentDependency && ganttRecord.hasChildRecords && this.parent.previousRecords[ganttRecord.uniqueID].ganttProperties.startDate &&
@@ -34327,7 +34406,10 @@ class ExportHelper {
34327
34406
  const footerBrush = new PdfSolidBrush(this.ganttStyle.footer.backgroundColor);
34328
34407
  footer.graphics.drawRectangle(pen, footerBrush, 0, 0, pdfDoc.pageSettings.width, 35);
34329
34408
  /* eslint-disable-next-line */
34330
- const font = new PdfStandardFont(this.ganttStyle.fontFamily, this.ganttStyle.footer.fontSize, this.ganttStyle.footer.fontStyle);
34409
+ let font = new PdfStandardFont(this.ganttStyle.fontFamily, this.ganttStyle.footer.fontSize, this.ganttStyle.footer.fontStyle);
34410
+ if (this.ganttStyle.font) {
34411
+ font = this.ganttStyle.font;
34412
+ }
34331
34413
  const brush = new PdfSolidBrush(this.ganttStyle.footer.fontColor);
34332
34414
  const pageNumber = new PdfPageNumberField(font);
34333
34415
  const count = new PdfPageCountField(font, brush);