diff --git a/src/frontend/app/administration/contact/list/import/contact-import.component.html b/src/frontend/app/administration/contact/list/import/contact-import.component.html index b69387eba120e577647df4add69f5afbb573fc20..9bc2ce7f6dc9e517d4e3971028d25bf587cb57ed 100644 --- a/src/frontend/app/administration/contact/list/import/contact-import.component.html +++ b/src/frontend/app/administration/contact/list/import/contact-import.component.html @@ -30,14 +30,6 @@ (onFileDropped)="dndUploadFile($event)" class="dndFile"> <div> {{'lang.dndFileCsvDesc' | translate}} - <mat-form-field appearance="outline" style="font-size:14px;" (click)="$event.stopPropagation()"> - <mat-label>{{'lang.delimiter' | translate}}</mat-label> - <mat-select [(ngModel)]="currentDelimiter" (click)="$event.stopPropagation()"> - <mat-option *ngFor="let delimiter of delimiters" [value]="delimiter"> - {{delimiter === '\t' ? 'TAB' : delimiter}} - </mat-option> - </mat-select> - </mat-form-field> </div> </div> <div class="row" style="margin: 0px;"> diff --git a/src/frontend/app/administration/contact/list/import/contact-import.component.ts b/src/frontend/app/administration/contact/list/import/contact-import.component.ts index 923a317e20cae22556c80b9eaf005f1f96674317..074fcaeae58e777b97db881ba41e141194264cec 100644 --- a/src/frontend/app/administration/contact/list/import/contact-import.component.ts +++ b/src/frontend/app/administration/contact/list/import/contact-import.component.ts @@ -105,12 +105,7 @@ export class ContactImportComponent implements OnInit { }, ]; - csvColumns: string[] = [ - - ]; - - delimiters = [';', ',', '\t']; - currentDelimiter = ';'; + csvColumns: string[] = []; associatedColmuns: any = {}; dataSource = new MatTableDataSource(null); @@ -138,7 +133,6 @@ export class ContactImportComponent implements OnInit { } ngOnInit(): void { - this.setConfiguration(); this.initCustomFields(); } @@ -229,7 +223,6 @@ export class ContactImportComponent implements OnInit { this.initData(); this.countAdd = this.csvData.filter((data: any, index: number) => index > 0 && this.functionsService.empty(data[this.associatedColmuns['id']])).length; this.countUp = this.csvData.filter((data: any, index: number) => index > 0 && !this.functionsService.empty(data[this.associatedColmuns['id']])).length; - this.localStorage.save(`importContactFields_${this.headerService.user.id}`, this.currentDelimiter); this.loading = false; } @@ -350,10 +343,4 @@ export class ContactImportComponent implements OnInit { }) ).subscribe(); } - - setConfiguration() { - if (this.localStorage.get(`importContactFields_${this.headerService.user.id}`) !== null) { - this.currentDelimiter = this.localStorage.get(`importContactFields_${this.headerService.user.id}`); - } - } } diff --git a/src/frontend/app/administration/user/import/users-import.component.html b/src/frontend/app/administration/user/import/users-import.component.html index ada2aa009919a0e8e3e9931c23d41943c17c09aa..63d8c327326495e7292e9e46c890482098ae4a3b 100644 --- a/src/frontend/app/administration/user/import/users-import.component.html +++ b/src/frontend/app/administration/user/import/users-import.component.html @@ -27,14 +27,6 @@ (onFileDropped)="dndUploadFile($event)" class="dndFile"> <div> {{'lang.dndFileCsvDesc' | translate}} - <mat-form-field appearance="outline" style="font-size:14px;" (click)="$event.stopPropagation()"> - <mat-label>{{'lang.delimiter' | translate}}</mat-label> - <mat-select [(ngModel)]="currentDelimiter" (click)="$event.stopPropagation()"> - <mat-option *ngFor="let delimiter of delimiters" [value]="delimiter"> - {{delimiter === '\t' ? 'TAB' : delimiter}} - </mat-option> - </mat-select> - </mat-form-field> </div> </div> <div class="row" style="margin: 0px;"> diff --git a/src/frontend/app/administration/user/import/users-import.component.ts b/src/frontend/app/administration/user/import/users-import.component.ts index e616cd8b0fb02712f2c8dae181db143099cc5a04..61cfeb49cb30b524af11422e1dbac9bfe3b3741a 100644 --- a/src/frontend/app/administration/user/import/users-import.component.ts +++ b/src/frontend/app/administration/user/import/users-import.component.ts @@ -12,6 +12,7 @@ import { AlertComponent } from '../../../../plugins/modal/alert.component'; import { LocalStorageService } from '@service/local-storage.service'; import { HeaderService } from '@service/header.service'; import { MatPaginator } from '@angular/material/paginator'; +import { Papa } from 'ngx-papaparse'; @Component({ templateUrl: 'users-import.component.html', @@ -29,12 +30,7 @@ export class UsersImportComponent implements OnInit { 'phone', ]; - csvColumns: string[] = [ - - ]; - - delimiters = [';', ',', '\t']; - currentDelimiter = ';'; + csvColumns: string[] = []; associatedColmuns: any = {}; dataSource = new MatTableDataSource(null); @@ -56,12 +52,12 @@ export class UsersImportComponent implements OnInit { private headerService: HeaderService, public dialog: MatDialog, public dialogRef: MatDialogRef<UsersImportComponent>, + private papa: Papa, @Inject(MAT_DIALOG_DATA) public data: any, ) { } ngOnInit(): void { - this.setConfiguration(); } changeColumn(coldb: string, colCsv: string) { @@ -97,33 +93,33 @@ export class UsersImportComponent implements OnInit { reader.readAsText(fileInput.target.files[0], 'ISO-8859-1'); reader.onload = (value: any) => { - rawCsv = value.target.result.split('\n'); - rawCsv = rawCsv.filter(data => data !== ''); - - if (rawCsv[0].split(this.currentDelimiter).map(s => s.replace(/"/gi, '').trim()).length >= this.userColmuns.length - 1) { - let dataCol = []; - let objData = {}; - this.setCsvColumns(rawCsv[0].split(this.currentDelimiter).map(s => s.replace(/"/gi, '').trim())); - - this.countAll = this.hasHeader ? rawCsv.length - 1 : rawCsv.length; - - for (let index = 0; index < rawCsv.length; index++) { - objData = {}; - dataCol = rawCsv[index].split(this.currentDelimiter).map(s => s.replace(/"/gi, '').trim()); - - dataCol.forEach((element: any, index2: number) => { - objData[this.csvColumns[index2]] = element; - }); - this.csvData.push(objData); + this.papa.parse(value.target.result, { + complete: (result) => { + rawCsv = result.data; + rawCsv = rawCsv.filter(data => data.length === rawCsv[0].length); + + let dataCol = []; + let objData = {}; + this.setCsvColumns(rawCsv[0]); + + this.countAll = this.hasHeader ? rawCsv.length - 1 : rawCsv.length; + + for (let index = 0; index < rawCsv.length; index++) { + objData = {}; + dataCol = rawCsv[index]; + + dataCol.forEach((element: any, index2: number) => { + objData[this.csvColumns[index2]] = element; + }); + this.csvData.push(objData); + } + this.initData(); + this.countAdd = this.csvData.filter((data: any, index: number) => index > 0 && this.functionsService.empty(data[this.associatedColmuns['id']])).length; + this.countUp = this.csvData.filter((data: any, index: number) => index > 0 && !this.functionsService.empty(data[this.associatedColmuns['id']])).length; + + this.loading = false; } - this.initData(); - this.countAdd = this.csvData.filter((data: any, index: number) => index > 0 && this.functionsService.empty(data[this.associatedColmuns['id']])).length; - this.countUp = this.csvData.filter((data: any, index: number) => index > 0 && !this.functionsService.empty(data[this.associatedColmuns['id']])).length; - this.localStorage.save(`importUsersFields_${this.headerService.user.id}`, this.currentDelimiter); - } else { - this.notify.error(this.translate.instant('lang.mustAtLeastMinValues')); - } - this.loading = false; + }); }; } else { this.dialog.open(AlertComponent, { panelClass: 'maarch-modal', autoFocus: false, disableClose: true, data: { title: this.translate.instant('lang.notAllowedExtension') + ' !', msg: this.translate.instant('lang.file') + ' : <b>' + fileInput.target.files[0].name + '</b>, ' + this.translate.instant('lang.type') + ' : <b>' + fileInput.target.files[0].type + '</b><br/><br/><u>' + this.translate.instant('lang.allowedExtensions') + '</u> : <br/>' + 'text/csv' } }); @@ -245,10 +241,4 @@ export class UsersImportComponent implements OnInit { }) ).subscribe(); } - - setConfiguration() { - if (this.localStorage.get(`importUsersFields_${this.headerService.user.id}`) !== null) { - this.currentDelimiter = this.localStorage.get(`importUsersFields_${this.headerService.user.id}`); - } - } } diff --git a/src/lang/lang-en.json b/src/lang/lang-en.json index a71e4c3d1308e2c37eb9eed701e922a518b27036..78f70d867a9c0bd4572a14b89f6049c9db0825f9 100644 --- a/src/lang/lang-en.json +++ b/src/lang/lang-en.json @@ -1896,7 +1896,6 @@ "importedUsers": "imported users", "import": "Import", "confirmImportUsers": "Do you want to import <b>{{0}}</b> users", - "mustAtLeastMinValues": "The data must have at least <b>6</b> values", "enableField": "Enable field", "disableField": "Disable field", "emailSubject": "E-mail's subject", diff --git a/src/lang/lang-fr.json b/src/lang/lang-fr.json index f9c8b878bf3ee0d0a53bed733779bf77614345dd..e9cfd14fbd7b8df2b5740cd5089bbf334ddf430e 100644 --- a/src/lang/lang-fr.json +++ b/src/lang/lang-fr.json @@ -1896,7 +1896,6 @@ "importedUsers": "utilisateurs importés", "import": "Importer", "confirmImportUsers": "Voulez-vous importer <b>{{0}}</b> utilisateurs", - "mustAtLeastMinValues": "Les données doivent avoir au mimimum <b>5</b> valeurs", "enableField": "Activer le champ", "disableField": "Désactiver le champ", "emailSubject": "Objet du courriel", diff --git a/src/lang/lang-nl.json b/src/lang/lang-nl.json index 3b2044bf23046a39f334c1f539ad08967a5bdf23..b21ba5c9982aeb5f7299666db2f7ca44905b2782 100644 --- a/src/lang/lang-nl.json +++ b/src/lang/lang-nl.json @@ -1897,7 +1897,6 @@ "importedUsers": "utilisateurs importés__TO_TRANSLATE", "import": "Importer__TO_TRANSLATE", "confirmImportUsers": "Voulez-vous importer <b>{{0}}</b> utilisateurs__TO_TRANSLATE", - "mustAtLeastMinValues": "Les données doivent avoir au mimimum <b>6</b> valeurs__TO_TRANSLATE", "emailSubject": "E-mail's subject__TO_TRANSLATE", "enableField": "Activer le champ__TO_TRANSLATE", "disableField": "Désactiver le champ__TO_TRANSLATE",