@esfaenza/extensions 15.2.44 → 15.2.45

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.
@@ -1521,7 +1521,7 @@ class UtilityService {
1521
1521
  *
1522
1522
  * @return {any} Clone dell'oggetto passato
1523
1523
  */
1524
- deepClone(source) {
1524
+ deepClone(source, type = null) {
1525
1525
  // Valori semplici
1526
1526
  if (source == null || typeof source !== 'object')
1527
1527
  return source;
@@ -1538,7 +1538,7 @@ class UtilityService {
1538
1538
  default: break;
1539
1539
  }
1540
1540
  // Oggetti Complessi
1541
- return this.recursiveStep(source, Array.isArray(source) || source instanceof Array ? [] : Object.create(Object.getPrototypeOf(source)));
1541
+ return this.recursiveStep(source, Array.isArray(source) || source instanceof Array ? [] : (type == null ? Object.create(Object.getPrototypeOf(source)) : new type()));
1542
1542
  }
1543
1543
  /**
1544
1544
  * @ignore
@@ -1664,10 +1664,13 @@ const Export = (order, header, format = null, tableid = null) => (target, proper
1664
1664
  * @param {any} type Tipo da esportare
1665
1665
  */
1666
1666
  const ExportAs = (order, type, prefix) => (target, propertyKey) => {
1667
+ var addedHere = {};
1667
1668
  var t = new type();
1668
1669
  var props = t[exportList];
1669
1670
  for (let i = 0; i < props.length; i++) {
1670
1671
  let prop = props[i].replace(csvVisPrefix, '');
1672
+ if (addedHere[prop])
1673
+ continue;
1671
1674
  if (typeof t[prop + csvVisPrefix] !== "undefined") {
1672
1675
  var toEmit = t[prop + csvVisPrefix];
1673
1676
  var lbl = t[prop + csvHdrPrefix];
@@ -1675,16 +1678,18 @@ const ExportAs = (order, type, prefix) => (target, propertyKey) => {
1675
1678
  var orderProp = t[prop + csvOrdPrefix];
1676
1679
  if (format)
1677
1680
  Object.defineProperty(target, propertyKey + prop + csvFormatPrefix, { value: format, writable: false });
1678
- Object.defineProperty(target, propertyKey + prop + csvOrdPrefix, { value: orderProp + order, writable: false });
1679
- Object.defineProperty(target, propertyKey + prop, { value: null, writable: true, enumerable: true });
1680
- Object.defineProperty(target, propertyKey + prop + csvValueNavigator, { value: propertyKey + "." + prop, writable: false });
1681
- Object.defineProperty(target, propertyKey + prop + csvVisPrefix, { value: toEmit, writable: false });
1682
- Object.defineProperty(target, propertyKey + prop + csvHdrPrefix, { value: (prefix ? prefix + ' ' : '') + lbl, writable: false });
1683
- Object.defineProperty(target, propertyKey + prop + csvValueType, { value: type, writable: false });
1681
+ let ppp = propertyKey + "$_$" + prop;
1682
+ Object.defineProperty(target, ppp + csvOrdPrefix, { value: orderProp + order, writable: false });
1683
+ Object.defineProperty(target, ppp, { value: null, writable: true, enumerable: true });
1684
+ Object.defineProperty(target, ppp + csvValueNavigator, { value: propertyKey + "." + prop.replace(/\$_\$/g, '.'), writable: false });
1685
+ Object.defineProperty(target, ppp + csvVisPrefix, { value: toEmit, writable: false });
1686
+ Object.defineProperty(target, ppp + csvHdrPrefix, { value: (prefix ? prefix + ' ' : '') + lbl, writable: false });
1687
+ Object.defineProperty(target, ppp + csvValueType, { value: type, writable: false });
1684
1688
  if (target[exportList])
1685
- target[exportList].push(propertyKey + prop + csvVisPrefix);
1689
+ target[exportList].push(ppp + csvVisPrefix);
1686
1690
  else
1687
- target[exportList] = [propertyKey + prop + csvVisPrefix];
1691
+ target[exportList] = [ppp + csvVisPrefix];
1692
+ addedHere[ppp] = true;
1688
1693
  }
1689
1694
  }
1690
1695
  };
@@ -2166,14 +2171,11 @@ class ExportService {
2166
2171
  * @param {any[]} items Oggetti da esportare
2167
2172
  */
2168
2173
  export(items, format, fileName, type, columnsFilter, genericHeaders) {
2169
- var createdItems = items.map(t => {
2170
- let tmp = new type();
2171
- for (let property in t)
2172
- tmp[property] = t[property];
2173
- return tmp;
2174
- });
2174
+ // Deepclone con assegnatura del tipo
2175
+ var createdItems = items.map(t => this.utiExts.deepClone(t, type));
2175
2176
  let headers = genericHeaders ? this.setupForGenericExport(createdItems, genericHeaders) : this.setupForExport(createdItems, columnsFilter);
2176
2177
  (format == "CSV" ? this.exportCSV : this.exportExcel).bind(this)(fileName, headers, createdItems);
2178
+ return headers;
2177
2179
  }
2178
2180
  }
2179
2181
  ExportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ExportService, deps: [{ token: DateService }, { token: UtilityService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });