sgc-share-lib
Version:
Share the basics Models for create custom SGC UI Components. This library implements the basic data structure used to describe SGC graphics components.
1 lines • 125 kB
Source Map (JSON)
{"version":3,"file":"sgc-share-lib.mjs","sources":["../../../projects/sgc-share-lib/src/lib/service/notification.service.ts","../../../projects/sgc-share-lib/src/lib/service/filtre-recherche-service.ts","../../../projects/sgc-share-lib/src/lib/biblio/sgc-biblio.ts","../../../projects/sgc-share-lib/src/lib/model/sgc-basic-model.ts","../../../projects/sgc-share-lib/src/public-api.ts","../../../projects/sgc-share-lib/src/sgc-share-lib.ts"],"sourcesContent":["import { Component, Inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n constructor(\n private readonly snackBar: MatSnackBar,\n public dialog: MatDialog\n ) { }\n\n /**\n * Presents a toast displaying the message with a green background\n * @param message Message to display\n * @example\n * this.notificationService.success(\"confirm oked\");\n */\n success(message: string) {\n this.openSnackBar(message, '', 'success-snackbar');\n }\n\n /**\n * Presents a toast displaying the message with a red background\n * @param message Message to display\n * @example\n * this.notificationService.error(\"confirm canceled\");\n */\n error(message: string) {\n this.openSnackBar(message, '', 'error-snackbar');\n }\n\n /**\n * Shows a confirmation modal, presenting the user with\n * an OK and Cancel button. \n * @param message Body of the modal\n * @param okCallback Optional function to call when the user clicks Ok\n * @param title Optional modal title\n * @param cancelCallback Option function to call when the user clicks Cancel\n * @example\n * //displays a success or error message depending on what button is clicked.\n * this.notificationService.confirmation(\n * 'it will be gone forever', //message body\n * () => { //okCallback\n this.notificationService.success(\"confirm oked\");\n },\n 'Are you sure?', //title\n () => { //cancelCallback\n this.notificationService.error(\"confirm canceled\");\n });\n */\n confirmation(\n message: string,\n title = 'Are you sure?',\n okCallback: () => void, \n cancelCallback: () => any = () => { }\n ) {\n const dialogRef = this.dialog.open(ConfirmationDialog, {\n width: '250px',\n data: { message: message, title: title }\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result && okCallback) {\n okCallback();\n }\n if (!result && cancelCallback) {\n cancelCallback();\n }\n });\n }\n\n /**\n * Shows a modal, presenting the user with an OK button.\n * @param message Body of the modal\n * @param okCallback Optional function to call when the user clicks Ok\n * @param title Optional modal title\n * @example\n * //displays a success when the Ok button is clicked.\n * this.notificationService.alert(\"an alert\", \"notice\", () => {\n this.notificationService.success(\"alert oked\");\n });\n */\n alert(message: string, title = 'Notice', okCallback: () => void = () => { }) {\n const dialogRef = this.dialog.open(AlertDialog, {\n width: '250px',\n data: { message: message, title: title },\n disableClose: true\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result && okCallback) {\n okCallback();\n }\n });\n }\n\n\n /**\n * Displays a toast with provided message\n * @param message Message to display\n * @param action Action text, e.g. Close, Done, etc\n * @param className Optional extra css class to apply\n * @param duration Optional number of SECONDS to display the notification for\n */\n openSnackBar(\n message: string,\n action: string,\n className = '',\n duration = 2000\n ) {\n this.snackBar.open(message, action, {\n horizontalPosition:'center',\n verticalPosition:'top',\n duration: duration,\n panelClass: [className]\n });\n }\n}\n\nexport interface DialogData {\n message: string;\n title: string;\n}\n\n@Component({\n template: `\n <h1 mat-dialog-title>{{ data.title }}</h1>\n <div mat-dialog-content>\n {{data.message}}\n </div>\n <div mat-dialog-actions>\n <button mat-raised-button color=\"warn\" (click)=\"onNoClick()\">\n Cancel\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"onYesClick()\" cdkFocusInitial>\n Ok\n </button>\n </div>\n `,\n standalone: false\n})\nexport class ConfirmationDialog {\n constructor(\n public dialogRef: MatDialogRef<ConfirmationDialog>,\n @Inject(MAT_DIALOG_DATA) public data: DialogData\n ) { }\n\n onNoClick(): void {\n this.dialogRef.close(false);\n }\n\n onYesClick(): void {\n this.dialogRef.close(true);\n }\n}\n\n@Component({\n template: `\n <h1 mat-dialog-title>{{ data.title }}</h1>\n <div mat-dialog-content>\n {{data.message}}\n </div>\n <div mat-dialog-actions>\n <button mat-raised-button color=\"primary\" (click)=\"onYesClick()\" cdkFocusInitial>\n Ok\n </button>\n </div>\n `,\n standalone: false\n})\nexport class AlertDialog {\n constructor(\n public dialogRef: MatDialogRef<AlertDialog>,\n @Inject(MAT_DIALOG_DATA) public data: DialogData\n ) { }\n\n onYesClick(): void {\n this.dialogRef.close(true);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n//import { CustomMenuItem } from '../models/menu-item.model';\n\n@Injectable({\n providedIn: 'root',\n})\n/**\n * menu data service\n */\nexport class FiltreRechercheService {\n\n //public crudFiltreRecherche_Utilisateur: CrudFiltreRecherche = new CrudFiltreRecherche();\n \n constructor() {\n } \n}","export class SgcBiblio {\n}\n\nexport function padTo2Digits(num: number) {\n return String(num).padStart(2, '0');\n}\n\n/**\n * Get client side timezone.\n *\n * @returns {(+|-)HH:mm} - Where `HH` is 2 digits hours and `mm` 2 digits minutes.\n * @example\n * // From Indian/Reunion with UTC+4\n * // '+04:00'\n * getTimeZone()\n */\nexport const getTimeZone = () => {\n const timezoneOffset = new Date().getTimezoneOffset();\n const offset = Math.abs(timezoneOffset);\n const offsetOperator = timezoneOffset < 0 ? '+' : '-';\n const offsetHours = padTo2Digits(Math.floor(offset / 60));\n const offsetMinutes = padTo2Digits(Math.floor(offset % 60));\n\n return `${offsetOperator}${offsetHours}:${offsetMinutes}`;\n};\n","import { K, N } from '@angular/cdk/keycodes';\nimport { HttpClient, HttpContext, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { escape } from 'lodash';\n/*import {\n TColumnDataTableDef,\n TypeFieldDataView,\n generateCritereTxtFromFiltres,\n} from 'projects/sgc-ng-crud-view-list/src/public-api';*/\nimport { BehaviorSubject, Observable, Subject, map, of } from 'rxjs';\n\n//********************************************************** */\n//---------- DATA MODELS FOR BASICS SGC UI ------------------\n/**\n *\n */\nexport enum TypeCrudView {\n LIST = 0,\n CREATE = 1,\n EDIT = 2,\n IMPORT = 3,\n REPORT = 4,\n STATS = 5\n}\n\n/**\n *\n */\nexport interface TOptionListeSelectValues {\n value: any;\n label: string;\n data?: any;\n items?: Array<TOptionListeSelectValues>;\n}\n\n//----------------------------------\nexport enum TypeFieldFormEdit {\n TEXTE = 'TEXT',\n TEXTE_MULTILIGNE = 'TEXT_MULTILINE',\n TEXTE_SECRET = 'TEXT_SECRET',\n NOMBRE = 'NUMERIC',\n DATE = 'DATE',\n DATE_HEURE = 'DATE_HEURE',\n HEURE = 'HEURE',\n BOOLEEN = 'BOOLEAN',\n SELECT_VALUE = 'SELECT_VALUE',\n LISTE_OBJECT = 'LIST_OBJECT',\n FILE = 'FILE'\n}\n\n//----------------------------------\nexport enum TExportFormat {\n PDF = 'pdf',\n EXCEL = 'xlsx',\n CSV = 'csv'\n}\n\nexport function getListeTypeExportFormat(): Array<TOptionListeSelectValues> {\n return Object.keys(TExportFormat).map(myKey => ({ label: myKey, value: TExportFormat[myKey as keyof typeof TExportFormat] } as TOptionListeSelectValues));\n}\n\n//----------------------------------\nexport enum TExportPageOrientation {\n PORTRAIT = '0',\n LANDSCAPE = '1'\n}\n\nexport function getListeTypeExportOrientation(): Array<TOptionListeSelectValues> {\n return Object.keys(TExportPageOrientation).map(myKey => ({ label: myKey, value: TExportPageOrientation[myKey as keyof typeof TExportPageOrientation] } as TOptionListeSelectValues));\n}\n\n//----------------------------------\nexport enum TExportHeaderDataValueFrom {\n FIELD_NAME = 'name',\n FIELD_LABEL = 'label'\n}\n\nexport function getListeTypeExportHeaderDataValueFrom(): Array<TOptionListeSelectValues> {\n return Object.keys(TExportHeaderDataValueFrom).map(myKey => ({ label: myKey, value: TExportHeaderDataValueFrom[myKey as keyof typeof TExportHeaderDataValueFrom] } as TOptionListeSelectValues));\n}\n\n//-------------------\nexport interface TOptionExportData {\n exportFormat: TExportFormat;\n exportPageOrientation: TExportPageOrientation;\n exportHeaderDataValueFrom: TExportHeaderDataValueFrom;\n exportListeColsData: Array<string>;\n exportShowRowNumber: boolean\n}\n\n//----------------------------------\nexport enum TImportFormat {\n EXCEL = 'xlsx',\n EXCEL_OLD = 'xls',\n CSV = 'csv'\n}\n\n//-------------------\nexport interface TOptionImportData {\n importFormat?: TImportFormat;\n selectedSheetXlsName?: string;\n editSelectedSheetXlsName?: string;\n listeSheetXlsNames: Array<string>;\n xlsRowHeaderIndex?: number;\n startRowImportIndex: number;\n maxRowsImport: number;\n}\n\nexport interface TOptionFileUploadDownload {\n saveInDB: boolean;\n autoRenameFile: boolean;\n fileSvrName?: string;\n baseSvrPath?: string;\n dbSrcTableName?: string;\n dbSrcColumnName?: string;\n typeFileName?: string;\n //fileToReplace?: TOptionFileUploadDownload;\n fileToReplace?: string;\n}\n\n\nexport function getListeTypeImportFormat(): Array<TOptionListeSelectValues> {\n return Object.keys(TImportFormat).map(myKey => ({ label: myKey, value: TImportFormat[myKey as keyof typeof TImportFormat] } as TOptionListeSelectValues));\n}\n\nexport enum TypeFileImportExportNames {\n WORD = 'application/msword',\n WORD_OLD = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n EXCEL = 'application/vnd.ms-excel',\n EXCEL_OLD = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n CSV = 'text/csv',\n PDF = 'application/pdf',\n IMAGE_PNG = 'image/png',\n IMAGE_JPEG = 'image/jpeg',\n}\n\nexport function getListeTypeImportExportNames(): Array<TOptionListeSelectValues> {\n return Object.keys(TypeFileImportExportNames).map(myKey => ({ label: myKey, value: TypeFileImportExportNames[myKey as keyof typeof TypeFileImportExportNames] } as TOptionListeSelectValues));\n}\n\n\n//************************************************* */\n\n//---------------\n\nexport interface TRowGrilleFieldsFormEdit {\n indexRow: number;\n listeFieldsRow: TListeFieldFormEditData;\n}\n\nexport interface TGrilleFieldsFormEdit {\n idGrilleFields: string;\n modeleRowFields: TRowGrilleFieldsFormEdit;\n listeRows: Array<TRowGrilleFieldsFormEdit>;\n showHeader: boolean;\n showColumnHeader: boolean;\n showFooter: boolean;\n showAddButton: boolean;\n showRemoveColumnOption: boolean;\n lastIndexRowFields: number;\n isHide?: () => boolean;\n}\n\nexport enum TypeHidePasswordSymbol {\n ASTERISK = '*',\n DOT = '.',\n}\n\n/** Structure des données pour un composant UI basique */\nexport interface TFieldFormEditData {\n name?: string;\n value?: any;\n showLabel?: boolean;\n label?: string;\n required: string | boolean;\n requiredMsg?: string;\n disabled?: boolean;\n classCssStyle?: string;\n //hasSelectValues?: boolean;\n typeFieldForm: TypeFieldFormEdit;\n useInCreateView?: boolean;\n useInEditView?: boolean;\n useInImportView?: boolean;\n isDisabled?: () => boolean;\n isHide?: () => boolean;\n onChange?: (event?: any) => void;\n isDataValidate?: () => boolean;\n //---- For TEXT_FIELDEDITDATA ----------\n minLength?: number;\n maxLength?: number;\n showPrefixIcon?: boolean;\n prefixIcon?: string;\n showSuffixIcon?: boolean;\n suffixIcon?: string;\n showPrefixText?: boolean;\n prefixText?: string;\n showSuffixText?: boolean;\n suffixText?: string;\n //---- For TEXTAREA_FIELDEDITDATA (EXTEND TEXT_FIELDEDITDATA)\n cols?: number;\n rows?: number;\n //---- For NUMBER_FIELDEDITDATA (EXTEND TEXT_FIELDEDITDATA)\n showSpinner?: boolean;\n //---- For PASSWORD_FIELDEDITDATA (EXTEND TEXT_FIELDEDITDATA)\n hidePassword?: boolean;\n hidePasswordSymbol?: TypeHidePasswordSymbol;\n //---- For DATETIME_FIELDEDITDATA\n dateFormat?: string;\n dateSepFormat?: string;\n showTime?: boolean;\n //---- For SELECTVALUE_FIELDEDITDATA\n selectMultivalue?: boolean;\n listeSelectValues?: Array<TOptionListeSelectValues>;\n useApiToLoadSelectValues?: boolean;\n apiSelectFieldLabel?: string;\n apiSelectFieldValue?: string;\n apiSelect_SVC_getItems?: CrudDataService_ListView<any>;\n //----- For FILEUPLOAD_DOWNLOAD_FIELDEDITDATA\n initFileUploadDownloadOptionsFromValue?: boolean;\n fileDownloadIcon?: string;\n enableFileUploadDelete?: boolean;\n onDeleteFileUpload?: (event?: any) => void;\n //apiUrlFileDownload?: string;\n fileUploadDowloadOption?: TOptionFileUploadDownload;\n defaultBasePath?: string;\n fileToUpload?: Blob;\n //autoRenameFile?: boolean;\n //saveInDB?: boolean;\n //selectedTypeUploadedFile?: any;\n //listeTypeUploadedFileValues?: Array<TOptionListeSelectValues>;\n //useApiToLoadTypeUploadedFiles?: boolean;\n //apiTypeUploadedFileFieldLabel?: string;\n //apiTypeUploadedFileValue?: string;\n //apiTypeUploadedFile_SVC_getItems?: CrudDataService_ListView<any>;\n //apiMapSelectedValuesToOptionListe?: (res: any) => Array<TOptionListeSelectValues>; \n //apiSelectValueURL?: string;\n //apiSelectValueSearhOperator?: string;\n //apiSelectValueURL_httpHeaders?: HttpHeaders;\n //apiSelectValueURL_httpParams?: HttpParams;\n\n //-----------------------\n\n //------ FOR SELECT FILES ------\n //selectMultiFiles?: boolean;\n\n //---- Use to align fields on the form\n rowNumberInForm?: number;\n indexInRow?: number;\n widthInResponsiveGridWiew?: number;\n grilleFields?: TGrilleFieldsFormEdit;\n}\n\nexport type TListeFieldFormEditData = Array<TFieldFormEditData>;\n\nexport const TFieldFormEditDefault: TFieldFormEditData = {\n showLabel: false,\n label: '',\n required: false,\n requiredMsg: 'Required value',\n disabled: false,\n //hasSelectValues: false,\n selectMultivalue: false,\n rowNumberInForm: 1,\n indexInRow: 1,\n widthInResponsiveGridWiew: 12,\n typeFieldForm: TypeFieldFormEdit.TEXTE,\n};\n//-----------------------------------------------------\n@Component({\n selector: 'sgc-ng-baseui',\n template: '',\n standalone: false\n})\nexport class BaseFieldFormEditUI {\n @Input() data!: TFieldFormEditData;\n @Output() dataChange: EventEmitter<TFieldFormEditData> =\n new EventEmitter<TFieldFormEditData>();\n\n isDisabled: () => boolean = () => {\n if (this.data?.isDisabled) {\n return this.data.isDisabled();\n } else if (this.data?.disabled) {\n return this.data.disabled;\n }\n return false;\n };\n\n getLabel = (): string => {\n let myLabel = '';\n if (this.data.showLabel && this.data.label) {\n myLabel = this.data.label;\n }\n //myLabel+= (this.data.required ? ' *' : '');\n return myLabel;\n };\n\n isHide = (): boolean => {\n return (\n this.data != undefined &&\n this.data.isHide != undefined &&\n this.data.isHide()\n );\n };\n\n /*****************************************************/\n useField_TEXT(): boolean {\n return useField_TEXT(this.data);\n }\n\n useField_PASSWORD(): boolean {\n return useField_PASSWORD(this.data);\n }\n\n useField_TEXTAREA(): boolean {\n return useField_TEXTAREA(this.data);\n }\n\n useField_NUMBER(): boolean {\n return useField_NUMBER(this.data);\n }\n\n useField_DATE(): boolean {\n return useField_DATE(this.data);\n }\n\n useField_DATEHEURE(): boolean {\n return useField_DATEHEURE(this.data);\n }\n\n useField_HEURE(): boolean {\n return useField_HEURE(this.data);\n }\n}\n\n//--------------------------------------------------------------------\n//------ STRUCTURE DE DONNÉES POUR LE COMPOSANT SEPARATOR -----\nexport interface LabelSeparator_Model {\n labelAlign?: H_ALIGN_CONSTANT,\n css_fontweight?: FONTWEIGHT_CONSTANT,\n css_textcolor?: string,\n css_fontsize?: number\n}\n\n//---------------------------------------------------------------------------------------\n//------ STRUCTURE DE DONNÉES POUR LE GROUPE DE CHAMPS DES FORMULAIRES (TGROUPFORMEDIT)--\nexport const Min_WidthFieldInResponsiveGridWiew: number = 10;\nexport const Max_WidthFieldInResponsiveGridWiew: number = 100;\nexport const DefaultRowGapBetweenFields: number = 10;\nexport const DefaultRowHeight: number = 60;\n\nexport class TGroupFieldFormEdit {\n idOrder?: number;\n label?: string;\n showLabel: boolean = false;\n showBorder: boolean = false;\n private _listeFiedsForm: TListeFieldFormEditData = [];\n public get listeFiedsForm(): TListeFieldFormEditData {\n return this._listeFiedsForm;\n }\n listeGrilleFiedsForm?: Array<TGrilleFieldsFormEdit>;\n classCssStyle?: string;\n iconSeparator?: string;\n css_titleColor?: string;\n css_backgroundColor?: string;\n rowGapBetweenFields?: number;\n rowHeight?: number;\n labelSeparatorParam?: LabelSeparator_Model;\n //groupIDView?: string;\n isHide?: () => boolean = () => false;\n\n constructor(myIdOrder?: number, myLabel?: string, myShowLabel?: boolean, myShowBorder?: boolean) {\n this.idOrder = myIdOrder ? myIdOrder : this.idOrder;\n this.label = myLabel ? myLabel : this.label;\n this.showLabel = myShowLabel ? myShowLabel : this.showLabel;\n this.showBorder = myShowBorder ? myShowBorder : this.showBorder;\n }\n\n addFieldsToGroup(listeFields: TListeFieldFormEditData) {\n /*listeFields = listeFields.map((elt) => {\n if (\n elt.typeFieldForm == TypeFieldFormEdit.NOMBRE &&\n elt.value == undefined\n ) {\n elt.value = 0;\n }\n return {...elt};\n });*/\n this._listeFiedsForm = listeFields.map((elt) => ({ ...elt }));\n }\n\n /*clone: () => TGroupFieldFormEdit = () => {\n return { ...this };\n };*/\n}\n\nexport type TListeGroupFieldFormEdit = Array<TGroupFieldFormEdit>;\n\n//-------------------------------------------------------------------------------\n//------ STRUCTURE DE DONNÉES POUR LE FORMULAIRE D'ÉDITION (TFORMEDIT)-----------\nexport class TFormEdit<TDataCreate, TDataEdit> {\n private _listeGroupeFields: TListeGroupFieldFormEdit = [];\n public get listeGroupeFields(): TListeGroupFieldFormEdit {\n return this._listeGroupeFields;\n }\n\n //autoGenerateView: boolean;\n //titre?: string;\n //showTitre: boolean;\n listeFormFils?: Array<TFormEdit<TDataCreate, TDataEdit>>;\n private _listeAllFieldsGroup: TListeFieldFormEditData = [];\n\n constructor() { }\n\n addGridFieldsToGroup(\n group: TGroupFieldFormEdit,\n grilleFields: TGrilleFieldsFormEdit\n ) {\n if (\n group != undefined &&\n grilleFields != undefined &&\n grilleFields.listeRows != undefined\n ) {\n grilleFields.listeRows = grilleFields.listeRows.map((elt0) => {\n return {\n indexRow: elt0.indexRow,\n listeFieldsRow: elt0.listeFieldsRow.map((elt) => {\n if (\n elt.typeFieldForm == TypeFieldFormEdit.NOMBRE &&\n elt.value == undefined\n ) {\n elt.value = 0;\n }\n return elt;\n }),\n };\n });\n //group.listeGrilleFiedsForm = grilleFields;\n\n let listeRowsFields: TListeFieldFormEditData[] =\n grilleFields.listeRows.map((row) => {\n return row.listeFieldsRow;\n });\n for (let i = 0; i < listeRowsFields.length; i++) {\n this._listeAllFieldsGroup.push(...listeRowsFields[i]);\n }\n\n group.listeGrilleFiedsForm = group.listeGrilleFiedsForm\n ? [...group.listeGrilleFiedsForm, grilleFields]\n : [grilleFields];\n console.log('******* EDITCRUD - GROUP - LISTEGRID *************');\n console.log(grilleFields);\n console.log(group);\n }\n }\n\n addGroupToForm(group: TGroupFieldFormEdit) {\n this._listeGroupeFields.push(group);\n this._listeAllFieldsGroup.push(...group.listeFiedsForm);\n }\n\n getValueOfFieldForm(nameField: string | undefined): any {\n let myField = this._listeAllFieldsGroup.find(\n (elt) => elt.name == nameField\n );\n return myField?.value;\n }\n\n setBlobValueOfFieldForm(listeBlobFields: TListeBlobField, nameField: string | undefined) {\n let myField = this._listeAllFieldsGroup.find(\n (elt) => elt.name == nameField && elt.fileToUpload != undefined\n );\n\n if (myField) {\n let myExistBlobField: TBlobField | undefined = listeBlobFields.find(elt => elt.nameField==nameField);\n if (myExistBlobField) {\n myExistBlobField.optionsFile = myField.fileUploadDowloadOption!;\n myExistBlobField.file = myField.fileToUpload!;\n } else {\n listeBlobFields.push({ nameField: myField.name!, optionsFile: myField.fileUploadDowloadOption!, file: myField.fileToUpload! } as TBlobField);\n }\n }\n }\n\n setValueOfFieldForm(nameField: string | undefined, value: any): void {\n let myField = this._listeAllFieldsGroup.find(\n (elt) => elt.name == nameField\n );\n if (myField) {\n myField.value = value;\n }\n }\n}\n\n//--------------------------------------------------------------------------\n//---------------------------------------------------------------------\nexport function typeDataIs_TEXTE(fieldform: TFieldFormEditData): boolean {\n return fieldform.typeFieldForm == TypeFieldFormEdit.TEXTE;\n}\n\nexport function typeDataIs_TEXTE_SECRET(\n fieldform: TFieldFormEditData\n): boolean {\n return fieldform.typeFieldForm == TypeFieldFormEdit.TEXTE_SECRET;\n}\n\nexport function typeDataIs_TEXTE_MULTILIGNE(\n fieldform: TFieldFormEditData\n): boolean {\n return fieldform.typeFieldForm == TypeFieldFormEdit.TEXTE_MULTILIGNE;\n}\n\nexport function typeDataIs_NOMBRE(fieldform: TFieldFormEditData): boolean {\n return fieldform.typeFieldForm == TypeFieldFormEdit.NOMBRE;\n}\n\nexport function typeDataIs_BOOLEEN(fieldform: TFieldFormEditData): boolean {\n return fieldform.typeFieldForm == TypeFieldFormEdit.BOOLEEN;\n}\n\nexport function typeDataIs_DATE(fieldform: TFieldFormEditData): boolean {\n return fieldform.typeFieldForm == TypeFieldFormEdit.DATE;\n}\n\nexport function typeDataIs_DATEHEURE(fieldform: TFieldFormEditData): boolean {\n return fieldform.typeFieldForm == TypeFieldFormEdit.DATE_HEURE;\n}\n\nexport function typeDataIs_HEURE(fieldform: TFieldFormEditData): boolean {\n return fieldform?.typeFieldForm == TypeFieldFormEdit.HEURE;\n}\n\nexport function typeDataIs_SELECTVALUE(fieldform: TFieldFormEditData): boolean {\n return fieldform?.typeFieldForm == TypeFieldFormEdit.SELECT_VALUE;\n}\n\nexport function typeDataIs_FILEINPUT(fieldform: TFieldFormEditData): boolean {\n return fieldform?.typeFieldForm == TypeFieldFormEdit.FILE;\n}\n\nexport function typeDataIs_LISTE_OBJECT(\n fieldform: TFieldFormEditData\n): boolean {\n return fieldform.typeFieldForm == TypeFieldFormEdit.LISTE_OBJECT;\n}\n\n//--------------------------------------------------------\nexport function useField_TEXT(fieldform: TFieldFormEditData): boolean {\n return /*!fieldform.hasSelectValues && */ typeDataIs_TEXTE(fieldform);\n}\n\nexport function useField_PASSWORD(fieldform: TFieldFormEditData): boolean {\n return /*!fieldform.hasSelectValues &&*/ typeDataIs_TEXTE_SECRET(fieldform);\n}\n\nexport function useField_TEXTAREA(fieldform: TFieldFormEditData): boolean {\n return /*!fieldform.hasSelectValues &&*/ typeDataIs_TEXTE_MULTILIGNE(\n fieldform\n );\n}\n\nexport function useField_NUMBER(fieldform: TFieldFormEditData): boolean {\n return /*!fieldform.hasSelectValues &&*/ typeDataIs_NOMBRE(fieldform);\n}\n\nexport function useField_DATE(fieldform: TFieldFormEditData): boolean {\n if (typeDataIs_DATE(fieldform)) {\n fieldform.showTime = false;\n return true;\n }\n return false;\n //return /*!fieldform.hasSelectValues && */ typeDataIs_DATE(fieldform);\n}\n\nexport function useField_DATEHEURE(fieldform: TFieldFormEditData): boolean {\n if (typeDataIs_DATEHEURE(fieldform)) {\n fieldform.showTime = true;\n return true;\n }\n return false;\n //return /*!fieldform.hasSelectValues && */ typeDataIs_DATEHEURE(fieldform);\n}\n\nexport function useField_HEURE(fieldform: TFieldFormEditData): boolean {\n return /*!fieldform.hasSelectValues &&*/ typeDataIs_HEURE(fieldform);\n}\n\nexport function useField_SELECTVALUE(fieldform: TFieldFormEditData): boolean {\n return /*!fieldform.hasSelectValues &&*/ typeDataIs_SELECTVALUE(fieldform);\n}\n\nexport function useField_FILEINPUT(fieldform: TFieldFormEditData): boolean {\n return /*!fieldform.hasSelectValues &&*/ typeDataIs_FILEINPUT(fieldform);\n}\n\n//-----------------------------------------------------------------------------------\n//--- STRUCTURES DES DONNÉES POUR GÉRER les CSS ---------------------\nexport enum FONTWEIGHT_CONSTANT {\n FW_100 = 100,\n FW_200 = 200,\n FW_300 = 300,\n FW_400_NORMAL = 400,\n FW_500 = 500,\n FW_600 = 600,\n FW_700_BOLD = 700,\n FW_800 = 800,\n FW_900 = 900,\n}\n\nexport enum H_ALIGN_CONSTANT {\n LEFT = 'left',\n CENTER = 'center',\n RIGHT = 'right',\n}\n\n//-----------------------------------------------------------------------------------\n//--- STRUCTURE DES DONNÉES POUR GÉRER LES VUES CRUD (LIST/EDIT) ---------------------\nexport interface ReponseAPI<TypeData> {\n data: TypeData;\n message: string;\n reponseOK: boolean;\n}\n\nexport interface RowDataImportValidator<TDataType> {\n data: TDataType;\n statusOk: boolean;\n errMsg: string;\n}\n\nexport interface FieldDataImport {\n fieldName: string;\n numeroOrdre: number;\n widthInPercent: number;\n}\n\nexport interface ExportListDataParams {\n title: string;\n useLandscape: boolean;\n useHeaderDataFieldName: boolean;\n addNumeroOrdre: boolean;\n listeColsData: Array<string>;\n periodeReference: string;\n}\n\nexport interface ResponseResolveCrudList {\n response: any;\n}\n\nexport interface PaginateData<TypeData> {\n currentPage: number;\n totalRecords: number;\n totalPageRecords: number;\n pageData: TypeData;\n}\n\nexport interface PaginateReponseAPI<TypeData> {\n data: PaginateData<TypeData>;\n message: string;\n reponseOK: boolean;\n}\n\nexport enum Enum_FilterMatchMode {\n EXACT = 'EXACT',\n CONTAINS = 'CONTAINS',\n STARTS_WITH = 'START',\n ENDS_WITH = 'END',\n}\n\nexport enum Enum_FilterOperator {\n EQUALS = 'eq',\n CONTAINS = 'contains',\n STARTS_WITH = 'startWith',\n ENDS_WITH = 'endWith',\n DATE_IS = 'date_is',\n GREATER_THAN = 'gt',\n GREATER_THAN_OR_EQUAL_TO = 'gte',\n LESS_THAN = 'lt',\n LESS_THAN_OR_EQUAL_TO = 'lte',\n BETWEEN = 'between',\n IN = 'in',\n LIKE = 'like',\n}\n\nexport enum TypeFieldDataView {\n TEXTE = 'TEXT',\n TEXTE_SECRET = 'TEXT_SECRET',\n NOMBRE = 'NUMERIC',\n DATE = 'DATE',\n DATE_HEURE = 'DATE_HEURE',\n HEURE = 'HEURE',\n BOOLEEN = 'BOOLEAN',\n FILE_IMAGE = 'FILE_IMAGE',\n FILE_DOC = 'FILE_DOC',\n FILE = 'FILE'\n}\nexport interface TFilterMetadataUI {\n field: string;\n value?: any;\n //matchMode?: string;\n operator?: Enum_FilterOperator;\n //operator?: string;\n}\n\nexport interface TSortMetaUI {\n field: string;\n order: number;\n}\n\nexport interface TColumnDataTableDef {\n header: string;\n field: string;\n visible?: boolean;\n styleClassHeader?: string;\n styleClassField?: string;\n typeData?: TypeFieldDataView;\n listFilterOperators?: Array<TOptionListeSelectValues>;\n filterValue?: any;\n css_width?: number;\n css_textAlign?: TCss_ColumnDataTableTextAlign;\n //new(header:string, field:string, visible:bool, ): TColumnDataTableDef;\n}\n\nexport enum TCss_ColumnDataTableTextAlign {\n LEFT = 'left',\n RIGHT = 'right',\n CENTER = 'center',\n JUSTIFY = 'justify',\n}\n\nexport interface ColumnDatatableFilterValue {\n value: any;\n operator: Enum_FilterOperator;\n //matchMode: TFilterMatchMode;\n}\n\nexport interface ParamFindData {\n //criteresAsTxt: Array<string>;\n listeFiltres: ORofAndFilters;\n page: number;\n size: number;\n filters?: Map<string, ColumnDatatableFilterValue>;\n}\n\nexport interface ParamFindStatsData {\n //criteresAsTxt: Array<string>;\n listeFiltres: ORofAndFilters;\n filtresModalitesAsTxt: Array<string>;\n}\n\nexport function generateCritereTxtFromFiltres(\n listefiltres: ORofAndFilters = []\n): Array<string> {\n console.log('*********** BIBLIO INIT CRITERES ****************');\n console.log(listefiltres?.length);\n let tabCriteresTxt: Array<string> = [];\n if (listefiltres != undefined && listefiltres.length > 0) {\n if (listefiltres.length == 1) {\n //---- PROVISOIRE - POUR RESOUDRE LE PROBLEME POSE AU NIVEAU DE L'API PAR UNE LIGNE DE FILTRE\n listefiltres.push(listefiltres[0]);\n }\n\n listefiltres.forEach((filtres, index) => {\n console.log(\n '*********** BIBLIO INIT CRITERES (listefiltres.foreach Index) ****************'\n );\n console.log(index);\n\n let criteresTxt: string = '';\n\n filtres.value.forEach((element) => {\n if (element.active) {\n if (element.value != undefined || !element.ignoreWhenNull) {\n if (criteresTxt.length > 0) {\n criteresTxt += ', ';\n }\n criteresTxt +=\n '\"' +\n element.name +\n '\"' +\n ':\"{' +\n element.operator +\n ',' +\n (element.value != undefined\n ? element.value\n : element.defaultNullValue) +\n '}\"';\n //criteresTxt += '\"' + element.name + '\"' + ':\"' + (element.value != undefined ? element.value : element.defaultNullValue) + '\"';\n }\n }\n });\n if (criteresTxt.trim().length > 0) {\n criteresTxt = '{' + criteresTxt + '}';\n tabCriteresTxt.push(criteresTxt);\n }\n });\n }\n console.log('*********** BIBLIO INIT CRITERES ****************');\n console.log(tabCriteresTxt);\n console.log(tabCriteresTxt.length);\n return tabCriteresTxt;\n}\n\nexport interface ColumnDatatableFilterValue {\n value: any;\n operator: Enum_FilterOperator;\n //matchMode: TFilterMatchMode;\n}\n\nexport interface ParamFindData {\n //criteresAsTxt: Array<string>;\n listeFiltres: ORofAndFilters;\n page: number;\n size: number;\n filters?: Map<string, ColumnDatatableFilterValue>;\n}\n\nexport interface ParamFindStatsData {\n //criteresAsTxt: Array<string>;\n listeFiltres: ORofAndFilters;\n filtresModalitesAsTxt: Array<string>;\n}\n\nexport interface TRowFieldsOfFilterConditionData {\n fieldColumn: TFieldFormEditData;\n fieldOperator: TFieldFormEditData;\n fieldValue: TFieldFormEditData;\n}\n\nexport interface FiltreRequete {\n active: boolean;\n name?: string;\n label?: string;\n value?: any;\n //matchMode?: TFilterMatchMode;\n operator?: Enum_FilterOperator;\n ignoreWhenNull: boolean;\n defaultNullValue: any;\n rowsFieldsForm?: TRowFieldsOfFilterConditionData;\n}\n\nexport interface ANDFilters {\n value: Array<FiltreRequete>;\n visible: boolean;\n}\n\nexport type ORofAndFilters = Array<ANDFilters>;\n\nexport interface HttpOptionsRequeteAPI {\n headers?: HttpHeaders;\n params?: HttpParams;\n context?: HttpContext;\n //observe?: \"body\";\n //reportProgress?: boolean;\n //responseType?: \"json\";\n withCredentials?: boolean;\n}\n\nfunction createBasicAuthToken(username: String, password: String) {\n //return 'Basic ' + btoa(username + \":\" + password);\n //return 'Basic ' + btoa(username + \":\" + password);\n return 'Basic ' + window.btoa(username + ':' + password);\n //return 'Basic ' + window.btoa(username + \":\" + password);\n}\n\nexport function addOptionHeaderRequeteAPI_ContentType_JSON(\n myHttpOptionsApi: HttpOptionsRequeteAPI\n): void {\n addOptionHeaderRequeteAPI(\n myHttpOptionsApi,\n 'Content-Type',\n 'application/json; charset=utf-8'\n );\n}\n\nexport function addOptionHeaderRequeteAPI_ContentType_MULTIPART(\n myHttpOptionsApi: HttpOptionsRequeteAPI\n): void {\n addOptionHeaderRequeteAPI(\n myHttpOptionsApi,\n 'Content-Type',\n 'multipart/form-data; boundary=----WebKitFormBoundarySGC46902'\n );\n /*addOptionHeaderRequeteAPI(\n myHttpOptionsApi,\n 'mode',\n 'cors'\n );*/\n}\n\n/*export function addOptionHeaderRequeteAPI_ContentType_BLOB(\n myHttpOptionsApi: HttpOptionsRequeteAPI\n): void {\n addOptionHeaderRequeteAPI(\n myHttpOptionsApi,\n 'Content-Type',\n 'blob'\n );\n}*/\n\nexport function addOptionHeaderRequeteAPI_ResponseType_BLOB(\n myHttpOptionsApi: HttpOptionsRequeteAPI\n): void {\n addOptionHeaderRequeteAPI(\n myHttpOptionsApi,\n 'ResponseType',\n 'blob'\n );\n}\n\nexport function addOptionHeaderRequeteAPI_ACCEPT_JSON(\n myHttpOptionsApi: HttpOptionsRequeteAPI\n): void {\n addOptionHeaderRequeteAPI(myHttpOptionsApi, 'Accept', 'application/json');\n}\n\nexport function addOptionHeaderRequeteAPI_JSON(\n myHttpOptionsApi: HttpOptionsRequeteAPI\n) {\n addOptionHeaderRequeteAPI_ACCEPT_JSON(myHttpOptionsApi);\n addOptionHeaderRequeteAPI_ContentType_JSON(myHttpOptionsApi);\n}\n\nfunction generateNewMapOptionsFromHttpHeadersAndNewKeyValue(\n myHttpHeaders: HttpHeaders,\n myKeyHeader: string,\n myValueHeader: string\n): string | { [name: string]: string | string[] } {\n let newHttpHeaders: { [name: string]: string | string[] } = {};\n\n //console.log('NEWHTTPHEADERS - BEFORE');\n //console.log(newHttpHeaders);\n myHttpHeaders.keys().forEach((key) => {\n const value = myHttpHeaders.getAll(key);\n //console.log(key + ' : ' + value);\n if (value != null) {\n newHttpHeaders[key] = value.length > 1 ? value : value[0];\n //newHttpHeaders[key] = value.length < 1 ? value : value[0];\n //console.log(newHttpHeaders);\n }\n });\n //console.log('NEWHTTPHEADERS - AFTER');\n //console.log(newHttpHeaders);\n newHttpHeaders[myKeyHeader] = myValueHeader;\n //console.log(newHttpHeaders);\n return newHttpHeaders;\n}\n\nexport function addOptionHeaderRequeteAPI(\n myHttpOptionsApi: HttpOptionsRequeteAPI,\n myKeyHeader: string,\n myValueHeader: string\n): void {\n if (myHttpOptionsApi.headers == undefined) {\n myHttpOptionsApi.headers = new HttpHeaders();\n }\n if (myHttpOptionsApi.headers.has(myKeyHeader)) {\n myHttpOptionsApi.headers.append(myKeyHeader, myValueHeader);\n } else {\n //myHttpOptionsApi.headers.append(myKeyHeader, myKeyValue);\n myHttpOptionsApi.headers = new HttpHeaders(\n generateNewMapOptionsFromHttpHeadersAndNewKeyValue(\n myHttpOptionsApi.headers,\n myKeyHeader,\n myValueHeader\n )\n );\n }\n //console.log('****** BIBLIO -- ADDOPTIONHEADERREQUETEAPI **************');\n //console.log(myHttpOptionsApi);\n}\n\nexport function addOptionHeaderRequeteAPI_Authorization(\n myHttpOptionsApi: HttpOptionsRequeteAPI,\n username: string,\n password: string\n): void {\n addOptionHeaderRequeteAPI(\n myHttpOptionsApi,\n 'Authorization',\n createBasicAuthToken(username, password)\n );\n\n /* myHttpOptionsApi.headers = new HttpHeaders({\n Authorization: createBasicAuthToken(username, password),\n });*/\n}\n\n//----------------------------------------------------------\n/************************/\nfunction generateNewMapOptionsFromHttpParamsAndNewKeyValue(\n myHttpParams: HttpParams,\n myKeyParam: string,\n myValueParam: any\n): {\n [param: string]:\n | string\n | number\n | boolean\n | readonly (string | number | boolean)[];\n} {\n let newHttpParams: {\n [param: string]:\n | string\n | number\n | boolean\n | readonly (string | number | boolean)[];\n } = {};\n\n //console.log('NEWHTTPPARAMS - BEFORE');\n //console.log(newHttpParams);\n myHttpParams.keys().forEach((key) => {\n const value = myHttpParams.getAll(key);\n //console.log(key + ' : ' + value);\n if (value != null) {\n newHttpParams[key] = value.length > 1 ? value : value[0];\n //console.log(newHttpParams);\n }\n });\n //console.log('NEWHTTPPARAMS - AFTER');\n //console.log(newHttpParams);\n newHttpParams[myKeyParam] = myValueParam;\n //console.log(newHttpParams);\n return newHttpParams;\n}\n\n/** */\nexport function addOptionParamRequeteAPI(\n myHttpOptionsApi: HttpOptionsRequeteAPI,\n myKeyParam: string,\n myKeyValue: any\n): void {\n if (myHttpOptionsApi.params == undefined) {\n myHttpOptionsApi.params = new HttpParams();\n }\n\n if (myHttpOptionsApi.params.has(myKeyParam)) {\n myHttpOptionsApi.params = myHttpOptionsApi.params.append(\n myKeyParam,\n myKeyValue\n );\n //console.log('PARAM EXIST');\n //console.log(myHttpOptionsApi.params);\n } else {\n myHttpOptionsApi.params = new HttpParams({\n fromObject: generateNewMapOptionsFromHttpParamsAndNewKeyValue(\n myHttpOptionsApi.params,\n myKeyParam,\n myKeyValue\n ),\n });\n //myHttpOptionsApi.params = myHttpOptionsApi.params.append('test', 'value');\n //console.log('DOES NOT');\n //console.log(myHttpOptionsApi.params);\n }\n}\n\nexport interface HttpClientParamsAPI {\n idApp?: string;\n connectedUserId?: number;\n connectedUserLogin?: string;\n timeZoneOffset?: string;\n}\n\nexport interface ApiSettings {\n api_viewName?: string;\n baseUrlApi: string;\n apiUrl_findAll?: string;\n apiUrl_findAllForStats?: string;\n apiUrl_findAllForStats2?: string;\n apiUrl_findByPage?: string;\n apiUrl_findById?: string;\n apiUrl_editOrCreate?: string;\n apiUrl_delete?: string;\n apiUrl_previewUpload?: string;\n apiUrl_validateUpload?: string;\n apiUrl_upload?: string;\n apiUrl_exportData?: string;\n apiUrl_exportStats?: string;\n apiUrl_fileUpload?: string;\n apiUrl_fileDownload?: string;\n api_authorization_username?: string;\n api_authorization_password?: string;\n api_clientParams?: HttpClientParamsAPI;\n api_keyHttpHeader_clientParamsAsTxt?: string;\n api_keyHttpHeader_criteresAsTxt?: string;\n}\n\nexport interface DateHeureSettings {\n defaultCustomDateFormat: string;\n defaultCustomDateHeureFormat: string;\n defaultCustomHeureFormat: string;\n}\n\n//****************************************** */\nexport function isColTypeDate(col: TColumnDataTableDef) {\n return (\n col != null &&\n col != undefined &&\n col.typeData == TypeFieldDataView.DATE\n );\n}\n\nexport function isColTypeDateHeure(col: TColumnDataTableDef) {\n return (\n col != null &&\n col != undefined &&\n col.typeData == TypeFieldDataView.DATE_HEURE\n );\n}\n\nexport function isColTypeBooleen(col: TColumnDataTableDef) {\n return (\n col != null && col != undefined && col.typeData == TypeFieldDataView.BOOLEEN\n );\n}\n\nexport function isColTypeNombre(col: TColumnDataTableDef) {\n return (\n col != null && col != undefined && col.typeData == TypeFieldDataView.NOMBRE\n );\n}\n\nexport function isColTypeTexte(col: TColumnDataTableDef) {\n return (\n col != null &&\n col != undefined &&\n (col.typeData == null ||\n col.typeData == undefined ||\n col.typeData == TypeFieldDataView.TEXTE)\n );\n}\n\n//*********************** STRUCTURES DE DONNEES ET FONCTIONS POUR STATISTIQUES ************************************ */\n//**************** PARAMETRES POUR LES STATISTIQUES *************************************** */\nexport const defaultMaxYAxesChart: number = 10;\n\nexport interface ListeChoixValeursModalitesStats {\n valeursmodaliteparam1: Array<string>;\n valeursmodaliteparam2: Array<string>;\n}\n\nexport interface LabelModaliteStats {\n labelModalite1: string;\n labelModalite2: string;\n}\n\nexport interface DimensionAnalyseStats {\n nom: string;\n description: string;\n}\n\n//export type ListeFiltresModaliteStats = Array<FiltreModaliteStats>;\n\nexport interface ModaliteStatsParam {\n nomChampFiltre1: string;\n nomChampFiltre2?: string;\n nomChampCumul: string;\n //listeChoixValeurs1: Array<string>;\n //listeChoixValeurs2?: Array<string>;\n titreLabelChampFiltre1?: string;\n}\n\nexport interface ModaliteStatsParamForRenderView {\n valeur: string;\n couleurAffichage: string;\n visible: boolean;\n ordre?: number;\n}\n\nexport interface ChartStatsParamForRenderView {\n nomChampFiltre1: string;\n nomChampFiltre2?: string;\n listeChoixValeurs1: Array<ModaliteStatsParamForRenderView>;\n listeChoixValeurs2?: Array<ModaliteStatsParamForRenderView>;\n titreLabelChampFiltre1: string;\n typeGraphique: string;\n ordonner: boolean;\n}\n\nexport type ListeModaliteStatsParams = Array<ModaliteStatsParam>;\n\nexport interface ValeurModaliteStats<TDATA> {\n modalites: Array<string>;\n allLabelsModalites: Array<string>;\n value: number;\n percentValue: number;\n cumulValue: number;\n moyenneValue: number;\n valMin: number;\n valMax: number;\n //listeData: Array<TDATA>;\n //sousSerie: SerieStats<TDATA>\n}\n\nexport interface EntryDataSetChart {\n label?: any;\n data: Array<any>;\n backgroundColor?: string;\n}\n\nexport type ListeValeursModaliteStats<TDATA> = Array<\n ValeurModaliteStats<TDATA>\n>;\n\nexport interface SerieStats<TDATA> {\n titre?: string;\n //filtreModalite: FiltreModaliteStats;\n dimensionsAnalyses: Array<DimensionAnalyseStats>;\n listeValeursModalites: Array<ValeurModaliteStats<TDATA>>;\n totalData: Number;\n //listeValeursModalites2: Map<string, Map<string, ValeurModaliteStats<TDATA>>>;\n listeValeursModalitesForView?: ListeModaliteStatsForView;\n dataChartView?: any;\n optionsChartView?: any;\n valeurMin?: Number;\n valeurMax?: Number;\n}\n\nexport interface TabModaliteSerie1 {\n titre: string;\n effectif: number;\n taux: number;\n}\n\nexport interface TabModaliteSerie2 {\n titreserie1: string;\n titre: string;\n effectif: number;\n taux: number;\n}\n\nexport type ListeSeriesStats<TDATA> = Array<SerieStats<TDATA>>;\n\nexport enum TypeChartStats {\n BAR = 'bar',\n PIE = 'pie',\n DOUGHNUT = 'doughnut',\n}\n\nexport enum ListePositionAffichage {\n BOTTOM = 'bottom',\n TOP = 'top',\n RIGHT = 'right',\n LEFT = 'left',\n}\n\nexport interface StylesTitreChartStats {\n //backgroundolor: string;\n display: boolean;\n fontSize?: number;\n}\n\nexport interface OptionsLegendeChartStats {\n positionAffichage: ListePositionAffichage;\n}\n\nexport interface StylesModaliteStats {\n backgroundColor: string;\n}\n\nexport interface StylesSerieStats {\n backgroundColors: Array<string>;\n}\n\nexport interface ChartStats<TDATA> {\n idChartStats: string;\n titre: string;\n typechart: string;\n listeParamsModalite: ListeModaliteStatsParams;\n stylesTitre?: StylesTitreChartStats;\n optionsLegende?: OptionsLegendeChartStats;\n listeSeries: ListeSeriesStats<TDATA>;\n}\n\nexport type ListeChartStats<TDATA> = Array<ChartStats<TDATA>>;\n\nexport interface ModaliteStatsForView {\n label: string;\n value: Number;\n}\n\nexport type ListeModaliteStatsForView = Array<ModaliteStatsForView>;\n\n//------------------------------------------------------------\n//---------------------------------------------------------------\n\n//******************************** */\nexport class CrudFiltreRecherche {\n private criteresFiltresAsTxt: Array<string> = [];\n private filtresModalitesAsTxt: Array<string> = [];\n public reloadOnFiltreChange: Subject<Array<string>> = new Subject<\n Array<string>\n >();\n\n constructor() { }\n\n // on Filtre change\n private emitSubjectChange(): void {\n console.log('******** BIBLIO : EMITSUBJECTCHANGE ************');\n console.log(this.criteresFiltresAsTxt);\n this.reloadOnFiltreChange.next(this.criteresFiltresAsTxt);\n }\n\n validateChangeFiltre(filtres?: ORofAndFilters): void {\n this.initCritereTxtFromFiltres(filtres);\n this.emitSubjectChange();\n }\n\n validateChangeStatsFiltre(\n modalites: ListeModaliteStatsParams,\n filtres: ORofAndFilters\n ): void {\n this.initCritereTxtFromFiltres(filtres);\n //this.initFiltresModalitesAsTxtFromFiltres(modalites);\n this.emitSubjectChange();\n }\n\n public initCritereTxtFromFiltres(listefiltres?: ORofAndFilters): void {\n this.criteresFiltresAsTxt = generateCritereTxtFromFiltres(listefiltres);\n }\n\n public getCriteresFiltresAsTxt(): Array<string> {\n return this.criteresFiltresAsTxt;\n }\n\n public getFiltresModalitesAsTxt(): Array<string> {\n return this.filtresModalitesAsTxt;\n }\n}\n//---------------------------------------------\n/*** DEFAULT FILE DATA SERVICE ** */\nexport class FileDataService {\n default_apiSettings!: ApiSettings;\n apiSettings?: ApiSettings;\n optionRequeteAPI: HttpOptionsRequeteAPI = {\n headers: new HttpHeaders(),\n params: new HttpParams(),\n };\n default_dateHeureSettings!: DateHeureSettings;\n dateHeureSettings?: DateHeureSettings;\n\n httpClient!: HttpClient;\n\n //******************************\n //zoomLocationCec: ZoomLocationData;\n\n constructor(\n myHttpClient: HttpClient,\n myApiSettings?: ApiSettings\n ) {\n //this.nbRowsDatatablePage = this.crudSettings.nbRowsDatatablePage? this.crudSettings.nbRowsDatatablePage : 15;\n this.httpClient = myHttpClient;\n\n this.default_apiSettings = {\n api_viewName: '',\n apiUrl_fileUpload: 'fileupload',\n apiUrl_fileDownload: 'filedownload',\n baseUrlApi: '',\n api_authorization_username: 'admin',\n api_authorization_password: 'admin',\n api_keyHttpHeader_clientParamsAsTxt: 'clientParamsAsTxt',\n };\n\n this.default_dateHeureSettings = {\n defaultCustomDateFormat: 'dd-MM-yyy',\n defaultCustomDateHeureFormat: 'dd/MM/yyyy hh:mm',\n defaultCustomHeureFormat: 'hh:mm',\n };\n\n this.apiSettings = myApiSettings ? myApiSettings : this.default_apiSettings;\n this.resetHttpHeadersRequeteAPI();\n }\n\n /**************************************************/\n /** */\n protected getCompleteUrlEntity(suffixeEntityUrl: string = ''): string {\n let str: string = this.apiSettings?.baseUrlApi\n ? this.apiSettings.baseUrlApi\n : this.default_apiSettings.baseUrlApi;\n if (str.length > 0 && str.charAt(str.length - 1) == '/') {\n str = str.substring(0, str.length - 2);\n }\n let str2: string = suffixeEntityUrl;\n if (str2.length > 0 && str2.charAt(0) == '/') {\n str2 = str2.substring(1, str2.length - 1);\n }\n str = str + '/' + str2;\n //console.log('****** DEFAULTCRUDSERVICE --- getCompletePrefixUrlEntity');\n //console.log('--api_prefixUrlEntityCrud = '+this.api_prefixUrlEntityCrud);\n //console.log('--suffixeEntityUrl = '+suffixeEntityUrl);\n //console.log(str);\n return str;\n }\n\n //****************************************** */\n protected getApi_keyHttpHeader_clientParamsAsTxt(): string {\n return this.apiSettings?.api_keyHttpHeader_clientParamsAsTxt\n ? this.apiSettings.api_keyHttpHeader_clientParamsAsTxt\n : this.default_apiSettings.api_keyHttpHeader_clientParamsAsTxt\n ? this.default_apiSettings.api_keyHttpHeader_clientParamsAsTxt\n : '';\n }\n\n protected getApi_clientParams(): HttpClientParamsAPI {\n return this.apiSettings?.api_clientParams\n ? this.apiSettings.api_clientParams\n : this.default_apiSettings.api_clientParams\n ? this.default_apiSettings.api_clientParams\n : {};\n }\n\n protected getApi_authorization_username(): string {\n return this.apiSettings?.api_authorization_username\n ? this.apiSettings.api_authorization_username\n : this.default_apiSettings.api_authorization_username\n ? this.default_apiSettings.api_authorization_username\n : '';\n }\n\n protected getApi_authorization_password(): string {\n return this.apiSettings?.api_authorization_password\n ? this.apiSettings.api_authorization_password\n : this.default_apiSettings.api_authorization_password\n ? this.default_apiSettings.api_authorization_password\n : '';\n }\n\n protected getCompleteUrlEntity_filedownload(): string {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_fileDownload\n ? this.apiSettings?.apiUrl_fileDownload\n : (this.default_apiSettings.apiUrl_fileDownload ? this.default_apiSettings.apiUrl_fileDownload : '')\n );\n }\n\n protected getCompleteUrlEntity_fileupload(): string {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_fileUpload\n ? this.apiSettings?.apiUrl_fileUpload\n : (this.default_apiSettings.apiUrl_fileUpload ? this.default_apiSettings.apiUrl_fileUpload : '')\n );\n }\n\n /**************************************************/\n /********** */\n protected resetHttpParamsRequeteAPI(): void {\n this.optionRequeteAPI.params = new HttpParams();\n this.setOptionParamRequeteAPI_HttpClientParams();\n }\n /********** */\n protected resetHttpHeadersRequeteAPI(): void {\n this.optionRequeteAPI.headers = new HttpHeaders();\n\n addOptionHeaderRequeteAPI_Authorization(\n this.optionRequeteAPI,\n this.getApi_authorization_username(),\n this.getApi_authorization_password()\n //this.crudSettings.httpHeaderAPI_authorization_password\n );\n\n //addOptionHeaderRequeteAPI(this.optionRequeteAPI, 'Access-Control-Allow-Origin','*');\n //addOptionHeaderRequeteAPI(this.optionRequeteAPI, 'Access-Control-Allow-Headers', 'Authorization, Origin, Content-Type, X-CSRF-Token');\n //addOptionHeaderRequeteAPI(this.optionRequeteAPI, 'Access-Control-Allow-Origin','*');\n }\n\n /***** */\n private setOptionParamRequeteAPI_HttpClientParams() {\n addOptionParamRequeteAPI(\n this.optionRequeteAPI,\n this.getApi_keyHttpHeader_clientParamsAsTxt(),\n JSON.stringify(this.getApi_clientParams())\n );\n }\n //-------------------------------------------------------------------------\n downloadFileFromServer(downloadParams: TOptionFileUploadDownload): Observable<any> {\n //this.resetHttpHeadersRequeteAPI();\n //addOptionHeaderRequeteAPI_ContentType_JSON(this.optionRequeteAPI);\n //this.resetHttpParamsRequeteAPI();\n const myUrl: string = this.getCompleteUrlEntity_filedownload();\n\n let params = new HttpParams();\n params = params.set('fileData', JSON.stringify(downloadParams));\n\n let myOptionQuery: any = {\n ...this.getOptionRequeteDownload(),\n params: params,\n responseType: 'blob' as 'json',\n observe: 'response',\n };\n\n /*addOptionParamRequeteAPI(\n this.optionRequeteAPI,\n 'fileData',\n JSON.stringify(downloadParams)\n );*/\n\n console.log(\n '******* CRUD-SERVICE -- downloadFileFromServer -- myOptionQuery **************************'\n );\n console.log(myOptionQuery);\n\n if (myUrl) {\n return this.httpClient.get(myUrl, myOptionQuery);\n } else {\n return of(null);\n }\n\n /*if (myUrl) {\n return this.httpClient.get<Blob>(myUrl, this.optionRequeteAPI)\n } else {\n return of(null);\n }*/\n }\n\n //------------------------\n protected getOptionRequeteDownload() {\n return {\n headers: new HttpHeaders({\n Authorization: createBasicAuthToken(\n this.getApi_authorization_username(),\n this.getApi_authorization_password()\n ),\n }),\n };\n }\n}\n\n\n/*** DEFAULT CRUD DATA SERVICE ** */\nexport class CrudDataService<\n TDataList,\n TDataCreate,\n TDataEdit,\n TDataImport,\n TDataExport\n> {\n default_apiSettings!: ApiSettings;\n apiSettings?: ApiSettings;\n optionRequeteAPI: HttpOptionsRequeteAPI = {\n headers: new HttpHeaders(),\n params: new HttpParams(),\n };\n default_dateHeureSettings!: DateHeureSettings;\n dateHeureSettings?: DateHeureSettings;\n\n useEchelleInfo_listData: boolean = false;\n useEchelleInfo_statsData: boolean = false;\n\n //*********************************************\n dataKeyField!: string;\n httpClient!: HttpClient;\n typeView!: TypeCrudView;\n listeAllFieldsFormEdit!: TListeFieldFormEditData;\n\n //******************************\n\n constructor(\n myHttpClient: HttpClient,\n myDataKeyField: string,\n mytypeview: TypeCrudView,\n myApiSettings?: ApiSettings\n ) {\n //this.nbRowsDatatablePage = this.crudSettings.nbRowsDatatablePage? this.crudSettings.nbRowsDatatablePage : 15;\n this.httpClient = myHttpClient;\n this.dataKeyField = myDataKeyField;\n this.typeView = mytypeview;\n this.default_apiSettings = {\n api_viewName: '',\n baseUrlApi: '',\n apiUrl_findAll: 'listAll',\n apiUrl_findByPage: 'listByPage',\n apiUrl_findById: 'findByID',\n apiUrl_findAllForStats: 'listAllStats',\n apiUrl_findAllForStats2: 'listAllStats2',\n apiUrl_editOrCreate: '',\n apiUrl_delete: '',\n apiUrl_previewUpload: 'previewupload',\n apiUrl_validateUpload: 'validateupload',\n apiUrl_upload: 'upload',\n apiUrl_exportData: 'download',\n apiUrl_fileDownload: 'filedownload',\n apiUrl_exportStats: '',\n api_authorization_username: 'admin',\n api_authorization_password: 'admin',\n api_keyHttpHeader_clientParamsAsTxt: 'clientParamsAsTxt',\n };\n\n this.default_dateHeureSettings = {\n defaultCustomDateFormat: 'dd-MM-yyy',\n defaultCustomDateHeureFormat: 'dd/MM/yyyy hh:mm',\n defaultCustomHeureFormat: 'hh:mm',\n };\n\n this.apiSettings = myApiSettings;\n this.resetHttpHeadersRequeteAPI();\n\n this.listeAllFieldsFormEdit = [];\n }\n\n /**************************************************/\n /** */\n protected getCompleteUrlEntity(suffixeEntityUrl: string = ''): string {\n let str: string = this.apiSettings?.baseUrlApi\n ? this.apiSettings.baseUrlApi\n : this.default_apiSettings.baseUrlApi;\n if (str.length > 0 && str.charAt(str.length - 1) == '/') {\n str = str.substring(0, str.length - 2);\n }\n let str2: string = suffixeEntityUrl;\n if (str2.length > 0 && str2.charAt(0) == '/') {\n str2 = str2.substring(1, str2.length - 1);\n }\n str = str + '/' + str2;\n //console.log('****** DEFAULTCRUDSERVICE --- getCompletePrefixUrlEntity');\n //console.log('--api_prefixUrlEntityCrud = '+this.api_prefixUrlEntityCrud);\n //console.log('--suffixeEntityUrl = '+suffixeEntityUrl);\n //console.log(str);\n return str;\n }\n\n protected getCompleteUrlEntity_listAll(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_findAll\n ? this.apiSettings?.apiUrl_findAll\n : this.default_apiSettings.apiUrl_findAll\n );\n }\n\n protected getCompleteUrlEntity_listAllStats(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_findAllForStats\n ? this.apiSettings?.apiUrl_findAllForStats\n : this.default_apiSettings.apiUrl_findAllForStats\n );\n }\n\n protected getCompleteUrlEntity_listAllStats2(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_findAllForStats2\n ? this.apiSettings?.apiUrl_findAllForStats2\n : this.default_apiSettings.apiUrl_findAllForStats2\n );\n }\n\n protected getCompleteUrlEntity_listByPage(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_findByPage\n ? this.apiSettings?.apiUrl_findByPage\n : this.default_apiSettings.apiUrl_findByPage\n );\n }\n\n protected getCompleteUrlEntity_findById(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_findById\n ? this.apiSettings?.apiUrl_findById\n : this.default_apiSettings.apiUrl_findById\n );\n }\n\n protected getCompleteUrlEntity_editOrCreate(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_editOrCreate\n ? this.apiSettings?.apiUrl_editOrCreate\n : this.default_apiSettings.apiUrl_editOrCreate\n );\n }\n\n protected getCompleteUrlEntity_delete(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_delete\n ? this.apiSettings?.apiUrl_delete\n : this.default_apiSettings.apiUrl_delete\n );\n }\n\n protected getCompleteUrlEntity_previewUpload(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_previewUpload\n ? this.apiSettings?.apiUrl_previewUpload\n : this.default_apiSettings.apiUrl_previewUpload\n );\n }\n\n protected getCompleteUrlEntity_validateUpload(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_validateUpload\n ? this.apiSettings?.apiUrl_validateUpload\n : this.default_apiSettings.apiUrl_validateUpload\n );\n }\n\n protected getCompleteUrlEntity_upload(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_upload\n ? this.apiSettings?.apiUrl_upload\n : this.default_apiSettings.apiUrl_upload\n );\n }\n\n protected getCompleteUrlEntity_exportData(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_exportData\n ? this.apiSettings?.apiUrl_exportData\n : this.default_apiSettings.apiUrl_exportData\n );\n }\n\n protected getCompleteUrlEntity_filedownload(): string {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_fileDownload\n ? this.apiSettings?.apiUrl_fileDownload\n : (this.default_apiSettings.apiUrl_fileDownload ? this.default_apiSettings.apiUrl_fileDownload : '')\n );\n }\n\n protected getCompleteUrlEntity_exportStats(): string | undefined {\n return this.getCompleteUrlEntity(\n this.apiSettings?.apiUrl_exportStats\n ? this.apiSettings?.apiUrl_exportStats\n : this.default_apiSettings.apiUrl_exportStats\n );\n }\n\n //****************************************** */\n protected getApi_keyHttpHeader_clientParamsAsTxt(): string {\n return this.apiSettings?.api_keyHttpHeader_clientParamsAsTxt\n ? this.apiSettings.api_keyHttpHeader_clientParamsAsTxt\n : this.default_apiSettings.api_keyHttpHeader_clientParamsAsTxt\n ? this.default_apiSettings.api_keyHttpHeader_clientParamsAsTxt\n : '';\n }\n\n protected getApi_keyHttpHeader_criteresAsTxt(): string {\n return 'criteresAsTxt';\n }\n\n protected getApi_clientParams(): HttpClientParamsAPI {\n return this.apiSettings?.api_clientParams\n ? this.apiSettings.api_clientParams\n : this.default_apiSettings.api_clientParams\n ? this.default_apiSettings.api_clientParams\n : {};\n }\n\n protected getApi_authorization_username(): string {\n return this.apiSettings?.api_authorization_username\n ? this.apiSettings.api_authorization_username\n : this.default_apiSettings.api_authorization_username\n ? this.default_apiSettings.api_authorization_username\n : '';\n }\n\n protected getApi_authorization_password(): string {\n return this.apiSettings?.api_authorization_password\n ? this.apiSettings.api_authorization_password\n : this.default_apiSettings.api_authorization_password\n ? this.default_apiSettings.api_authorization_password\n : '';\n }\n\n /**************************************************/\n /********** */\n protected resetHttpParamsRequeteAPI(): void {\n this.optionRequeteAPI.params = new HttpParams();\n this.setOptionParamRequeteAPI_HttpClientParams();\n }\n /********** */\n protected resetHttpHeadersRequeteAPI(): void {\n this.optionRequeteAPI.headers = new HttpHeaders();\n addOptionHeaderRequeteAPI_Authorization(\n this.optionRequeteAPI,\n this.getApi_authorization_username(),\n this.getApi_authorization_password()\n //this.crudSettings.httpHeaderAPI_authorization_password\n );\n }\n\n /***** */\n private setOptionParamRequeteAPI_HttpClientParams() {\n addOptionParamRequeteAPI(\n this.optionRequeteAPI,\n this.getApi_keyHttpHeader_clientParamsAsTxt(),\n JSON.stringify(this.getApi_clientParams())\n );\n }\n //-------------------------------------------------------------------------\n /******************************************************************* */\n //----------------------------------------------------------\n findDataAll(\n listeFiltres?: ORofAndFilters\n ): Observable<ReponseAPI<TDataList[]>> {\n this.resetHttpHeadersRequeteAPI();\n addOptionHeaderRequeteAPI_JSON(this.optionRequeteAPI);\n this.resetHttpParamsRequeteAPI();\n\n let tabOrCriteresOfAndPredicat: Array<string> =\n generateCritereTxtFromFiltres(listeFiltres);\n\n if (\n tabOrCriteresOfAndPredicat != undefined &&\n tabOrCriteresOfAndPredicat.length > 0\n ) {\n tabOrCriteresOfAndPredicat.forEach((andCriteres) => {\n addOptionParamRequeteAPI(\n this.optionRequeteAPI,\n this.getApi_keyHttpHeader_criteresAsTxt(),\n andCriteres\n );\n });\n }\n\n const myUrl: string | undefined = this.getCompleteUrlEntity_listAll();\n\n if (myUrl) {\n return this.httpClient\n .get<ReponseAPI<TDataList[]>>(myUrl, this.optionRequeteAPI)\n .pipe(map((data) => this.convertDataResponseApi_ListView(data)));\n } else {\n return of({\n data: [],\n reponseOK: false,\n message: 'URL Error : {' + myUrl + '}',\n } as ReponseAPI<TDataList[]>);\n }\n }\n\n //----------------------------------------------------------\n findDataFromServer(\n findParams: ParamFindData\n ): Observable<PaginateReponseAPI<TDataList[]>> {\n this.resetHttpHeadersRequeteAPI();\n addOptionHeaderRequeteAPI_JSON(this.optionRequeteAPI);\n this.resetHttpParamsRequeteAPI();\n //this.setOptionParamRequeteAPI_HttpClientParams(); //-- Déjà inclus dans resetHttpParamsRequeteAPI\n\n //console.log(\"******* GET DATA FROM SERVER 0 - Params Find ************\")\n //console.log(findParams);\n //findParams.listeFiltres = this.refreshFiltresWithZoomlocationInfo(findParams.listeFiltres,this.useEchelleInfo_listData);\n\n let criteresAsTxt: Array<string> = generateCritereTxtFromFiltres(\n findParams.listeFiltres\n );\n\n if (criteresAsTxt != undefined && criteresAsTxt.length > 0) {\n criteresAsTxt.forEach((andCriteres) => {\n addOptionParamRequeteAPI(\n this.optionRequeteAPI,\n this.getApi_keyHttpHeader_criteresAsTxt(),\n andCriteres\n );\n });\n }\n addOptionParamRequeteAPI(\n this.optionRequeteAPI,\n 'page',\n String(findParams.page)\n );\n addOptionParamRequeteAPI(\n this.optionRequeteAPI,\n 'size',\n String(findParams.size)\n );\n\n console.log(\n '******* CRUD-SERVICE -- FINDDATAFROMSERVER PAGINATE -- OptionsRequeteAPI **************************'\n );\n console.log(this.optionRequeteAPI);\n\n const myUrl: string | undefined = this.getCompleteUrlEntity_listByPage();\n if (myUrl) {\n return this.httpClient\n .get<PaginateReponseAPI<TDataList[]>>(myUrl, this.optionRequeteAPI)\n .pipe(\n map((data) => this.convertDataResponseApi_PaginateListView(data))\n );\n } else {\n return of({\n data: {},\n reponseOK: false,\n message: 'URL Error : {' + myUrl + '}',\n } as PaginateReponseAPI<TDataList[]>);\n }\n }\n\n //-----------------------------------------------\n findById(idData: string): Observable<ReponseAPI<TDataList>> {\n this.resetHttpHeadersRequeteAPI();\n addOptionHeaderRequeteAPI_JSON(this.optionRequeteAPI);\n this.resetHttpParamsRequeteAPI();\n\n addOptionParamRequeteAPI(this.optionRequeteAPI, 'id', idData);\n\n const myOptionQuery = { ...this.optionRequeteAPI };\n const myUrl: string | undefined = this.getCompleteUrlEntity_findById();\n\n console.log('**** CRUD SERVICE - FINDBYID 00 *******');\n console.log(idData);\n console.log(myUrl);\n console.log(this.optionRequeteAPI);\n\n if (myUrl != undefined) {\n console.log('**** CRUD SERVICE - FINDBYID URL OK *******');\n return this.httpClient.get<ReponseAPI<TDataList>>(myUrl, myOptionQuery);\n } else {\n console.log('**** CRUD SERVICE - FINDBYID URL NON-OK *******');\n return of({\n data: undefined,\n reponseOK: false,\n message: 'URL Error : {' + myUrl + '}',\n } as ReponseAPI<TDataList>);\n }\n }\n\n //-----------------------------------------------\n deleteById(idData: string) {\n this.resetHttpHeadersRequeteAPI();\n addOptionHeaderRequeteAPI_JSON(this.optionRequeteAPI);\n this.resetHttpParamsRequeteAPI();\n\n //addOptionParamRequeteAPI(this.optionRequeteAPI, 'id', idData);\n\n const myOptionQuery = { ...this.optionRequeteAPI };\n const myUrl: string | undefined = this.getCompleteUrlEntity_delete() + idData;\n\n console.log('**** CRUD SERVICE - DELETEBYID 00 *******');\n console.log(idData);\n console.log(myUrl);\n\n if (myUrl) {\n return this.httpClient.delete<ReponseAPI<Boolean>>(myUrl, myOptionQuery);\n } else {\n return of({\n data: false,\n reponseOK: false,\n message: 'URL Error : {' + myUrl + '}',\n } as ReponseAPI<Boolean>);\n }\n }\n\n deleteAll() {\n this.resetHttpHeadersRequeteAPI();\n addOptionHeaderRequeteAPI_JSON(this.optionRequeteAPI);\n this.resetHttpParamsRequeteAPI();\n\n const myOptionQuery = { ...this.optionRequeteAPI };\n const myUrl: string | undefined = this.getCompleteUrlEntity_delete();\n\n if (myUrl) {\n return this.httpClient.delete<ReponseAPI<Boolean>>(myUrl, myOptionQuery);\n } else {\n return of({\n data: false,\n reponseOK: false,\n message: 'URL Error : {' + myUrl + '}',\n } as ReponseAPI<Boolean>);\n }\n }\n //--------------- EXPORTATION -------------------------------------------------------\n exportData(\n type: string,\n exportParams: ExportListDataParams,\n listefiltres?: ORofAndFilters\n ): Observable<any> {\n this.resetHttpHeadersRequeteAPI();\n addOptionHeaderRequeteAPI_JSON(this.optionRequeteAPI);\n this.resetHttpParamsRequeteAPI();\n\n let params = new HttpParams();\n params = params.set('p_title', exportParams.title);\n params = params.set('p_useLandscape', exportParams.useLandscape);\n params = params.set('p_useHeaderDataFieldName', exportParams.useHeaderDataFieldName);\n params = params.set('p_showRowNumber', exportParams.addNumeroOrdre);\n const pkey_listeCols = 'p_listeColsData';\n\n exportParams.listeColsData.forEach(colData => {\n if (params.has(pkey_listeCols)) {\n params = params.append(pkey_listeCols, colData);\n } else {\n params = params.set(pkey_listeCols, colData);\n }\n })\n\n //listefiltres = this.refreshFiltresWithZoomlocationInfo(listefiltres,this.useEchelleInfo_listData);\n let tabOrCriteresOfAndPredicat: Array<string> =\n generateCritereTxtFromFiltres(listefiltres);\n\n if (\n tabOrCriteresOfAndPredicat != undefined &&\n tabOrCriteresOfAndPredicat.length > 0\n ) {\n tabOrCriteresOfAndPredicat.forEach((andCriteres) => {\n if (params.has(this.getApi_keyHttpHeader_clientParamsAsTxt())) {\n params = params.append(\n this.getApi_keyHttpHeader_clientParamsAsTxt(),\n andCriteres\n );\n } else {\n params = params.set(\n this.getApi_keyHttpHeader_clientParamsAsTxt(),\n andCriteres\n );\n }\n });\n }\n\n //console.log(\"********** CRUDSERVICE - EXPORT DATA - HttpParams ************\")\n //console.log(params)\n\n let myOptionQuery: any = {\n ...this.getOptionRequeteReport(),\n params: params,\n responseType: 'blob' as 'json',\n observe: 'response',\n };\n //console.log(\"********** CRUDSERVICE - EXPORT DATA - myOptionQuery ************\")\n //console.log(myOptionQuery)\n let myUrl: string | undefined = this.getCompleteUrlEntity_exportData() + '/' + type;\n if (myUrl) {\n return this.httpClient.get(myUrl, myOptionQuery);\n } else {\n return of(null);\n }\n }\n\n protected getOptionRequeteReport() {\n return {\n headers: new HttpHeaders({\n //'Content-Type': 'application/pdf; charset=UTF-8',\n //'Content-Disposition': 'inline; filename='\n //'Accept': 'application/json',\n //'Access-Control-Allow-Origin': '*',\n Authorization: createBasicAuthToken(\n this.getApi_authorization_username(),\n this.getApi_authorization_password()\n ),\n }),\n };\n }\n\n convertDataResponseApi_PaginateListView: (\n resApi: any\n ) => PaginateReponseAPI<TDataList[]> = (\n myResApi: PaginateReponseAPI<TDataList[]>\n ) => myResApi;\n convertDataResponseApi_ListView: (resApi: any) => ReponseAPI<TDataList[]> = (\n myResApi: ReponseAPI<TDataList[]>\n ) => myResApi;\n\n //----\n public getAllFieldOfCreateTypeData(): TListeFieldFormEditData {\n return this.listeAllFieldsFormEdit != undefined ? this.listeAllFieldsFormEdit.filter(elt => elt.useInCreateView == true && elt.name != undefined) : []\n }\n //----\n public getAllFieldOfEditTypeData(): TListeFieldFormEditData {\n return this.listeAllFieldsFormEdit != undefined ? this.listeAllFieldsFormEdit.filter(elt => elt.useInEditView == true && elt.name != undefined) : []\n }\n //----\n public getAllFieldOfImportTypeData(): TListeFieldFormEditData {\n return this.listeAllFieldsFormEdit != undefined ? this.listeAllFieldsFormEdit.filter(elt => elt.useInImportView == true && elt.name != undefined) : []\n }\n\n //----------------------------\n downloadFileFromServer(downloadParams: TOptionFileUploadDownload): Observable<any> {\n //this.resetHttpHeadersRequeteAPI();\n //addOptionHeaderRequeteAPI_ContentType_JSON(this.optionRequeteAPI);\n //this.resetHttpParamsRequeteAPI();\n const myUrl: string = this.getCompleteUrlEntity_filedownload();\n\n let params = new HttpParams();\n params = params.set('fileData', JSON.stringify(downloadParams));\n\n let myOptionQuery: any = {\n ...this.getOptionRequeteDownload(),\n params: params,\n responseType: 'blob' as 'json',\n observe: 'response',\n };\n\n /*addOptionParamRequeteAPI(\n this.optionRequeteAPI,\n 'fileData',\n JSON.stringify(downloadParams)\n );*/\n\n console.log(\n '******* CRUD-SERVICE -- downloadFileFromServer -- myOptionQuery **************************'\n );\n console.log(myOptionQuery);\n\n if (myUrl) {\n return this.httpClient.get(myUrl, myOptionQuery);\n } else {\n return of(null);\n }\n\n /*if (myUrl) {\n return this.httpClient.get<Blob>(myUrl, this.optionRequeteAPI)\n } else {\n return of(null);\n }*/\n }\n\n //------------------------\n protected getOptionRequeteDownload() {\n return {\n headers: new HttpHeaders({\n Authorization: createBasicAuthToken(\n this.getApi_authorization_username(),\n this.getApi_authorization_password()\n ),\n }),\n };\n }\n\n}\n\n//-------------------------------------------------------------------------------\n//---------------- STRUCTURE DE DONNÉES DE CRUDDATASERVICE_LISTVIEW -------------\nexport class CrudDataService_ListView<TDataList> extends CrudDataService<\n TDataList,\n any,\n any,\n any,\n any\n> {\n titreViewDataList!: string;\n cols_Datatable!: Array<TColumnDataTableDef>;\n exportColumns?: any[];\n globalFiltersColumns?: string[];\n //filtres: ORofAndFilters = [];\n //staticFiltres: ORofAndFilters = [];\n urlNavigatePageCreateOrEdit?: string;\n urlNavigatePageImport?: string;\n nbRowsAuto!: boolean;\n nbRowsDataTableByPage!: number;\n selectNbRowsDataTableByPage_template!: string;\n selectedData?: TDataList;\n navigateToEdit_Subject: BehaviorSubject<boolean> = new BehaviorSubject(false);\n navigateToCreate_Subject: BehaviorSubject<boolean> = new BehaviorSubject(false);\n navigateToImport_Subject: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n //getHttpDataResponseApi_ListView!: Observable<HttpResponse<TDataList>>;\n\n constructor(\n myHttpClient: HttpClient,\n myDataKeyField: string,\n myColsDatatable?: Array<TColumnDataTableDef>,\n myTitreView?: string,\n myNbRowsAuto?: boolean,\n myNbRowsDataTableByPage?: number,\n mySelectNbRowsDataTableByPage_template?: string\n ) {\n super(myHttpClient, myDataKeyField, TypeCrudView.LIST);\n this.cols_Datatable = myColsDatatable ? myColsDatatable : [];\n this.titreViewDataList = myTitreView ? myTitreView : 'List Data';\n this.nbRowsAuto = myNbRowsAuto ? myNbRowsAuto : false;\n this.nbRowsDataTableByPage = myNbRowsDataTableByPage\n ? myNbRowsDataTableByPage\n : 15;\n this.selectNbRowsDataTableByPage_template =\n mySelectNbRowsDataTableByPage_template\n ? mySelectNbRowsDataTableByPage_template\n : '10,15,20,25,30,35,40,50';\n }\n\n myInit_ListView = (): void => { };\n onPrepare_ListView = (responseResolveData: any): void => { };\n setStaticParameters_ListView = (): void => { };\n getIDValue = (data: TDataList): any => {\n return undefined;\n };\n}\n//-------------------------------------------------------------------------\n//-------------------------------------------------------------------------\n//----------------------------------------------------------------------------\n/** Read the custom property of body section with given name: **/\nexport function readProperty(name: string): string {\n let bodyStyles = window.getComputedStyle(document.body);\n return bodyStyles.getPropertyValue('--' + name);\n}\n\n//----------------------------------------------------------------------------------------\n//-------------- STRUCTURE DE DONNÉES POUR LE CRUDDATASERVICE_EDITVIEW -------------------\nexport interface WrapperEditData<TDataCreateOrEdit> {\n data?: Observable<TDataCreateOrEdit>;\n typeEditView: TypeCrudView;\n othersData?: Observable<any>;\n}\n\nexport interface TBlobField {\n nameField: string;\n optionsFile: TOptionFileUploadDownload;\n file: Blob;\n}\n\nfunction escapeDoubleQuotes(str:string) {\n return str.replace(/\"/g, '\\\\\"');\n}\n\nexport type TListeBlobField = Array<TBlobField>;\n\n/**\n *\n */\nexport class CrudDataService_CreateOrEditView<\n TDataCreate,\n TDataEdit,\n TDataList\n> extends CrudDataService<TDataList, TDataCreate, TDataEdit, any, any> {\n titreCreateOrEditView!: string;\n urlNavigatePageListView!: string;\n formEdit!: TFormEdit<TDataCreate, TDataEdit>;\n navigateToList_Subject: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n newDataCreate: () => TDataCreate = () => {\n return {} as TDataCreate;\n };\n //validateDataToSave : (()=> boolean) = ()=>{return true;};\n\n constructor(\n myHttpClient: HttpClient,\n myDataKeyField: string,\n mytypeview: TypeCrudView.CREATE | TypeCrudView.EDIT,\n myTitreView?: string,\n myUrlNavigateListView?: string\n ) {\n super(myHttpClient, myDataKeyField, mytypeview);\n this.titreCreateOrEditView = myTitreView\n ? myTitreView\n : this.isCreateView()\n ? 'CREATE DATA VIEW'\n : 'EDIT DATA VIEW';\n this.urlNavigatePageListView = myUrlNavigateListView\n ? myUrlNavigateListView\n : '';\n if (this.formEdit == undefined) {\n this.formEdit = new TFormEdit();\n }\n }\n\n isCreateView(): boolean {\n return this.typeView === TypeCrudView.CREATE;\n }\n\n isEditView(): boolean {\n return this.typeView === TypeCrudView.EDIT;\n }\n\n \n saveNew(newData: TDataCreate, uploadfiles?: Blob[], optionsUploadfiles?: TOptionFileUploadDownload[]): Observable<ReponseAPI<TDataList>> {\n console.log(\"****** GENERIC CRUD EDIT - MODEL SAVENEW *******\")\n console.log(newData);\n console.log(optionsUploadfiles);\n console.log(uploadfiles);\n this.resetHttpHeadersRequeteAPI();\n this.resetHttpParamsRequeteAPI();\n //addOptionHeaderRequeteAPI(this.optionRequeteAPI, 'Access-Control-Allow-Origin', '*');\n //addOptionHeaderRequeteAPI(this.optionRequeteAPI, 'Access-Control-Allow-Headers', 'Authorization, Origin, Content-Type, X-CSRF-Token');\n //addOptionHeaderRequeteAPI(this.optionRequeteAPI, 'Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');\n //this.optionRequeteAPI.withCredentials = true;\n\n //addOptionHeaderRequeteAPI_ACCEPT_JSON(this.optionRequeteAPI);\n //addOptionHeaderRequeteAPI_ContentType_MULTIPART(this.optionRequeteAPI);\n //addOptionHeaderRequeteAPI(this.optionRequeteAPI, \"Content-Type\", \"multipart/form-data; boundary=----WebKitFormBoundarySGC46902\");\n //addOptionHeaderRequeteAPI_ContentType_JSON(this.optionRequeteAPI);\n\n //addOptionParamRequeteAPI(this.optionRequeteAPI, \"model\", JSON.stringify(this.updateDataCreateBeforeSave(newData)));\n let formData: FormData = new FormData();\n formData.append(\"model\", JSON.stringify(this.updateDataCreateBeforeSave(newData)));\n formData.append(\"clientParams\", JSON.stringify(this.getApi_clientParams()));\n\n\n if (uploadfiles && uploadfiles.length > 0 && optionsUploadfiles && optionsUploadfiles.length > 0 && uploadfiles.length == optionsUploadfiles.length) {\n let strOptionsUploadFiles:string=optionsUploadfiles.map(elt=>JSON.stringify(elt)).join(',');\n formData.append(\"optionsUploadfiles\", strOptionsUploadFiles);\n\n for (let i = 0; i < uploadfiles.length; i++) {\n formData.append(\"uploadfiles\", uploadfiles[i]);\n //addOptionParamRequeteAPI(this.optionRequeteAPI, \"uploadfiles\", uploadfiles[i]);\n //formData.append(\"optionsUploadfiles\", JSON.stringify(optionsUploadfiles[i]));\n //formData.append(\"optionsUploadfiles\", JSON.stringify(JSON.stringify(optionsUploadfiles[i]))) ;\n //formData.append(\"optionsUploadfiles\", JSON.stringify(optionsUploadfiles[i]));\n //addOptionParamRequeteAPI(this.optionRequeteAPI, \"optionsUploadfiles\", JSON.stringify(optionsUploadfiles[i]));\n } \n }\n\n //console.log(Array.from(formData));\n\n const myOptionQuery = { ...this.optionRequeteAPI };\n //const myOptionQuery = { ...this.optionRequeteAPI, 'Content-Type': 'multipart/form-data', params: myParams };\n console.log(myOptionQuery);\n\n const myUrl: string | undefined = this.getCompleteUrlEntity_editOrCreate();\n if (myUrl) {\n return this.httpClient.post<ReponseAPI<TDataList>>(\n myUrl,\n formData,\n myOptionQuery\n );\n } else {\n return of({\n data: null,\n reponseOK: false,\n message: 'URL Error : {' + myUrl + '}',\n } as ReponseAPI<TDataList>);\n }\n }\n\n save(editData: TDataEdit): Observable<ReponseAPI<TDataList>> {\n this.resetHttpHeadersRequeteAPI();\n addOptionHeaderRequeteAPI_JSON(this.optionRequeteAPI);\n this.resetHttpParamsRequeteAPI();\n\n const myOptionQuery = { ...this.optionRequeteAPI };\n const myUrl: string | undefined = this.getCompleteUrlEntity_editOrCreate();\n if (myUrl) {\n return this.httpClient.patch<ReponseAPI<TDataList>>(\n myUrl,\n this.updateDataEditBeforeSave(editData),\n myOptionQuery\n );\n } else {\n return of({\n data: null,\n reponseOK: false,\n message: 'URL Error : {' + myUrl + '}',\n } as ReponseAPI<TDataList>);\n }\n }\n\n initFieldsValuesFromApiDataEdit = (apidata?: TDataEdit) => { };\n initFieldsValuesFromApiDataCreate = (apidata?: TDataCreate) => { };\n initApiDataFromFieldsValuesEdit = (apidata?: TDataEdit, listeBlobFields?: TListeBlobField) => { };\n initApiDataFromFieldsValuesCreate = (apidata?: TDataCreate, listeBlobFields?: TListeBlobField) => { };\n\n //-------------------\n convertDataListToCreate: (datalistElt: TDataList) => TDataCreate = (\n datalistElt: TDataList\n ) => {\n return { datalistElt } as TDataCreate;\n };\n convertDataListToEdit: (datalistElt: TDataList) => TDataEdit = (\n datalistElt: TDataList\n ) => {\n return { datalistElt } as TDataEdit;\n };\n onPrepareEdit = (): void => { };\n onPrepareCreate = (): void => { };\n\n updateDataCreateBeforeSave(data: TDataCreate): any {\n return data;\n }\n updateDataEditBeforeSave(data: TDataEdit): any {\n return data;\n }\n\n validateDataToSaveCreate = (): boolean => {\n return true;\n };\n validateDataToSaveEdit = (): boolean => {\n return true;\n };\n\n afterSaveCreate = (): void => {\n //this.crudFiltreRecherhe.validateChangeFiltre(undefined);\n };\n afterSaveEdit = (): void => {\n //this.crudFiltreRecherhe.validateChangeFiltre(undefined);\n };\n\n getListeFileUploadFieldsFromData(): Array<TFieldFormEditData> {\n return this.listeAllFieldsFormEdit.filter(elt => typeDataIs_FILEINPUT(elt));\n }\n}\n","/*\n * Public API Surface of sgc-share-lib\n */\n\n//export * from './lib/sgc-share-lib.service';\n//export * from './lib/sgc-share-lib.component';\n//export * from './lib/sgc-share-lib.module';\nexport * from './lib/service/notification.service';\nexport * from './lib/service/filtre-recherche-service';\nexport * from './lib/biblio/sgc-biblio';\nexport * from './lib/model/sgc-basic-model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}