@esfaenza/extensions 15.2.17 → 15.2.18

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.
@@ -317,6 +317,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
317
317
  * utilizzato dal servizio di esportazione per prendere il valore delle proprietà di un oggetto
318
318
  */
319
319
  const csvValueNavigator = "_csvnav";
320
+ /** Suffisso con le informazioni del tipo per le esportazioni di oggetti */
321
+ const csvValueType = "_csvtype";
320
322
  /** Suffisso della proprietà da generare in cui salvare l'ordine di esportazione */
321
323
  const csvOrdPrefix = "_csvord";
322
324
  /** Suffisso della proprietà da generare in cui salvare la visibilità di questa proprietà */
@@ -700,6 +702,7 @@ const ExportAs = (order, type, prefix) => (target, propertyKey) => {
700
702
  Object.defineProperty(target, propertyKey + prop + csvValueNavigator, { value: propertyKey + "." + prop, writable: false });
701
703
  Object.defineProperty(target, propertyKey + prop + csvVisPrefix, { value: toEmit, writable: false });
702
704
  Object.defineProperty(target, propertyKey + prop + csvHdrPrefix, { value: (prefix ? prefix + ' ' : '') + lbl, writable: false });
705
+ Object.defineProperty(target, propertyKey + prop + csvValueType, { value: propertyKey + "." + prop, writable: false });
703
706
  if (target[exportList])
704
707
  target[exportList].push(propertyKey + prop + csvVisPrefix);
705
708
  else
@@ -971,10 +974,14 @@ class ExportService {
971
974
  parseObject(obj, prop, headers, loc) {
972
975
  //se questa proprietà ha un navigator significa che deriva da un oggetto interno, recupero il valore in questa fase dato che prima non ce l'ho
973
976
  let valuenavigator = obj[prop + csvValueNavigator];
974
- // Localizzazione presa dalla classe base se c'è, altrimenti dalla classe interna
975
- loc = loc || this.lc.generateFromType(obj[locProperty]);
976
977
  //Es. di valuenavigator obj.subobj.subsubobj.property
977
978
  let jmps = valuenavigator.split(".");
979
+ // Localizzazione presa dalla classe base se c'è, altrimenti dalla classe interna (cioè dal primo saltino)
980
+ if (!loc) {
981
+ let type = obj[prop + csvValueType];
982
+ let proto = new type();
983
+ loc = proto[locProperty];
984
+ }
978
985
  //Mi clono l'oggetto originale per non uccidergli i riferimenti
979
986
  let clone = JSON.parse(JSON.stringify(obj));
980
987
  //Salto ricorsivamente su me stesso per arrivare alla proprietà