@gloww/gloww 20.0.0-beta.13 → 20.0.0-beta.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"gloww-gloww.mjs","sources":["../../../projects/gloww/src/lib/Services/gloww.service.ts","../../../projects/gloww/src/lib/Services/version-check.service.ts","../../../projects/gloww/src/lib/Directives/route.directive.ts","../../../projects/gloww/src/lib/Pipes/safe-html.pipe.ts","../../../projects/gloww/src/lib/Components/confirmation/confirmation.component.ts","../../../projects/gloww/src/lib/Components/confirmation/confirmation.component.html","../../../projects/gloww/src/lib/Services/dialog.service.ts","../../../projects/gloww/src/lib/Services/nav.service.ts","../../../projects/gloww/src/lib/Services/voice-recognition.service.ts","../../../projects/gloww/src/lib/Components/secure-img/secure-img.component.ts","../../../projects/gloww/src/lib/Directives/file-sink.directive.ts","../../../projects/gloww/src/lib/Components/upload-file/upload-file.component.ts","../../../projects/gloww/src/lib/Components/upload-file/upload-file.component.html","../../../projects/gloww/src/lib/Components/upload-doc/upload-doc.component.ts","../../../projects/gloww/src/lib/Components/upload-doc/upload-doc.component.html","../../../projects/gloww/src/lib/Components/search-form/search-form.component.ts","../../../projects/gloww/src/lib/Components/search-form/search-form.component.html","../../../projects/gloww/src/lib/Components/header/header.component.ts","../../../projects/gloww/src/lib/Components/header/header.component.html","../../../projects/gloww/src/lib/Components/result-table/result-table.component.ts","../../../projects/gloww/src/lib/Components/result-table/result-table.component.html","../../../projects/gloww/src/lib/Components/filter-form/filter-form.component.ts","../../../projects/gloww/src/lib/Components/filter-form/filter-form.component.html","../../../projects/gloww/src/lib/gloww-security/Models/oauthassociation.ts","../../../projects/gloww/src/lib/gloww-security/Services/authentication-service-config.ts","../../../projects/gloww/src/lib/gloww-security/Services/authentication.service.ts","../../../projects/gloww/src/lib/Components/display-objects/display-objects.component.ts","../../../projects/gloww/src/lib/Components/display-objects/display-objects.component.html","../../../projects/gloww/src/lib/Components/prompt/prompt.component.ts","../../../projects/gloww/src/lib/Components/prompt/prompt.component.html","../../../projects/gloww/src/lib/Pipes/retry-with-delay.ts","../../../projects/gloww/src/lib/Pipes/secure.pipe.ts","../../../projects/gloww/src/lib/Components/menu-list-item/menu-list-item.component.ts","../../../projects/gloww/src/lib/Components/menu-list-item/menu-list-item.component.html","../../../projects/gloww/src/lib/Services/snippets.service.ts","../../../projects/gloww/src/lib/Components/code-editor/code-editor.component.ts","../../../projects/gloww/src/lib/Components/code-editor/code-editor.component.html","../../../projects/gloww/src/lib/Pipes/html-format.pipe.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network/social-network.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network/social-network.component.html","../../../projects/gloww/src/lib/gloww-security/Components/login/login.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/login/login.component.html","../../../projects/gloww/src/lib/gloww-security/Helpers/jwt.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/error.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.html","../../../projects/gloww/src/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.html","../../../projects/gloww/src/lib/gloww-security/Components/user-menu/user-menu.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/user-menu/user-menu.component.html","../../../projects/gloww/src/lib/gloww-security/Helpers/staging.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/auth.guard.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/administrator.guard.ts","../../../projects/gloww/src/lib/gloww-security/gloww-security.module.ts","../../../projects/gloww/src/lib/Components/html-editor/html-editor.component.ts","../../../projects/gloww/src/lib/Components/html-editor/html-editor.component.html","../../../projects/gloww/src/lib/Components/folders/file-edit/file-edit.component.ts","../../../projects/gloww/src/lib/Components/folders/file-edit/file-edit.component.html","../../../projects/gloww/src/lib/Services/folder-service-config.ts","../../../projects/gloww/src/lib/Services/folder.service.ts","../../../projects/gloww/src/lib/Components/folders/folders/folders.component.ts","../../../projects/gloww/src/lib/Components/folders/folders/folders.component.html","../../../projects/gloww/src/lib/Components/download-progress/download-progress.component.ts","../../../projects/gloww/src/lib/Components/download-progress/download-progress.component.html","../../../projects/gloww/src/lib/Components/secure-a/secure-a.component.ts","../../../projects/gloww/src/lib/Components/secure-a/secure-a.component.html","../../../projects/gloww/src/lib/Components/dummy/dummy.component.ts","../../../projects/gloww/src/lib/Components/dummy/dummy.component.html","../../../projects/gloww/src/lib/Components/select/select.component.ts","../../../projects/gloww/src/lib/Components/select/select.component.html","../../../projects/gloww/src/lib/Components/auto-complete/auto-complete.component.ts","../../../projects/gloww/src/lib/Components/auto-complete/auto-complete.component.html","../../../projects/gloww/src/lib/Components/datetime/datetime.component.ts","../../../projects/gloww/src/lib/Components/datetime/datetime.component.html","../../../projects/gloww/src/lib/Directives/callback.directive.ts","../../../projects/gloww/src/lib/Components/base-collection/base-collection.component.ts","../../../projects/gloww/src/lib/Guards/has-unsaved-data.guard.ts","../../../projects/gloww/src/lib/gloww.module.ts","../../../projects/gloww/src/lib/gloww-security/Services/gloww-security.service.ts","../../../projects/gloww/src/lib/Helpers/gloww-validators.ts","../../../projects/gloww/src/public-api.ts","../../../projects/gloww/src/gloww-gloww.ts"],"sourcesContent":["import { Injectable, InjectionToken, Injector } from '@angular/core';\r\nimport { firstValueFrom, Subject } from 'rxjs';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { PlatformLocation } from '@angular/common';\r\nimport { Location } from '@angular/common';\r\n\r\nexport const API_SERVER_URL = new InjectionToken<string>('ApiServerUrl.config');\r\nexport const GLOWW_APPLI = new InjectionToken<string>('GlowwAppli.config');\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlowwService {\r\n public baseHref: string;\r\n public InternalBasePath = '???';\r\n basePathChange: Subject<string> = new Subject<string>();\r\n public get basePath() {\r\n return this.InternalBasePath;\r\n }\r\n public set basePath(value: string) {\r\n //alert(`setBasePath ${value}`)\r\n //if (value.match(/_mgmt(\\/|$)/)) {\r\n const change = this.InternalBasePath != value;\r\n var oldUrl = this.location.path();\r\n var newUrl = oldUrl.replace(`/${this.InternalBasePath}/`, `/${value}/`);\r\n console.log(`GlowwService setBasePath (${this.InternalBasePath},${value}) ${oldUrl} -> ${newUrl}`);\r\n this.InternalBasePath = value;\r\n if (change) {\r\n this.location.go(newUrl);\r\n this.basePathChange.next(newUrl);\r\n }\r\n //} else {\r\n //console.log(`not mgmt ${value}`);;\r\n //}\r\n }\r\n public baseUrl = '/';\r\n protected http: HttpClient;\r\n protected BasePath: string;\r\n protected ApiServerUrl: string;\r\n protected platformLocation: PlatformLocation;\r\n protected location: Location\r\n constructor(private _injector: Injector) {\r\n this.location = _injector.get(Location);\r\n this.http = _injector.get(HttpClient);\r\n this.platformLocation = _injector.get(PlatformLocation);\r\n try { this.ApiServerUrl = _injector.get(API_SERVER_URL); } catch { }\r\n try { this.BasePath = _injector.get(GLOWW_APPLI) } catch { } this.BasePath = this.BasePath ?? 'GlowwApi';\r\n\r\n //@Optional() @Inject(API_SERVER_URL) apiServerUrl: string, @Optional() @Inject(GLOWW_APPLI) glowwAppli: string\r\n this.baseHref = this.platformLocation.getBaseHrefFromDOM();\r\n this.InternalBasePath = this.BasePath;\r\n if (this.ApiServerUrl) { this.baseUrl = this.ApiServerUrl; if (!this.baseUrl.endsWith('/')) { this.baseUrl += '/'; } }\r\n }\r\n public getParams(obj: any) {\r\n let params = new HttpParams();\r\n if (!obj) { return params; }\r\n Object.keys(obj).forEach(p => {\r\n if (obj[p]) {\r\n params = params.append(p.toString(), obj[p].toString());\r\n }\r\n });\r\n return params;\r\n }\r\n\r\n public async noSrc() {\r\n return await firstValueFrom(this.http.get<boolean>(`/admin/ORMS/${this.InternalBasePath.replace(/_mgmt/, \"\")}/noSrc`));\r\n }\r\n\r\n public async noRestSecurity() {\r\n return await firstValueFrom(this.http.get<boolean>(`/admin/ORMS/${this.InternalBasePath.replace(/_mgmt/, \"\")}/noRestSecurity`));\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VersionCheckService {\r\n // this will be replaced by actual hash post-build.js\r\n private currentHash = '{{POST_BUILD_ENTERS_HASH_HERE}}';\r\n private callback;\r\n public url;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n /**\r\n * Checks in every set frequency the version of frontend application\r\n * @param url the url to test (default : /version.json)\r\n * @param frequency - in milliseconds, defaults to 1 minutes\r\n * @param callback - function to call when the version is different, default askReloadApplication\r\n */\r\n public initVersionCheck(url = '/version.json', frequency = 1000 * 60, callback = this.askReloadApplication) {\r\n this.callback = callback;\r\n this.url = url;\r\n this.checkVersion();\r\n setInterval(() => {\r\n this.checkVersion();\r\n }, frequency);\r\n }\r\n\r\n public askReloadApplication() {\r\n console.log('askReload');\r\n // ENTER YOUR CODE TO DO SOMETHING UPON VERSION CHANGE\r\n if (confirm('Une nouvelle version est disponible sur le serveur. Il est nécessaire de recharger l\\'application. Veuillez confirmer le rechargement de l\\'application')) {\r\n this.reloadApplication();\r\n }\r\n }\r\n public reloadApplication() {\r\n console.log('reload');\r\n let search = location.search;\r\n if (search) { search += '&'; }\r\n search += '___t=' + new Date().getTime();\r\n console.log(`Search ${search}`);\r\n location.search = search;\r\n }\r\n\r\n private checkVersion() {\r\n // timestamp these requests to invalidate caches\r\n this.http.get(this.url + '?t=' + new Date().getTime())\r\n // .first()\r\n .subscribe(\r\n (response: any) => {\r\n console.log('get version ok');\r\n const hash = response.hash;\r\n const hashChanged = this.hasHashChanged(this.currentHash, hash);\r\n console.log(`HASH : Current : ${this.currentHash}, New : ${hash}, Changed ${hashChanged}`);\r\n\r\n // If new version, do something\r\n if (hashChanged) {\r\n this.callback();\r\n }\r\n // store the new hash so we wouldn't trigger versionChange again\r\n // only necessary in case you did not force refresh\r\n this.currentHash = hash;\r\n },\r\n (err) => {\r\n console.error(err, 'Could not get version');\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Checks if hash has changed.\r\n * This file has the JS hash, if it is a different one than in the version.json\r\n * we are dealing with version change\r\n * @param currentHash currenthash\r\n * @param newHash newhash\r\n * @returns the currenthash and newhash are different\r\n */\r\n private hasHashChanged(currentHash, newHash) {\r\n return currentHash !== newHash;\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Router } from '@angular/router';\n\n\n@Directive({\n selector: '[glowwRoute]',\n standalone: true\n})\nexport class RouteDirective {\n\r\n constructor(private el: ElementRef, private router: Router) { }\r\n @Input() dlg: any;\r\n\r\n @HostListener('click', ['$event.target']) onClick($event) {\r\n console.info('clicked: ' + $event.getAttribute('data-link'));\r\n if (this.dlg) { this.dlg.close(true); }\r\n var goRoute = $event.getAttribute('data-link');\r\n this.router.navigate([goRoute]);\r\n\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n standalone: true\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\r\n\tconstructor(private sanitizer: DomSanitizer) { }\r\n\r\n\ttransform(style) {\r\n\t\treturn this.sanitizer.bypassSecurityTrustHtml(style);\r\n\t\t// return this.sanitizer.bypassSecurityTrustStyle(style);\r\n\t\t// return this.sanitizer.bypassSecurityTrustXxx(style); - see docs\r\n\t}\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { RouteDirective } from '../../Directives/route.directive';\nimport { MatButton } from '@angular/material/button';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'glw-confirmation',\n templateUrl: './confirmation.component.html',\n styleUrls: ['./confirmation.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, RouteDirective, MatDialogActions, MatButton, SafeHtmlPipe]\n})\r\nexport class ConfirmationComponent {\r\n\r\n title: string;\r\n message: string;\r\n mode: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<ConfirmationComponent>, @Inject(MAT_DIALOG_DATA) public data: ConfirmationModel) {\r\n // Update view with given values\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.mode = data.mode ?? 'confirmation';\r\n }\r\n\r\n onConfirm(): void {\r\n // Close the dialog, return true\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onDismiss(): void {\r\n // Close the dialog, return false\r\n this.dialogRef.close(false);\r\n }\r\n\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\nexport class ConfirmationModel {\r\n constructor(public title: string, public message: string, public mode?: string) {\r\n }\r\n}\r\n","<h1 mat-dialog-title>\n {{title}}\n</h1>\n\n<div mat-dialog-content>\n <p [innerHTML]=\"message | safeHtml\" glowwRoute [dlg]=\"dialogRef\"></p>\n</div>\n\n@if (mode==='confirmation') {\n <mat-dialog-actions>\n <button mat-button (click)=\"onDismiss()\">No</button>\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Yes</button>\n </mat-dialog-actions>\n}\n@if (mode==='alert') {\n <mat-dialog-actions>\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">OK</button>\n </mat-dialog-actions>\n}","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationComponent, ConfirmationModel } from '../Components/confirmation/confirmation.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n constructor(protected dialog: MatDialog) { }\r\n\r\n createConfirmationDialog(title: string, message: string, mode?: string) {\r\n const dialogData = new ConfirmationModel(title, message, mode);\r\n return this.dialog.open(ConfirmationComponent, {\r\n maxWidth: '80%',\r\n data: dialogData,\r\n disableClose: true\r\n });\r\n }\r\n\r\n\r\n openConfirmationDialog(title: string, message: string, mode?: string) {\r\n return this.createConfirmationDialog(title, message, mode).afterClosed();\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { Event, NavigationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NavService {\r\n public appDrawer: any;\r\n public currentUrl = new BehaviorSubject<string>(undefined);\r\n\r\n constructor(private router: Router) {\r\n this.router.events.subscribe((event: Event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.currentUrl.next(event.urlAfterRedirects);\r\n }\r\n });\r\n }\r\n\r\n public closeNav() {\r\n this.appDrawer.close();\r\n }\r\n\r\n public openNav() {\r\n this.appDrawer.open();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n\r\ndeclare var webkitSpeechRecognition: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VoiceRecognitionService {\r\n\r\n recognition = new webkitSpeechRecognition();\r\n isStoppedSpeechRecog = false;\r\n public text = '';\r\n tempWords: any;\r\n\r\n constructor() { }\r\n\r\n init() {\r\n\r\n this.recognition.interimResults = true;\r\n this.recognition.lang = 'fr-be';\r\n\r\n this.recognition.addEventListener('result', (e: any) => {\r\n const transcript = Array.from(e.results)\r\n .map((result: any) => result[0])\r\n .map((result) => result.transcript)\r\n .join('');\r\n this.tempWords = transcript;\r\n console.log(transcript);\r\n });\r\n }\r\n\r\n start() {\r\n this.isStoppedSpeechRecog = false;\r\n this.recognition.start();\r\n console.log(\"Speech recognition started\")\r\n this.recognition.addEventListener('end', (condition: any) => {\r\n if (this.isStoppedSpeechRecog) {\r\n this.recognition.stop();\r\n console.log(\"End speech recognition\")\r\n } else {\r\n this.wordConcat()\r\n this.recognition.start();\r\n }\r\n });\r\n }\r\n stop() {\r\n this.isStoppedSpeechRecog = true;\r\n this.wordConcat()\r\n this.recognition.stop();\r\n console.log(\"End speech recognition\")\r\n }\r\n\r\n wordConcat() {\r\n this.text = this.text + ' ' + this.tempWords + '.';\r\n this.tempWords = '';\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { switchMap, map } from 'rxjs/operators';\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\n selector: 'secure-img',\n template: `\n <img [src]=\"dataUrl$ | async\" style=\"object-fit: contain;\"/>\n `,\n imports: [AsyncPipe]\n})\r\nexport class SecureImgComponent implements OnChanges {\r\n // This code block just creates an rxjs stream from the src\r\n // this makes sure that we can handle source changes\r\n // or even when the component gets destroyed\r\n // So basically turn src into src$\r\n @Input() public src!: string;\r\n private src$ = new BehaviorSubject(this.src);\r\n ngOnChanges(): void {\r\n this.src$.next(this.src);\r\n }\r\n\r\n // this stream will contain the actual url that our img tag will load\r\n // everytime the src changes, the previous call would be canceled and the\r\n // new resource would be loaded\r\n dataUrl$ = this.src$.pipe(switchMap(url => this.loadImage(url)))\r\n\r\n // we need HttpClient to load the image\r\n constructor(private httpClient: HttpClient, private domSanitizer: DomSanitizer) {\r\n }\r\n\r\n private loadImage(url: string): Observable<any> {\r\n return this.httpClient\r\n // load the image as a blob\r\n .get(url, { responseType: 'blob' })\r\n // create an object url of that blob that we can use in the src attribute\r\n .pipe(map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))))\r\n }\r\n}\r\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[glowwFileSink]',\n standalone: true\n})\nexport class FileSinkDirective {\n\r\n @HostBinding('class.fileover') fileOver: boolean;\r\n @Output() fileDropped = new EventEmitter<any>();\r\n\r\n // Dragover listener\r\n @HostListener('dragover', ['$event']) onDragOver(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n }\r\n\r\n // Dragleave listener\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n }\r\n\r\n // Drop listener\r\n @HostListener('drop', ['$event']) public ondrop(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n let files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ElementRef, Inject, Input, AfterViewInit } from '@angular/core';\r\nimport { UntypedFormGroup, FormBuilder, FormArray, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { FileSinkDirective } from '../../Directives/file-sink.directive';\nimport { NgClass } from '@angular/common';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-upload-file',\n templateUrl: './upload-file.component.html',\n styleUrls: ['./upload-file.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: UploadFileComponent\n }\n ],\n imports: [MatCard, FileSinkDirective, MatCardContent, NgClass, MatProgressBar, MatCardActions, MatButton]\n})\r\nexport class UploadFileComponent implements ControlValueAccessor, AfterViewInit {\r\n @ViewChild('fileUpload') fileUpload: ElementRef;\r\n @Input() multiple: boolean = false;\r\n @Input() allowAltFileName: boolean = false;\r\n @Input() acceptMime: string = '*/*';\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n form: UntypedFormGroup;\r\n\r\n files = [];\r\n\r\n constructor() {\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n const fileUpload = this.fileUpload.nativeElement;\r\n fileUpload.onchange = () => {\r\n if (!this.multiple || !this.files) {\r\n this.files = [];\r\n }\r\n for (const file of fileUpload.files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });\r\n //if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }\r\n }\r\n this.onChange(this.files);\r\n this.onTouched();\r\n };\r\n }\r\n\r\n get value() {\r\n return this.files;\r\n //return this._value;\r\n }\r\n\r\n set value(val) {\r\n this.files = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n\r\n\r\n writeValue(obj: any): void {\r\n this.value = obj;\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n\r\n SelectFiles() {\r\n if (this.files && this.files.length > 0 && !this.multiple) {\r\n if (confirm(\"Do you want to replace current file ?\")) {\r\n this.files = [];\r\n } else {\r\n return;\r\n }\r\n }\r\n this.fileUpload.nativeElement.click();\r\n }\r\n\r\n ChangeAltName(i, $event) {\r\n this.files[i].altFileName = $event.target.value;\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n\r\n onFileDropped($event) {\r\n this.prepareFilesList($event);\r\n }\r\n prepareFilesList(files: Array<any>) {\r\n if (files.length > 1 && !this.multiple) {\r\n alert(\"You can only drop an only file at once\");\r\n return;\r\n }\r\n if (this.files && this.files.length > 0 && !this.multiple) {\r\n if (confirm(\"Do you want to replace current file ?\")) {\r\n this.files = [];\r\n } else {\r\n return;\r\n }\r\n }\r\n if (!this.files) this.files = [];\r\n for (const file of files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });\r\n }\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n\r\n /**\r\n * format bytes\r\n * @param bytes (File size in bytes)\r\n * @param decimals (Decimals point)\r\n */\r\n formatBytes(bytes, decimals = 2) {\r\n if (bytes === 0) {\r\n return \"0 Bytes\";\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals;\r\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\r\n }\r\n\r\n deleteFile(index: number) {\r\n if (this.files[index].progress && this.files[index].progress < 100) {\r\n console.log(\"Upload in progress.\");\r\n return;\r\n }\r\n this.files.splice(index, 1);\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n}\r\n\r\n","<mat-card appearance=\"outlined\" glowwFileSink (fileDropped)=\"onFileDropped($event)\" style=\"height:calc(100% - 40px)\">\n <mat-card-content style=\"min-height:100px;height:calc(100% - 60px)\">\n @if (files && files.length) {\n <div class=\"files-list\" style=\"height:calc(100% - 60px)\">\n @for (file of files; track file; let i = $index) {\n <div class=\"single-file\" [ngClass]=\"file.status\">\n <i class=\"fa-thin fa-file fa-lg\"></i>\n <div class=\"info\">\n <h4 class=\"name\">\n {{ file?.fileName }}\n </h4>\n <p class=\"size\">\n {{ formatBytes(file?.size) }}\n </p>\n <mat-progress-bar [value]=\"file.progress\"></mat-progress-bar>\n </div>\n <i class=\"fa-thin fa-trash fa-lg\" (click)=\"deleteFile(i)\"></i>\n </div>\n }\n </div>\n }\n @if (!files || !files.length) {\n <div style=\"height:calc(100% - 60px)\">No file(s) selected</div>\n }\n <input type=\"file\" #fileUpload id=\"fileUpload\" name=\"fileUpload\" [accept]=\"acceptMime\" style=\"display:none;\" [multiple]=\"multiple\" />\n </mat-card-content>\n <mat-card-actions style=\"text-align:center\">\n <button mat-raised-button color=\"accent\" (click)=\"SelectFiles()\">\n <i class=\"fal fa-file-upload\"></i> @if (!multiple) {\n <span>Select file or Drop a file</span>\n }\n @if (multiple) {\n <span>Select file(s) or drop file(s)</span>\n }\n </button>\n</mat-card-actions>\n</mat-card>","import { Component, OnInit, ViewChild, ElementRef, Inject, Input } from '@angular/core';\r\nimport { FormGroup, UntypedFormBuilder, FormArray, FormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { UploadFileComponent } from '../upload-file/upload-file.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-upload-doc',\n templateUrl: './upload-doc.component.html',\n styleUrls: ['./upload-doc.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, UploadFileComponent, FormsModule, MatDialogActions, MatButton]\n})\r\nexport class UploadDocComponent {\r\n\r\n multiple: boolean = false;\r\n allowAltFileName: boolean = false;\r\n\r\n acceptMime = '*/*';\r\n files = [];\r\n callback: (files: any) => Observable<any>;\r\n constructor(private dialogRef: MatDialogRef<UploadDocComponent>, @Inject(MAT_DIALOG_DATA) public data: any, private formBuilder: UntypedFormBuilder) {\r\n if (data && data.acceptMime) {\r\n this.acceptMime = data.acceptMime;\r\n }\r\n if (data && data.multiple) {\r\n this.multiple = data.multiple;\r\n }\r\n if (data && data.allowAltFileName) {\r\n this.allowAltFileName = data.allowAltFileName;\r\n }\r\n if (data && data.callback) {\r\n this.callback = data.callback;\r\n }\r\n }\r\n\r\n /*\r\n get fileNames(): FormArray {\r\n return this.form.get(\"fileNames\") as FormArray\r\n }\r\n\r\n FileName(fn: string): FormGroup {\r\n return this.formBuilder.group({\r\n fileName: fn\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onClick() {\r\n const fileUpload = this.fileUpload.nativeElement; fileUpload.onchange = () => {\r\n if (this.multiple) {\r\n this.files = [];\r\n if (this.allowAltFileName) { this.fileNames.clear(); }\r\n }\r\n for (const file of fileUpload.files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name });\r\n if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }\r\n }\r\n };\r\n fileUpload.click();\r\n }\r\n\r\n private uploadFiles() {\r\n this.fileUpload.nativeElement.value = '';\r\n this.files.forEach(file => {\r\n alert('upload file');\r\n // this.uploadFile(file);\r\n });\r\n }\r\n */\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n save() {\r\n console.log(\"save UploadDoc\");\r\n console.log(`this.files.length ${this.files.length}`);\r\n /*if (this.allowAltFileName) {\r\n for (let i = 0; i < this.files.length; i++) {\r\n // Comment to be sure new version\r\n this.files[i].name = this.fileNames.value[i].fileName;\r\n }\r\n }*/\r\n if (this.callback) {\r\n this.callback(this.files).subscribe(res => this.dialogRef.close(this.files));\r\n } else {\r\n this.dialogRef.close(this.files);\r\n }\r\n }\r\n}\r\n","<h2 mat-dialog-title>\r\n Association d'un nouveau document</h2>\r\n\r\n<mat-dialog-content>\r\n\r\n <gloww-upload-file [(ngModel)]=\"files\" [acceptMime]=\"acceptMime\" [multiple]=\"multiple\" [allowAltFileName]=\"allowAltFileName\"></gloww-upload-file>\r\n\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-raised-button (click)=\"cancel()\">Close</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">Save</button>\r\n</mat-dialog-actions>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'glw-search-form',\n templateUrl: './search-form.component.html',\n styleUrls: ['./search-form.component.scss']\n})\r\nexport class SearchFormComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'glw-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\r\nexport class HeaderComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { AfterContentInit, Component, ContentChildren, OnInit, QueryList } from '@angular/core';\r\nimport { MatColumnDef } from '@angular/material/table';\r\n\r\n@Component({\n selector: 'glw-result-table',\n templateUrl: './result-table.component.html',\n styleUrls: ['./result-table.component.scss']\n})\r\nexport class ResultTableComponent implements OnInit, AfterContentInit {\r\n\t@ContentChildren(MatColumnDef) columnDefs: QueryList<MatColumnDef>;\r\n\tconstructor() { }\r\n\r\n\tngAfterContentInit(): void {\r\n\t\tconsole.log(this.columnDefs.length);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\r\n\r\n@Component({\n selector: 'glw-filter-form',\n templateUrl: './filter-form.component.html',\n styleUrls: ['./filter-form.component.css'],\n imports: [MatCard, MatCardContent, MatCardActions, MatButton, MatIcon]\n})\r\nexport class FilterFormComponent implements OnInit {\r\n @Output() filter = new EventEmitter<any>();\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n onFilter() {\r\n this.filter.emit(\"xxx\");\r\n }\r\n\r\n}\r\n","<mat-card appearance=\"outlined\">\r\n <mat-card-content>\r\n <ng-content></ng-content>\r\n </mat-card-content>\r\n <mat-card-actions align=\"end\">\r\n <button mat-stroked-button color=\"accent\" (click)=\"onFilter()\">\r\n <mat-icon>search</mat-icon>\r\n Filter\r\n </button>\r\n </mat-card-actions>\r\n</mat-card>","export class Oauthassociation {\r\n public idOAuth: number;\r\n public provider: string;\r\n public name: string;\r\n public value: string;\r\n\r\n public toString() {\r\n return this.provider;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationServiceConfig {\r\n currentUserVariableName?= 'currentuser';\r\n authenticationUrl?= `/admin/authusers/authenticate`;\r\n changePasswordUrl?= `/admin/authusers/changePassword`;\r\n askResetPasswordCodeUrl?= `/admin/authusers/askResetPasswordCode`;\r\n resetPassworUrl?= `/admin/authusers/resetPassword`;\r\n environment?= '__GlowwSecurity__';\r\n showDomain?= false;\r\n askGSM?= false;\r\n googleClientId?= '';\r\n facebookClientId?= '';\r\n amazonClientId?= '';\r\n microsoftClientId?= '';\r\n}\r\n","import { Oauthassociation } from './../Models/oauthassociation';\r\nimport { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\n\r\nimport { User } from '../Models/user';\r\nimport { AuthenticationServiceConfig } from './authentication-service-config';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationService {\r\n private currentUserSubject: BehaviorSubject<User>;\r\n public currentUser: Observable<User>;\r\n public currentUserVariableName: string;\r\n public authenticationUrl: string;\r\n public changePasswordUrl: string;\r\n public askResetPasswordCodeUrl: string;\r\n public resetPasswordUrl: string;\r\n public OAuthGetProvidersUrl: string;\r\n public OAuthAskCodeUrl: string;\r\n public OAuthAssociationUrl: string;\r\n public OAuthGetAssociationsUrl: string;\r\n public OAuthDeleteAssociationUrl: string;\r\n public environment: string;\r\n public showdomain: boolean;\r\n public hasLocalStorage = false;\r\n\r\n constructor(private http: HttpClient, @Inject(PLATFORM_ID) private platformId: any, @Optional() config?: AuthenticationServiceConfig) {\r\n this.hasLocalStorage = isPlatformBrowser(this.platformId);\r\n if (config && config.currentUserVariableName) { this.currentUserVariableName = config.currentUserVariableName; } else { this.currentUserVariableName = 'currentUser'; }\r\n if (config && config.authenticationUrl) { this.authenticationUrl = config.authenticationUrl; } else { this.authenticationUrl = `/admin/authusers/authenticate`; }\r\n if (config && config.changePasswordUrl) { this.changePasswordUrl = config.changePasswordUrl; } else { this.changePasswordUrl = this.authenticationUrl.replace('authenticate', 'changePassword'); }\r\n if (config && config.askResetPasswordCodeUrl) { this.askResetPasswordCodeUrl = config.askResetPasswordCodeUrl; } else { this.askResetPasswordCodeUrl = this.authenticationUrl.replace('authenticate', 'askResetPasswordCode'); }\r\n if (config && config.resetPassworUrl) { this.resetPasswordUrl = config.resetPassworUrl; } else { this.resetPasswordUrl = this.authenticationUrl.replace('authenticate', 'resetPassword'); }\r\n this.OAuthGetProvidersUrl = this.authenticationUrl.replace('authenticate', 'OAuthGetProviders');\r\n this.OAuthAskCodeUrl = this.authenticationUrl.replace('authenticate', 'OAuthAskCode');\r\n this.OAuthAssociationUrl = this.authenticationUrl.replace('authenticate', 'OAuthAssociation');\r\n this.OAuthGetAssociationsUrl = this.authenticationUrl.replace('authenticate', 'OAuthGetAssociations');\r\n this.OAuthDeleteAssociationUrl = this.authenticationUrl.replace('authenticate', 'OAuthDeleteAssociation');\r\n if (config && config.environment) { this.environment = config.environment; }\r\n if (config && config.showDomain) { this.showdomain = config.showDomain; }\r\n if (this.hasLocalStorage) { // Angular Universal\r\n this.currentUserSubject = new BehaviorSubject<User>(JSON.parse(localStorage.getItem(this.currentUserVariableName)));\r\n this.currentUser = this.currentUserSubject.asObservable();\r\n }\r\n }\r\n\r\n public get currentUserValue(): User {\r\n if (!this.currentUserSubject) { return null; } // Angular Universsal\r\n return this.currentUserSubject.value;\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (!this.currentUserSubject) { return null; } // Angular Universsal\r\n return this.currentUserSubject.value !== null;\r\n }\r\n\r\n login(domain: string, username: string, password: string) {\r\n const formData = new FormData();\r\n if (this.showdomain) { formData.set('domain', domain); }\r\n formData.set('environment', this.environment);\r\n formData.set('username', username);\r\n formData.set('password', password);\r\n return this.http.post<any>(this.authenticationUrl, formData, { observe: 'response' })\r\n .pipe(map(resp => {\r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n const user: any = resp.body;\r\n if (this.hasLocalStorage) { localStorage.setItem(this.currentUserVariableName, JSON.stringify(user)); }\r\n this.currentUserSubject.next(user);\r\n return user;\r\n }));\r\n }\r\n\r\n changePassword(domain: string, username: string, oldpassword: string, newpassword: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n domain: this.currentUserValue.domain ?? '',\r\n username: this.currentUserValue.username,\r\n newpassword,\r\n oldpassword,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.changePasswordUrl, { params });\r\n }\r\n\r\n logout() {\r\n // remove user from local storage to log user out\r\n if (this.hasLocalStorage) { localStorage.removeItem(this.currentUserVariableName); }\r\n this.currentUserSubject.next(null);\r\n }\r\n\r\n askResetPasswordCode(domain: string, firstname: string, lastname: string, email: string, gsm: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n domain: '',\r\n firstname,\r\n lastname,\r\n email,\r\n gsm,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.askResetPasswordCodeUrl, { params });\r\n }\r\n\r\n resetPassword(email: string, code: string, password: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n email,\r\n code,\r\n password,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.resetPasswordUrl, { params });\r\n }\r\n\r\n getOAuthProviders() {\r\n return this.http.get<string[]>(this.OAuthGetProvidersUrl);\r\n }\r\n\r\n OAuthAskCode(environment: string, login: string, idOauth: number, provider: string, name: string, value: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment,\r\n login,\r\n idOauth,\r\n provider,\r\n name,\r\n value\r\n }\r\n });\r\n return this.http.get<any>(this.OAuthAskCodeUrl, { params });\r\n }\r\n\r\n OAuthAssociation(environment: string, code: string, idOauth: number, provider: string, name: string, value: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment,\r\n code,\r\n idOauth,\r\n provider,\r\n name,\r\n value\r\n }\r\n });\r\n return this.http.get<any>(this.OAuthAssociationUrl, { params }).pipe(\r\n map(resp => {\r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n console.log(\"OAuthAuthentication\");\r\n console.log(resp);\r\n const user: any = resp;\r\n if (this.hasLocalStorage) { localStorage.setItem(this.currentUserVariableName, JSON.stringify(user)); }\r\n this.currentUserSubject.next(user);\r\n return user;\r\n })\r\n );\r\n }\r\n getOAuthAssociations() {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<Oauthassociation[]>(this.OAuthGetAssociationsUrl, { params }).pipe(\r\n tap((value) => console.log(value)),\r\n map((value) => value.map(item => Object.assign(new Oauthassociation(), item))),\r\n tap((value) => console.log(value))\r\n );\r\n }\r\n\r\n OAuthDeleteAssociation(provider: string, idOAuth: number) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment: this.environment,\r\n provider,\r\n idOAuth\r\n }\r\n });\r\n return this.http.get(this.OAuthDeleteAssociationUrl, { params });\r\n }\r\n\r\n}\r\n","import { DisplayObjectsConfiguration } from './../display-objects-configuration';\r\nimport { SearchFormComponent } from '../search-form/search-form.component';\r\n//import { Reference } from '@angular/compiler/src/render3/r3_ast';\r\nimport { Component, ContentChild, OnInit, ViewChild, AfterViewInit, ElementRef, Directive, ChangeDetectorRef, Injector, ChangeDetectionStrategy, AfterContentInit, QueryList, ContentChildren, OnChanges, SimpleChanges, Input, TemplateRef, Inject } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup, UntypedFormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, Sort } from '@angular/material/sort';\r\nimport { MatColumnDef, MatTable, MatTableDataSource, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow } from '@angular/material/table';\r\nimport { combineLatest, forkJoin, ObjectUnsubscribedError, observable, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { HeaderComponent } from '../header/header.component';\r\nimport { ResultTableComponent } from '../result-table/result-table.component';\r\nimport { interval } from 'rxjs';\r\nimport { HttpErrorResponse, HttpEvent, HttpEventType, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Location, NgClass } from '@angular/common';\r\nimport { ActivatedRoute, Data, NavigationEnd, Router, RouterLink } from '@angular/router';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { GlowwService } from '../../Services/gloww.service';\r\nimport { AuthenticationService } from '../../gloww-security/Services/authentication.service';\r\nimport { Moment } from 'moment';\r\nimport { map, catchError, mergeMap, tap, filter, switchMap, take } from 'rxjs/operators';\r\nimport { FilterFormComponent } from '../filter-form/filter-form.component';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { MatError, MatFormField } from '@angular/material/input';\nimport { MatSelect, MatOption } from '@angular/material/select';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\nexport interface Action {\r\n icon: any;\r\n name?: string;\r\n routerLinkFct?: (obj) => string[];\r\n display?: (obj) => boolean;\r\n};\r\n\r\n@Component({\n selector: 'glw-display-objects',\n templateUrl: './display-objects.component.html',\n styleUrls: ['./display-objects.component.scss'],\n imports: [MatCard, MatCardContent, MatError, FormsModule, ReactiveFormsModule, MatFormField, MatSelect, MatOption, MatCardActions, MatButton, MatIcon, MatTable, MatSort, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, RouterLink, NgClass, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow, MatPaginator, MatProgressSpinner]\n})\r\nexport class DisplayObjectsComponent<TObj> implements OnInit, AfterContentInit, AfterViewInit, OnChanges {\r\n\r\n @ContentChild(HeaderComponent) header: HeaderComponent;\r\n @ContentChild(SearchFormComponent) searchFormLayout: SearchFormComponent;\r\n @ContentChild(FilterFormComponent) filterFormLayout: FilterFormComponent;\r\n @ContentChild(ResultTableComponent) resultLayout: ResultTableComponent;\r\n @ViewChild(MatTable, { static: false }) table: MatTable<any>;\r\n @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;\r\n @ViewChild(MatSort, { static: false }) sort: MatSort;\r\n\r\n // after the <ng-content> has been initialized, the column definitions are available.\r\n // All that's left is to add them to the table ourselves:\r\n @Input() configuration: DisplayObjectsConfiguration<TObj>;\r\n @Input() displayObjLink: (obj: TObj, action?: string) => (string | string[]);\r\n @Input() canDisplayObj: ((user: any, obj: TObj, action?: string) => boolean) | boolean = false;\r\n @Input() canEdit: ((user: any, obj: TObj) => boolean) | boolean = true;\r\n @Input() canDelete: ((user: any, obj: TObj) => boolean) | boolean = true;\r\n @Input() canAdd: ((user: any) => boolean) | boolean = true;\r\n @Input() form: UntypedFormGroup;\r\n @Input() SearchForm: any;\r\n @Input() searchRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() postRequest: (obj?: TObj | any) => Observable<TObj>;\r\n @Input() deleteRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() putRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() maxrows: string[];\r\n @Input() mandatoryParams: object = {};\r\n @Input() actions = [];\r\n @Input() dialogConfig: object = {};\r\n ///////@Input() fileFields: string[];\r\n @Input() parent: any;\r\n\r\n @Input() columns: () => string[];\r\n @Input() objectName: string;\r\n @Input() primaryKey: string | string[];\r\n @Input() Editor: TemplateRef<any>;\r\n @Input() AddEditor: TemplateRef<any>;\r\n columnsToDisplay = [];\r\n dataSource: MatTableDataSource<TObj>;\r\n displayform = true;\r\n displayresult = false;\r\n queryParams: any = {};\r\n resultException: string;\r\n currentUser: any;\r\n form2: UntypedFormGroup;\r\n data: object;\r\n routeParams: object;\r\n glowwService: GlowwService;\r\n\r\n constructor(@Inject('glowwService') glowwService: GlowwService, private changeDetectorRef: ChangeDetectorRef, private dialog: MatDialog, private router: Router, private location: Location, private authenticationService: AuthenticationService, private formBuilder: UntypedFormBuilder, private route: ActivatedRoute) {\r\n this.glowwService = glowwService;\r\n const component = this;\r\n this.currentUser = (this.authenticationService.currentUserValue as any).UserInfo;\r\n this.form2 = this.formBuilder.group({\r\n _MaxRow_: [null]\r\n });\r\n //debugger;\r\n this.data = this.route.snapshot.data;\r\n this.routeParams = this.route.snapshot.params;\r\n route.params.subscribe(routeParams => {\r\n this.routeParams = routeParams;\r\n if (this.displayresult) this.Search();\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n }\r\n\r\n InitRequest() {\r\n if (!this.searchRequest) {\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n if (!this.postRequest) {\r\n this.postRequest = this.glowwService[`post${this.objectName}`];\r\n }\r\n if (!this.deleteRequest) {\r\n this.deleteRequest = this.glowwService[`delete${this.objectName}`];\r\n }\r\n if (!this.putRequest) {\r\n this.putRequest = this.glowwService[`put${this.objectName}`];\r\n }\r\n }\r\n\r\n sortData(sort: Sort) {\r\n this.sort.sort({ id: sort.active, start: sort.direction ? sort.direction : \"asc\", disableClear: true });\r\n //this.sort.sortChange.emit(sort);\r\n }\r\n\r\n\r\n\r\n getValue4Sort(item: any, header: string | object): string | number {\r\n let fct = \"\";\r\n let parts = [];\r\n if (typeof header === 'object') {\r\n fct = header[\"fct\"];\r\n parts = header[\"parts\"];\r\n } else {\r\n console.log(`previewMatchSortingFn ${item} - ${header}`);\r\n const headerFct = header.split(\"---\");\r\n fct = null;\r\n if (headerFct.length === 2) { fct = headerFct[1]; }\r\n parts = headerFct[0].split(\".\");\r\n }\r\n let res = item;\r\n for (let i = 0; i < parts.length; i++) {\r\n res = res[parts[i]];\r\n if (!res) return null;\r\n }\r\n switch (fct) {\r\n case \"insensitive\":\r\n return res.toString().toLowerCase();\r\n }\r\n return res;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.objectName) this.objectName = this.parent.objectName;\r\n if (!this.actions || this.actions.length === 0) this.actions = this.parent.actions;\r\n if (!this.primaryKey) this.primaryKey = this.parent.primaryKey;\r\n if (!this.columns) this.columns = this.parent.columnsToDisplay;\r\n if (!this.Editor) this.Editor = this.parent.editor;\r\n if (!this.AddEditor) this.AddEditor = this.parent.addEditor ?? this.parent.editor;\r\n ///////if (!this.fileFields) this.fileFields = this.parent.fileFields;\r\n if (!this.maxrows) this.maxrows = this.parent.maxrows;\r\n\r\n this.InitRequest();\r\n if (this.maxrows?.length > 0) { this.form.addControl(\"_MaxRow_\", new UntypedFormControl(null)); }\r\n //debugger;\r\n console.log(`INIT : formLayout:${this.searchFormLayout}-displayform:${this.displayform}`)\r\n if (!this.searchFormLayout && this.resultLayout) {\r\n this.displayform = false; this.displayresult = true;\r\n }\r\n if (Object.keys(this.data).length > 0 && (this.data[\"__mode\"] !== \"edit\")) {\r\n this.displayform = false; this.displayresult = true;\r\n }\r\n if (Object.keys(this.route.snapshot.params).length > 0 && (this.data[\"__mode\"] !== \"edit\")) {\r\n this.displayform = false; this.displayresult = true;\r\n }\r\n this.glowwService.basePathChange.subscribe(newUrl => {\r\n console.log(`basePathChange ${newUrl}: fromLayout:${this.searchFormLayout}-displayform:${this.displayform}`);\r\n this.parent.form?.reset();\r\n if (!this.searchFormLayout && this.resultLayout) {\r\n this.displayform = false; this.displayresult = true;\r\n }\r\n if (this.displayresult) { this.Search(); }\r\n });\r\n if (this.displayresult) { this.Search(); }\r\n }\r\n ngAfterContentInit(): void {\r\n\r\n }\r\n\r\n private navSubscription = new Subscription();\r\n\r\n ngOnInit(): void {\r\n this.navSubscription = this.router.events.subscribe((e: any) => {\r\n if (e instanceof NavigationEnd) {\r\n this.parent.form?.reset();\r\n this.displayform = true; this.displayresult = false;\r\n this.changeDetectorRef.detectChanges();\r\n this.dataSource = null;\r\n if (!this.searchFormLayout && this.resultLayout) {\r\n this.displayform = false; this.displayresult = true;\r\n }\r\n if (this.displayresult) { this.Search(); }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.navSubscription?.unsubscribe(); // this prevents a memory leak\r\n }\r\n\r\n Init(data?: Data) {\r\n if ((data && Object.keys(data).length > 0) || this.displayresult) {\r\n this.Search(data);\r\n }\r\n }\r\n\r\n currentFilter: (data: TObj, filter: string) => boolean = null;\r\n SetFilterPredicate() {\r\n this.dataSource.filterPredicate = function(record, filterString) {\r\n console.log(filterString);\r\n var filter = JSON.parse(filterString);\r\n let isMatch = true;\r\n const keys = Object.keys(filter);\r\n for (let key of keys) {\r\n let value = filter[key];\r\n if (!value) continue;\r\n const re = /(?<Field>.+?)(?=___|$)(?:___(?<Option>.+))?/m;\r\n const keyplus = re.exec(key);\r\n let m;\r\n\r\n let option = \"\";\r\n if (keyplus) {\r\n console.log(`Regex OK ${keyplus}`);\r\n key = keyplus[1];\r\n option = keyplus[2]??\"\";\r\n }\r\n console.log(`${key} - ${option}`)\r\n if (key == \"AllFields\") {\r\n const filterValue = filter[\"AllFields\"].trim().toLowerCase();\r\n const dataStr = Object.keys(record)\r\n .reduce((currentTerm: string, key: string) => {\r\n return currentTerm + (record as { [key: string]: any })[key] + '◬';\r\n }, '')\r\n isMatch = (dataStr.toLowerCase().indexOf(filterValue) != -1);\r\n } else {\r\n console.log(`${key} ${record[key as string]} `);\r\n let fieldValue = record[key as string] ?? \"\";\r\n if (option.includes(\"i\")) {\r\n fieldValue = fieldValue.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n if (option.includes(\"c\")) {\r\n isMatch = fieldValue.includes(value);\r\n } else {\r\n isMatch = (fieldValue == value);\r\n }\r\n\r\n\r\n console.log(`${key} ${record[key as string]} ${value} : ${isMatch}`);\r\n }\r\n if (!isMatch) return false;\r\n }\r\n return isMatch;\r\n }\r\n }\r\n\r\n\r\n Search(data?: Data) {\r\n console.log(`Search ${this.glowwService.InternalBasePath}`);\r\n if (data) this.data = data;\r\n this.displayresult = true;\r\n this.displayform = false;\r\n this.resultException = null;\r\n\r\n if (this.data) {\r\n Object.keys(this.data).forEach(name => {\r\n this.queryParams[name] = this.data[name];\r\n });\r\n }\r\n if (this.routeParams) {\r\n Object.keys(this.routeParams).forEach(name => {\r\n this.queryParams[name] = this.routeParams[name];\r\n });\r\n }\r\n\r\n if (this.mandatoryParams) {\r\n Object.keys(this.mandatoryParams).forEach(name => {\r\n this.queryParams[name] = this.queryParams[name];\r\n });\r\n }\r\n this.queryParams['__guid'] = (Math.random().toString()).substring(2);\r\n\r\n console.log(\"Before searchRequest\");\r\n //debugger;\r\n this.searchRequest.call(this.glowwService, this.queryParams).subscribe(r => {\r\n console.log(\"search done\");\r\n try {\r\n this.dataSource = new MatTableDataSource<TObj>(r);\r\n this.SetFilterPredicate();\r\n } catch (ex) {\r\n alert(`${ex}`);\r\n }\r\n console.log(\"dataSource changed\");\r\n this.changeDetectorRef.detectChanges();\r\n this.UpdateTable();\r\n },\r\n error => {\r\n this.displayresult = false;\r\n this.displayform = true;\r\n this.resultException = error;\r\n });\r\n }\r\n\r\n clean(obj) {\r\n for (const propName in obj) {\r\n if (obj[propName] === null || obj[propName] === undefined) {\r\n delete obj[propName];\r\n }\r\n }\r\n }\r\n\r\n onSearch() {\r\n this.queryParams = {};\r\n const searchData = this.parent.form.value.searchData;\r\n if (searchData) {\r\n Object.keys(searchData).forEach(name => {\r\n const val = searchData[name];\r\n this.queryParams[name] = val;\r\n });\r\n }\r\n if (this.form2.value._MaxRow_) { this.queryParams._MaxRow_ = this.form2.value._MaxRow_; }\r\n this.clean(this.queryParams);\r\n const params = new HttpParams({ fromObject: this.queryParams });\r\n const currentstate = this.location.getState();\r\n this.location.replaceState(this.router.url, params.toString());\r\n this.Search();\r\n\r\n }\r\n\r\n onFilter() {\r\n\r\n\r\n }\r\n\r\n UpdateDataSource(r: TObj[]) {\r\n this.dataSource = new MatTableDataSource<TObj>(r);\r\n this.SetFilterPredicate();\r\n this.changeDetectorRef.detectChanges();\r\n\r\n this.UpdateTable();\r\n\r\n }\r\n\r\n UpdateTable() {\r\n console.log(\"UpdateTable()\");\r\n if (this.dataSource) {\r\n if (!this.table) {\r\n console.log('!this.table');\r\n return;\r\n }\r\n this.resultLayout.columnDefs.forEach(columnDef => this.table.addColumnDef(columnDef));\r\n this.dataSource.paginator = this.paginator;\r\n this.dataSource.sort = this.sort;\r\n this.dataSource.sortingDataAccessor = this.getValue4Sort;\r\n console.log(`After this.dataSource.sort = ${this.parent.sort}`);\r\n this.columnsToDisplay = this.columns();\r\n }\r\n }\r\n\r\n canDisplayObjThis(obj, action?) {\r\n try {\r\n if (!this.displayObjLink) { return false; }\r\n if (typeof this.canDisplayObj === 'boolean') { return this.canDisplayObj; }\r\n return this.canDisplayObj(this.currentUser, obj, action);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n canAddThis() {\r\n try {\r\n if (!this.canAdd) { return false; }\r\n if (typeof this.canAdd === 'boolean') { return this.canAdd; }\r\n return this.canAdd(this.currentUser);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n\r\n canEditThis(obj) {\r\n try {\r\n if (!this.canEdit) { return false; }\r\n if (typeof this.canEdit === 'boolean') { return this.canEdit; }\r\n return this.canEdit(this.currentUser, obj);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n\r\n canDeleteThis(obj) {\r\n try {\r\n if (!this.canDelete) { return false; }\r\n if (typeof this.canDelete === 'boolean') { return this.canDelete; }\r\n return this.canDelete(this.currentUser, obj);\r\n } catch (ex) {\r\n console.log(ex);\r\n return false;\r\n }\r\n }\r\n\r\n displayObjLinkThis(obj, action?) {\r\n if (!this.displayObjLink) { return null; }\r\n return this.displayObjLink(obj, action);\r\n }\r\n\r\n\r\n isString(value): boolean {\r\n return typeof value === 'string' || value instanceof String;\r\n }\r\n getPrimaryKey(obj: object | TObj): object[] {\r\n let res = [];\r\n if (this.isString(this.primaryKey)) {\r\n console.log(\"string\");\r\n res.push(obj[this.primaryKey as string]);\r\n } else {\r\n console.log(\"string[]\");\r\n (this.primaryKey as string[]).forEach(key => res.push(obj[key]));\r\n }\r\n return res;\r\n }\r\n\r\n _saveObj(obj: any): Observable<any> {\r\n var subject = new Subject<any>();\r\n this.postRequest.call(this.glowwService, obj).subscribe(\r\n data => {\r\n const tmp = this.dataSource.data;\r\n tmp.push(data);\r\n this.dataSource.data = tmp;\r\n subject.next(data);\r\n },\r\n error => {\r\n alert(`Unable to add Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n subject.error(error);\r\n }\r\n );\r\n return subject;\r\n }\r\n _saveFile(fileField: string, obj: any, file: any): Observable<any> {\r\n const formData = new FormData();\r\n formData.append('file', file.data);\r\n return this.glowwService[`post${this.objectName}${fileField}`].call(this.glowwService, this.getPrimaryKey(obj), formData).pipe(\r\n tap((event: HttpEvent<any>) => {\r\n switch (event.type) {\r\n case HttpEventType.UploadProgress:\r\n file.progress = Math.round(event.loaded * 100 / (event.total ?? 1));\r\n file.inProgress = file.progress !== 100;\r\n break;\r\n case HttpEventType.Response:\r\n file.progress = 100;\r\n file.status = \"Done\";\r\n file.inProgress = false;\r\n break;\r\n }\r\n }),\r\n filter((event: HttpEvent<any>) => {\r\n console.log(`filter ${event.type}`);\r\n return event.type === HttpEventType.Response\r\n }),\r\n map((event: HttpResponse<any>) => {\r\n console.log(`map ${event.type}`);\r\n const tmp = this.dataSource.data;\r\n tmp[tmp.indexOf(obj)] = event.body;\r\n this.dataSource.data = tmp;\r\n console.log(`after replace...`);\r\n return event.body;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n file.inProgress = false;\r\n file.status = \"Error\";\r\n console.log(`${file.data.name} upload failed.`);\r\n //subject.error(error);\r\n return of(`${file.data.name} upload failed.`);\r\n })\r\n );\r\n }\r\n\r\n AddObj() {\r\n const dialogConfig = new MatDialogConfig();\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.maxHeight = \"95%\";\r\n dialogConfig.maxWidth = \"95%\";\r\n dialogConfig.height = \"100%\"\r\n if (this.dialogConfig) {\r\n Object.keys(this.dialogConfig).forEach(\r\n name => {\r\n dialogConfig[name] = this.dialogConfig[name];\r\n }\r\n );\r\n }\r\n let args = {};\r\n Object.keys(this.route.snapshot?.params).forEach(key => {\r\n args[key] = this.route.snapshot?.params[key];\r\n dialogConfig.data = args;\r\n });\r\n\r\n\r\n const dlg = this.dialog.open(this.AddEditor, dialogConfig);\r\n dlg.componentInstance.callback = (\r\n data => {\r\n let datacopy = { ...data };\r\n const fileFields = (this.Editor as any).fileFields;\r\n console.log(`fileFields ${fileFields?.length}`);\r\n if (fileFields?.length == 1) {\r\n // Un seul champ, il peut être multiple\r\n const fileField = fileFields[0];\r\n console.log(`fileField ${fileField}`);\r\n const files = datacopy[fileField];\r\n delete datacopy[fileField];\r\n const allobs: { [key: string]: Observable<any>; } = {}\r\n files.forEach(file => {\r\n if (file.statut !== 'Done' && file.statut !== 'Error') {\r\n const obs = this._saveObj(datacopy).pipe(\r\n switchMap(newdata => this._saveFile(fileField, newdata, file)\r\n ));\r\n console.log(`file.fileName ${file.fileName}`);\r\n allobs[file.fileName] = obs;\r\n }\r\n });\r\n return combineLatest(allobs).pipe(take(1));\r\n\r\n } else if (fileFields?.length > 1) {\r\n // Plusieurs champs file, il ne peut y avoir qu'une seul fichier par champ.\r\n const fields = {};\r\n fileFields.forEach(ff => {\r\n fields[ff] = datacopy[ff];\r\n delete datacopy[ff];\r\n return this._saveObj(datacopy).pipe(\r\n mergeMap(newdata => {\r\n var allobs: Observable<any>[] = [];\r\n Object.entries(fields).forEach(([fileField, files]: [string, any[]]) => {\r\n if (files.length > 0) {\r\n allobs.push(this._saveFile(fileField, newdata, files[0]));\r\n }\r\n })\r\n return forkJoin(allobs); // TODO : PAS TERMINE... JAMAIS UTILISE...\r\n }));\r\n })\r\n } else {\r\n // Form sans fichier\r\n return this._saveObj(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DeleteObj(obj) {\r\n if (confirm('Are you sure you want to delete this objet ? ')) {\r\n this.deleteRequest.apply(this.glowwService, this.getPrimaryKey(obj)).subscribe(\r\n p => {\r\n const i = this.dataSource.data.indexOf(obj);\r\n const tmp = this.dataSource.data;\r\n tmp.splice(i, 1);\r\n this.dataSource.data = tmp;\r\n },\r\n error => {\r\n alert(`Unable to delete Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n }\r\n );\r\n }\r\n }\r\n\r\n _updateObj(current: any, newData: any): Observable<any> {\r\n let args: object[] = this.getPrimaryKey(current); args.push(newData);\r\n var subject = new Subject<any>();\r\n this.putRequest.apply(this.glowwService, args).subscribe(\r\n data => {\r\n const i = this.dataSource.data.indexOf(current);\r\n const tmp = this.dataSource.data;\r\n tmp[i] = data;\r\n this.dataSource.data = tmp;\r\n subject.next(data);\r\n },\r\n error => {\r\n alert(`Unable to update Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n subject.error(error);\r\n }\r\n );\r\n return subject;\r\n }\r\n\r\n\r\n EditObj(obj: TObj) {\r\n const dialogConfig = new MatDialogConfig();\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.maxHeight = \"95%\";\r\n dialogConfig.maxWidth = \"95%\";\r\n dialogConfig.height = \"100%\"\r\n\r\n if (this.dialogConfig) {\r\n Object.keys(this.dialogConfig).forEach(\r\n name => {\r\n dialogConfig[name] = this.dialogConfig[name];\r\n }\r\n );\r\n }\r\n const current = { ...obj };\r\n dialogConfig.data = obj;\r\n const dlg = this.dialog.open(this.Editor, dialogConfig);\r\n dlg.componentInstance.callback = (\r\n data => {\r\n let datacopy = { ...data };\r\n const fileFields = (this.Editor as any).fileFields;\r\n if (fileFields?.length == 1) {\r\n // Un seul champ, il peut être multiple\r\n const fileField = fileFields[0];\r\n const files = datacopy[fileField];\r\n delete datacopy[fileField];\r\n const allobs: { [key: string]: Observable<any>; } = {}\r\n files.forEach(file => {\r\n if (file.statut !== 'Done' && file.statut !== 'Error') {\r\n const obs = this._updateObj(current, datacopy).pipe(\r\n switchMap(newdata => this._saveFile(fileField, newdata, file)\r\n ));\r\n allobs[file.fileName] = obs;\r\n }\r\n });\r\n return combineLatest(allobs).pipe(take(1));\r\n\r\n } else if (fileFields?.length > 1) {\r\n // Plusieurs champs file, il ne peut y avoir qu'une seul fichier par champ.\r\n const fields = {};\r\n fileFields.forEach(ff => {\r\n fields[ff] = datacopy[ff];\r\n delete datacopy[ff];\r\n return this._updateObj(current, datacopy).pipe(\r\n mergeMap(newdata => {\r\n var allobs: Observable<any>[] = [];\r\n Object.entries(fields).forEach(([fileField, files]: [string, any[]]) => {\r\n if (files.length > 0) {\r\n allobs.push(this._saveFile(fileField, newdata, files[0]));\r\n }\r\n })\r\n return forkJoin(allobs); // TODO : PAS TERMINE... JAMAIS UTILISE...\r\n }));\r\n })\r\n } else {\r\n // Form sans fichier\r\n return this._updateObj(current, data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n}\r\n","<div>\n <ng-content select=\"glw-header\"></ng-content>\n</div>\n\n@if (displayform) {\n <div>\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n @if (resultException) {\n <mat-error>\n Unable to query : {{resultException}}\n </mat-error>\n }\n <ng-content select=\"glw-search-form\"></ng-content>\n <!--<ng-container *ngComponentOutlet=\"SearchForm; injector: objInjector\"></ng-container>-->\n @if (maxrows) {\n <div [formGroup]=\"form2\">\n <br />\n <mat-form-field>\n <mat-select placeholder=\"MaxRow\" formControlName=\"_MaxRow_\">\n @for (maxrow of maxrows; track maxrow) {\n <mat-option [value]=\"maxrow\">\n @if (maxrow) {\n <span>{{maxrow}} objects</span>\n }\n @if (!maxrow) {\n <span> Default</span>\n }\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n }\n </mat-card-content>\n <mat-card-actions>\n <button mat-stroked-button color=\"accent\" (click)=\"onSearch()\">\n <mat-icon>search</mat-icon>\n Search\n </button>\n </mat-card-actions>\n </mat-card>\n </div>\n}\n\n<div [hidden]=\"!displayresult\">\n <!--*ngIf=\"displayresult\"-->\n <div class=\"mat-elevation-z8\" [hidden]=\"!dataSource\">\n <ng-content select=\"[filter]\"></ng-content>\n\n <!--*ngIf=\"dataSource; else Spinner\"-->\n <table mat-table [dataSource]=\"dataSource\" matSort>\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef>\n @if (canAddThis()) {\n <i class=\"fal fa-plus\" (click)=\"AddObj()\">\n </i>\n }\n </th>\n <td mat-cell *matCellDef=\"let obj\">\n @if (canDisplayObjThis(obj)) {\n <i class=\"fal fa-eye\" [routerLink]=\"displayObjLinkThis(obj)\">\n </i>\n }\n @for (action of actions; track action) {\n @if (action.icon.icon && (!action.display || action.display(obj, action.name))) {\n <i [ngClass]=\"action.icon\" [routerLink]=\"action.routerLinkFct(obj)\">\n </i>\n }\n @if (!action.icon.icon && (!action.display || action.display(obj, action.name))) {\n <i [ngClass]=\"action.icon\" [routerLink]=\"action.routerLinkFct(obj)\"></i>\n }\n }\n @if (canDeleteThis(obj)) {\n <i class=\"fal fa-trash-alt\" (click)=\"DeleteObj(obj)\">\n </i>\n }\n @if (canEditThis(obj)) {\n <i class=\"fal fa-pencil\" (click)=\"EditObj(obj)\">\n </i>\n }\n </td>\n </ng-container>\n <ng-content select=\"glw-result-table\"></ng-content>\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let myRowData; columns: columnsToDisplay\"></tr>\n </table>\n <mat-paginator pageSize=\"10\"></mat-paginator>\n </div>\n <div #Spinner [hidden]=\"dataSource\">\n <mat-spinner></mat-spinner>\n </div>\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'gloww-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, FormsModule, ReactiveFormsModule, MatFormField, MatInput, MatDialogActions, MatButton, SafeHtmlPipe]\n})\r\nexport class PromptComponent implements OnInit {\r\n title: string;\r\n message: string;\r\n form: UntypedFormGroup;\r\n\r\n constructor(public dialogRef: MatDialogRef<PromptComponent>, @Inject(MAT_DIALOG_DATA) public data: PromptModel, private formBuilder: UntypedFormBuilder) {\r\n // Update view with given values\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.form = this.formBuilder.group({\r\n prompt: [data.initialValue, data.required ? Validators.required : null],\r\n });\r\n }\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n onCancel(): void {\r\n // Close the dialog, return true\r\n this.dialogRef.close(false);\r\n }\r\n\r\n onOK(): void {\r\n // Close the dialog, return false\r\n this.dialogRef.close(this.form.value.prompt);\r\n }\r\n\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\nexport class PromptModel {\r\n constructor(public title: string, public message: string, public initialValue: string, public required: boolean) {\r\n }\r\n}\r\n","<h1 mat-dialog-title>\r\n {{title}}\r\n</h1>\r\n\r\n<div mat-dialog-content [formGroup]=\"form\">\r\n <p [innerHTML]=\"message | safeHtml\"></p>\r\n <mat-form-field>\r\n <input matInput placeholder=\"Prompt\" formControlName=\"prompt\" style=\"width: calc(100% - 32px);\">\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-dialog-actions>\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onOK()\">Yes</button>\r\n</mat-dialog-actions>\r\n","import { MonoTypeOperatorFunction } from 'rxjs';\r\nimport { delay as delayOperator, retryWhen, scan, tap } from 'rxjs/operators';\r\n\r\nexport function retryWithDelay<T>(\r\n delay: number,\r\n count = 1\r\n): MonoTypeOperatorFunction<T> {\r\n return (input) =>\r\n input.pipe(\r\n retryWhen((errors) =>\r\n errors.pipe(\r\n scan((acc, error) => ({ count: acc.count + 1, error }), {\r\n count: 0,\r\n error: undefined as any,\r\n }),\r\n tap((current) => {\r\n if (current.count > count) {\r\n throw current.error;\r\n }\r\n }),\r\n delayOperator(delay)\r\n )\r\n )\r\n );\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { switchMap, map, catchError, retry, delay } from 'rxjs/operators';\nimport { retryWithDelay } from './retry-with-delay';\n\n@Pipe({\n name: 'secure',\n standalone: true\n})\nexport class SecurePipe implements PipeTransform {\n\r\n constructor(private http: HttpClient, private domSanitizer: DomSanitizer) { }\r\n\r\n transform(url: any, delayVal?: any, retryVal?: any) {\r\n if (!delayVal) { delayVal = 5000; }\r\n if (!retryVal) { retryVal = 0; }\r\n return this.http\r\n // load the image as a blob\r\n .get(url, { responseType: 'blob' })\r\n // create an object url of that blob that we can use in the src attribute\r\n .pipe(\r\n map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))),\r\n retryWithDelay(delayVal, retryVal)\r\n );\r\n }\r\n}\r\n","import { Component, HostBinding, Inject, Input, OnInit, AfterViewInit } from '@angular/core';\r\nimport { NavItem } from '../../Models/nav-item';\r\nimport { Router, RouterLink } from '@angular/router';\r\nimport { NavService } from '../../Services/nav.service';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { GlowwService } from '../../Services/gloww.service';\nimport { async } from 'rxjs';\nimport { NgStyle, NgClass, AsyncPipe } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatListItem, MatListItemIcon, MatListItemTitle } from '@angular/material/list';\n\r\n@Component({\n selector: 'gloww-menu-list-item',\n templateUrl: './menu-list-item.component.html',\n styleUrls: ['./menu-list-item.component.scss'],\n animations: [\n trigger('indicatorRotate', [\n state('collapsed', style({ transform: 'rotate(0deg)' })),\n state('expanded', style({ transform: 'rotate(180deg)' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)'))\n ])\n ],\n imports: [NgStyle, NgClass, RouterLink, MatIcon, MatListItem, MatListItemIcon, MatListItemTitle, AsyncPipe]\n})\nexport class MenuListItemComponent implements OnInit, AfterViewInit {\n\r\n private _expanded: boolean = false;\r\n get expanded(): boolean {\r\n return this._expanded;\r\n }\r\n set expanded(value: boolean) {\r\n console.log(\"change expanded\");\r\n this._expanded = value;\r\n }\r\n\r\n @HostBinding('attr.aria-expanded') ariaExpanded = this.expanded;\r\n @Input() item: NavItem;\r\n @Input() depth: number;\r\n glowwService: GlowwService;\r\n _disabled: Promise<boolean>;\r\n _hidden: Promise<boolean>;\r\n\r\n\r\n constructor(@Inject('glowwService') glowwService: GlowwService, public navService: NavService, public router: Router) {\r\n this.glowwService = glowwService;\r\n if (this.depth === undefined) {\r\n this.depth = 0;\r\n }\r\n }\r\n ngAfterViewInit(): void {\r\n this._disabled = this.getDisabledPromise();\r\n this._hidden = this.getHiddenPromise();\r\n this.glowwService.basePathChange.subscribe(newUrl => {\r\n console.log(`basePathChange in menu ${newUrl}`);\r\n this._disabled = this.getDisabledPromise();\r\n this._hidden = this.getHiddenPromise();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n onItemSelected(item: NavItem) {\r\n if (item.children && item.children.length) {\r\n this.expanded = !this.expanded;\r\n }\r\n }\r\n\r\n isActive(item: NavItem) {\r\n let route = this.item.route as string;\r\n if (typeof this.item.route === 'function') {\r\n const routefct: () => string | string[] = this.item.route;\r\n route = routefct.call(this);\r\n return route ? this.router.isActive(route, true) : false\r\n }\r\n }\r\n\r\n routerLink(item: NavItem) {\r\n //if (this.isDisabled(item)) return null;\r\n let route = this.item.route as string;\r\n if (typeof this.item.route === 'function') {\r\n const routefct: () => string | string[] = this.item.route;\r\n route = routefct.call(this);\r\n }\r\n return route;\r\n }\r\n\r\n falsePromise = new Promise<boolean>((resolve, reject) => {\r\n resolve(false)\r\n });\r\n\r\n getDisabledPromise() {\r\n //console.log(`isdisable item ${item.displayName} ${item.disabled}`);\r\n if (!this.item.disabled) {\r\n return this.falsePromise;\r\n }\r\n return (this.item.disabled as any)();\r\n }\r\n\r\n getHiddenPromise() {\r\n if (!this.item.hidden) {\r\n return this.falsePromise;\r\n }\r\n return (this.item.hidden as any)();\r\n }\r\n\r\n}\r\n","@if (item) {\n @if (!(_hidden | async)) {\n <div class=\"thisMenu\" (click)=\"onItemSelected(item)\" [class.disabled]=\"(_disabled | async)\">\n <a mat-list-item lines=\"1\"\n [ngStyle]=\"{'padding-left': (depth * 12) + 'px'}\"\n [ngClass]=\"{'active': isActive(item) && !(_disabled | async), 'expanded': expanded}\"\n class=\"menu-list-item\"\n [routerLink]=\"routerLink(item)\">\n <mat-icon matListItemIcon class=\"routeIcon\">\n <i [ngClass]=\"item.icon\" [ngStyle]=\"item.iconStyle\"></i>\n </mat-icon>\n <span matListItemTitle class=\"menu-label\">{{item.displayName}}</span>\n </a>\n @if (item.children?.length && !(_disabled | async)) {\n <div class=\"expand-container\">\n <mat-icon [@indicatorRotate]=\"expanded ? 'expanded': 'collapsed'\" class=\"expandIcon\">\n expand_more\n </mat-icon>\n </div>\n }\n </div>\n }\n @if (expanded && !(_disabled | async)) {\n <div>\n @for (child of item.children; track child) {\n <gloww-menu-list-item [item]=\"child\" [depth]=\"depth+1\">\n </gloww-menu-list-item>\n }\n </div>\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport interface Snippet {\r\n name: string;\r\n code?: string;\r\n externfile?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SnippetsService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getSnippets(path: string): Observable<Snippet[]> {\r\n return this.http.get<Snippet[]>(path);\r\n }\r\n\r\n getSnippetCode(path: string) {\r\n return this.http.get(path, {\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n}\r\n","import { Snippet, SnippetsService } from './../../Services/snippets.service';\r\nimport { Component, Input, OnInit, ViewChild, AfterViewInit, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport { CodemirrorComponent, CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport { GlowwService } from '../../Services/gloww.service';\r\nimport prettier from 'node_modules/prettier/esm/standalone.mjs';\r\nimport parserTypescript from 'node_modules/prettier/esm/parser-typescript.mjs'\r\nimport parserBabel from 'node_modules/prettier/esm/parser-babel.mjs'\nimport { MatLabel } from '@angular/material/input';\nimport { MatSelect, MatOption } from '@angular/material/select';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-code-editor',\n templateUrl: './code-editor.component.html',\n styleUrls: ['./code-editor.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: CodeEditorComponent\n }\n ],\n imports: [MatLabel, MatSelect, FormsModule, MatOption, MatButton, CodemirrorModule]\n})\r\nexport class CodeEditorComponent implements ControlValueAccessor, AfterViewInit {\r\n @Input('value') _value: any = null;\r\n @Input('display') display: string = null;\r\n @Input('mode') mode: any = \"text/typescript\";\r\n @Input('formatter') formatter?: string;\r\n @Input('formatterOptions') formatterOptions?: any = { useTabs: true, printWidth: 160 };\r\n @Input('snippets') snippets?: Snippet[];\r\n @Input('snippetsPath') snippetsPath?: string;\r\n @ViewChild(CodemirrorComponent) codeMirrorComponent: CodemirrorComponent;\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n resizable = true;\r\n\r\n currentSnippet?: Snippet;\r\n doc: any = null;\r\n extraKeys = {\r\n \"Alt-K\": function(cm) { alert('Alt-K'); cm.blockComment(cm.doc.getCursor('from'), cm.doc.getCursor('to'));/*cm.toggleComment();*/ },\r\n \"Shift-Alt-K\": \"toggleComment\",\r\n \"Alt-N\": this.autoFormatSelection.bind(this)\r\n };\r\n\r\n constructor(private snippetsService: SnippetsService, private glowwService: GlowwService) {\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n console.log(this.codeMirrorComponent);\r\n console.log(this.codeMirrorComponent.codeMirror);\r\n this.doc = this.codeMirrorComponent.codeMirror?.getDoc();\r\n console.log(this.doc);\r\n if (this.snippetsPath) {\r\n this.snippetsService.getSnippets(this.snippetsPath.replace(\"/assets/\", this.glowwService.baseHref + \"/assets/\")).subscribe((snippets) => {\r\n if (!this.snippets) {\r\n this.snippets = [];\r\n }\r\n snippets.forEach((snippet) => this.snippets.push(snippet));\r\n });\r\n }\r\n }\r\n\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n if (typeof (obj) === 'object' && obj != null) {\r\n this.value = JSON.stringify(obj);\r\n } else {\r\n this.value = obj;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n insert() {\r\n this.doc = this.codeMirrorComponent.codeMirror?.getDoc();\r\n var cursor = this.doc.getCursor();\r\n if (this.currentSnippet.code) {\r\n this.doc.replaceRange(this.currentSnippet.code, cursor);\r\n }\r\n if (this.currentSnippet.externfile) {\r\n this.snippetsService.getSnippetCode(this.currentSnippet.externfile).subscribe((code) => this.doc.replaceRange(code, cursor));\r\n }\r\n }\r\n\r\n getSelectedRange(doc) {\r\n return { from: doc.getCursor('from'), to: doc.getCursor('to') };\r\n }\r\n\r\n getFormatter(): string {\r\n if (this.formatter) return this.formatter;\r\n if (this.mode.match(/typescript/)) { return \"typescript\"; }\r\n return null;\r\n }\r\n\r\n\r\n autoFormatSelection(cm) {\r\n try {\r\n const formatter = this.getFormatter();\r\n if (!formatter) {\r\n alert(\"no formatter defined for this code\");\r\n return;\r\n }\r\n let options: any = { ...this.formatterOptions };\r\n options.parser = formatter;\r\n options.plugins = [parserTypescript, parserBabel]\r\n\r\n cm.doc.setValue(prettier.format(cm.doc.getValue(), options));\r\n } catch (ex) {\r\n alert(`Unable to format this code, check Syntax`);\r\n }\r\n }\r\n}\r\n","<div class=\"editor-container mainDiv\">\n <mat-label>{{display}}</mat-label>\n\n @if (snippets?.length) {\n <div class=\"snippet-header\">\n <mat-select [(ngModel)]=\"currentSnippet\" class=\"snippet-select\">\n @for (snippet of snippets; track snippet) {\n <mat-option [value]=\"snippet\">{{snippet.name}}</mat-option>\n }\n </mat-select>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"insert()\">Insert</button>\n </div>\n }\n\n <ngx-codemirror\n [(ngModel)]=\"value\"\n [options]=\"{lineNumbers: true, theme: 'eclipse', indentWithTabs:true, indentUnit: 4, matchBrackets: true, mode: mode, fixedGutter:false, extraKeys: extraKeys}\"\n class=\"editor-full-width\">\n </ngx-codemirror>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'htmlFormat',\n standalone: true\n})\nexport class HtmlFormatPipe implements PipeTransform {\n\r\n constructor(private _sanitizer?: DomSanitizer) { }\r\n\r\n transform(value: string, ...args: unknown[]): string {\r\n const newval = value.replace(/(^\\s*\\w|\\.\\s\\w)/g, m => m.toUpperCase()).replace(/\\s\\./ig, '').replace(/\\s*Nouvelle ligne\\s*.\\s*/ig, '<br/>').trim();\r\n if (!this._sanitizer) return newval;\r\n return this._sanitizer.bypassSecurityTrustHtml(newval) as string;\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, OnInit, Output, Input } from '@angular/core';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\n selector: 'gloww-social-network',\n templateUrl: './social-network.component.html',\n styleUrls: ['./social-network.component.scss'],\n imports: [NgClass]\n})\r\nexport class SocialNetworkComponent implements OnInit {\r\n @Input() oAuthProviders: any[];\r\n @Output() callback: EventEmitter<any> = new EventEmitter();\r\n\r\n icons = {\r\n Google: \"fa-brands fa-google\",\r\n LinkedIN: \"fa-brands fa-linkedin\",\r\n Facebook: \"fa-brands fa-facebook\",\r\n Github: \"fa-brands fa-github\",\r\n Amazon: \"fa-brands fa-amazon\",\r\n Apple: \"fa-brands fa-apple\",\r\n Microsoft: \"fa-brands fa-microsoft\",\r\n Twitter: \"fa-brands fa-twitter\",\r\n VK: \"fa-brands fa-vk\",\r\n };\r\n\r\n // oAuthAssociations: string[];\r\n // oAuthProviders: string[];\r\n\r\n constructor(private authenticationService: AuthenticationService) {\r\n // this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n // this.authenticationService.getOAuthAssociations().subscribe(oap => this.oAuthAssociations = oap);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n execute(provider) {\r\n this.callback.emit(provider);\r\n }\r\n writeobj(provider) {\r\n console.log(provider);\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","@if (oAuthProviders) {\n <div class=\"social-network-container\">\n @for (provider of oAuthProviders; track provider) {\n <a (click)=\"execute(provider)\" class=\"provider-link\" [title]=\"provider\">\n <i [ngClass]=\"icons[provider.toString()]\"></i>\n </a>\n }\n </div>\n}","import { MatIconModule } from '@angular/material/icon';\r\nimport { Component, OnInit, Optional } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { first } from 'rxjs/operators';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\nimport { AuthenticationServiceConfig } from '../../Services/authentication-service-config';\nimport { MatCard, MatCardHeader, MatCardTitle, MatCardContent } from '@angular/material/card';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\nimport { SocialNetworkComponent } from '../social-network/social-network.component';\r\n\r\n@Component({\n selector: 'gloww-login',\n templateUrl: 'login.component.html',\n styleUrls: ['./login.component.scss'],\n imports: [MatCard, MatCardHeader, MatCardTitle, FormsModule, ReactiveFormsModule, MatCardContent, MatFormField, MatLabel, MatInput, MatButton, SocialNetworkComponent]\n}) export class LoginComponent implements OnInit {\n public loginForm: UntypedFormGroup;\r\n public lostPasswordForm: UntypedFormGroup;\r\n public resetPasswordForm: UntypedFormGroup;\r\n loading = false;\r\n submitted = false;\r\n returnUrl: string;\r\n application: string;\r\n error = '';\r\n showDomain = false;\r\n state = 1;\r\n config: AuthenticationServiceConfig;\r\n oAuthProviders: string[];\r\n\r\n idOauth?: number;\r\n provider?: string;\r\n name?: string;\r\n value?: string;\n\n\n constructor(private formBuilder: UntypedFormBuilder, private route: ActivatedRoute, private router: Router, private authenticationService: AuthenticationService, @Optional() config?: AuthenticationServiceConfig) {\n // redirect to home if already logged in\r\n if (this.authenticationService.currentUserValue) {\r\n this.router.navigate(['/']);\r\n }\r\n this.config = config;\r\n if (config && config.showDomain) {\n this.showDomain = config.showDomain;\n }\n\n this.initializeForms();\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\n }\n\n private initializeForms() {\n const grp: any = {\n username: ['', Validators.required],\n password: ['', Validators.required]\n };\n const lostPwd: any = {\n email: ['', Validators.required],\n gsm: [''],\n firstname: ['', Validators.required],\n lastname: ['', Validators.required]\n };\n const resetPwd: any = {\n email: ['', Validators.required],\n code: ['', Validators.required],\n newPassword: ['', Validators.required],\n confirmationPassword: ['', Validators.required]\n };\n if (this.showDomain) {\n grp.domain = [''];\n }\n this.loginForm = this.formBuilder.group(grp);\n this.lostPasswordForm = this.formBuilder.group(lostPwd);\n this.resetPasswordForm = this.formBuilder.group(resetPwd, { validator: this.MatchPassword });\n }\n\n MatchPassword(fg: UntypedFormGroup) {\n if (!fg) { return; }\n return fg.get('newpassword')?.value === fg.get('confirmationPassword')?.value;\n }\n ngOnInit() {\n // get return url from route parameters or default to '/'\n this.returnUrl = this.route.snapshot.queryParams.returnUrl;//|| window.location.search;\n this.application = this.route.snapshot.queryParams.application;//|| window.location.pathname;\r\n console.log(`returnUrl : ${this.returnUrl}`);\r\n console.log(`application : ${this.application}`);\r\n\r\n this.idOauth = this.route.snapshot.queryParams.idOauth;\r\n this.provider = this.route.snapshot.queryParams.provider;\r\n this.name = this.route.snapshot.queryParams.name;\r\n this.value = this.route.snapshot.queryParams.value;\r\n if (this.idOauth) {\r\n this.state = 4;\r\n }\r\n\r\n }\r\n\r\n // convenience getter for easy access to form fields\r\n get f() { return this.loginForm.controls; }\r\n\r\n resetError() {\r\n this.error = \"\";\r\n }\r\n\r\n onConnect() {\r\n this.submitted = true;\r\n this.error = \"\";\r\n // stop here if form is invalid\r\n if (this.loginForm.invalid) {\r\n return;\r\n }\r\n this.loading = true;\r\n let domain = '';\r\n if (this.showDomain) {\r\n domain = this.f.domain.value;\r\n }\r\n this.authenticationService.login(domain, this.f.username.value, this.f.password.value)\r\n .pipe(first())\r\n .subscribe(data => {\r\n console.log(`navigate to ${this.returnUrl}`);\r\n this.router.navigate([this.returnUrl]);\r\n }, error => {\r\n if (error.error?.Code) {\r\n switch (error.error?.Code) {\r\n case 'BADAUTH':\r\n this.error = 'Utilisateur inconnu ou mauvais mot de passe. Veuillez vérifier vos identifiants.';\r\n break;\r\n case 'WEAKPASSWORD':\r\n this.error = 'Le mot de passe que vous avez utilisez est trop faible. S\\'il s\\'agit effectivement de votre mot de passe, veuillez le réinitialiser au moyen de la fonctionnalité \"Mot de passe oublié\". ';\r\n break;\r\n case 'BLACKLISTEDIP':\r\n this.error = `Trop de tentatives de connexion à partir de cette adresse IP(${error.error?.Params?.IP}).Vous ne pouvez plus vous connecter à partir de ce poste.`;\r\n break;\r\n case 'TOOMANYFROMIP':\r\n this.error = `Trop de tentatives de connexion, à partir de cette adresse IP(${error.error?.Params?.IP}).Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n case 'TOOMANYFORUSERNAME':\r\n this.error = `Trop de tentatives de connexion pour cet utilisateur(${error.error?.Params?.Username}).Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n\r\n }\r\n if (!this.error) this.error = error.error.Message;\r\n }\r\n else {\r\n this.error = 'Impossible de se connecter. ';\r\n }\r\n this.loading = false;\r\n });\r\n }\r\n\r\n onAskResetPasswordCode() {\r\n let gsm = this.lostPasswordForm.value.gsm;\r\n if (!this.config?.askGSM) {\r\n gsm = '--noGSM--';\r\n }\r\n this.authenticationService\r\n .askResetPasswordCode('', this.lostPasswordForm.value.firstname, this.lostPasswordForm.value.lastname, this.lostPasswordForm.value.email, gsm)\r\n .subscribe(\r\n d => { },\r\n error => { }\r\n );\r\n this.state = 3;\r\n }\r\n\r\n onResetPassword() {\r\n this.authenticationService\r\n .resetPassword(this.resetPasswordForm.value.email, this.resetPasswordForm.value.code, this.resetPasswordForm.value.newPassword)\r\n .subscribe(\r\n d => { },\r\n error => { }\r\n );\r\n this.state = 1;\r\n }\r\n\r\n OAuthSignIn(provider: String): void {\r\n const url = `${window.location.origin}/admin/AuthUsers/OAuth/${provider}/${this.config.environment}?returnUrl=${encodeURI(this.returnUrl)}&application=${encodeURI(this.application)}&loginUrl=${encodeURI(window.location.pathname)}&currentUserVariableName=${this.authenticationService.currentUserVariableName}`;\r\n window.location.href = url;\r\n }\r\n\r\n onOAuthAskCode(): void {\r\n this.authenticationService\r\n .OAuthAskCode(this.authenticationService.environment, this.resetPasswordForm.value.email, this.idOauth, this.provider, this.name, this.value)\r\n .subscribe(\r\n d => {\r\n this.state = 5;\r\n },\r\n error => { }\r\n );\r\n }\r\n onOAuthAssociation(): void {\r\n this.authenticationService\r\n .OAuthAssociation(this.authenticationService.environment, this.resetPasswordForm.value.code, this.idOauth, this.provider, this.name, this.value)\r\n .subscribe(\r\n user => {\r\n console.log(user);\r\n window.location.href = this.returnUrl;\r\n },\r\n error => { }\r\n );\r\n }\r\n}\r\n","<div class=\"login-wrapper center-layout\">\n <mat-card appearance=\"outlined\" class=\"login-card\">\n <mat-card-header>\n <mat-card-title>Connexion</mat-card-title>\n </mat-card-header>\n\n @if (state==1) {\n <form class=\"example-form\" [formGroup]=\"loginForm\" (ngSubmit)=\"onConnect()\">\n <mat-card-content class=\"form-grid\">\n @if (error) {\n <span class=\"error-msg full-width\">{{error}}</span>\n }\n @if (showDomain) {\n <mat-form-field class=\"full-width\">\n <mat-label>Domain</mat-label>\n <input matInput formControlName=\"domain\" (change)=\"resetError()\">\n </mat-form-field>\n }\n <mat-form-field class=\"full-width\">\n <mat-label>Username</mat-label>\n <input matInput formControlName=\"username\" (change)=\"resetError()\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Password</mat-label>\n <input matInput formControlName=\"password\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n </mat-card-content>\n <div class=\"action-buttons-row\">\n <button mat-raised-button color=\"primary\" type=\"submit\">Me Connecter</button>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"state=2; resetError();\">\n Mot de passe oublié\n </button>\n </div>\n <div class=\"social-divider\">\n <gloww-social-network (callback)=\"OAuthSignIn($event)\" [oAuthProviders]=\"oAuthProviders\"></gloww-social-network>\n </div>\n </form>\n }\n\n @if (state==2) {\n <form class=\"example-form\" [formGroup]=\"lostPasswordForm\" (ngSubmit)=\"onAskResetPasswordCode()\">\n <mat-card-content class=\"form-grid\">\n @if (error) {\n <span class=\"error-msg full-width\">{{error}}</span>\n }\n </mat-card-content>\n <div class=\"action-buttons-column\">\n <button mat-raised-button color=\"primary\" class=\"btn-block\" type=\"submit\">Demande de réinitialisation</button>\n <button mat-stroked-button color=\"primary\" class=\"btn-block\" (click)=\"state=3\">J'ai un code</button>\n </div>\n </form>\n }\n\n </mat-card>\n</div>","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n\tconstructor(private authenticationService: AuthenticationService) { }\r\n\r\n\tintercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\t\t// add authorization header with jwt token if available\r\n\t\ttry {\r\n\t\t\tconst currentUser = this.authenticationService.currentUserValue;\r\n\t\t\tif (currentUser && currentUser.Token) {\r\n\t\t\t\trequest = request.clone({\r\n\t\t\t\t\tsetHeaders: {\r\n\t\t\t\t\t\tAuthorization: `Bearer ${currentUser.Token}`\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(`jwt interceptor ${e}`);\r\n\t\t}\r\n\r\n\t\treturn next.handle(request);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private authenticationService: AuthenticationService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(catchError(err => {\r\n if (err.status === 401) {\r\n // auto logout if 401 response returned from api\r\n this.authenticationService.logout();\r\n location.reload();\r\n }\r\n\r\n const error = err.error ? (err.error.message || err.StatusText) : err.statusText;\r\n if (console) console.log(err);\r\n return throwError(err);\r\n }));\r\n }\r\n}\r\n","import { MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-change-password-dlg',\n templateUrl: './change-password-dlg.component.html',\n styleUrls: ['./change-password-dlg.component.scss'],\n imports: [MatDialogTitle, FormsModule, ReactiveFormsModule, CdkScrollable, MatDialogContent, MatFormField, MatLabel, MatInput, MatDialogActions, MatButton]\n})\r\nexport class ChangePasswordDlgComponent implements OnInit {\r\n error: string;\r\n form: UntypedFormGroup;\r\n constructor(private formBuilder: UntypedFormBuilder, private dialogRef: MatDialogRef<ChangePasswordDlgComponent>, private authenticationService: AuthenticationService) {\r\n this.form = this.formBuilder.group({\r\n oldpassword: ['', Validators.required],\r\n newpassword: ['', Validators.required],\r\n confirmationpassword: ['', Validators.required]\r\n }, { validator: c => c.get('newpassword').value === c.get('confirmationpassword').value });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n resetError() {\r\n this.error = '';\r\n }\r\n\r\n onSubmit() {\r\n this.resetError();\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n const user = this.authenticationService.currentUserValue;\r\n this.authenticationService.changePassword('', user.username, this.form.value.oldpassword, this.form.value.newpassword).subscribe(r =>\r\n this.dialogRef.close(true),\r\n error => {\r\n switch (error.error?.Code) {\r\n case 'COMPLEXITY':\r\n this.error = 'Le mot de passe souhaitez n\\'est pas suffisamment complexe. Veuillez utiliser un mot de passe long (8 caractères minimum) combinant des majuscules, minuscules, chiffres et caractères spéciaux.';\r\n break;\r\n case 'BADAUTH':\r\n this.error = 'Utilisateur inconnu ou mauvais mot de passe. Veuillez vérifier vos identifiants.';\r\n break;\r\n case 'WEAKPASSWORD':\r\n this.error = 'Le mot de passe que vous avez utilisez est trop faible. S\\'il s\\'agit effectivement de votre mot de passe, veuillez le réinitialiser au moyen de la fonctionnalité \"Mot de passe oublié\". ';\r\n break;\r\n case 'BLACKLISTEDIP':\r\n this.error = `Trop de tentatives de connexion à partir de cette adresse IP (${error.error?.Params?.IP}). Vous ne pouvez plus vous connecter à partir de ce poste.`;\r\n break;\r\n case 'TOOMANYFROMIP':\r\n this.error = `Trop de tentatives de connexion, à partir de cette adresse IP (${error.error?.Params?.IP}). Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n case 'TOOMANYFORUSERNAME':\r\n this.error = `Trop de tentatives de connexion pour cet utilisateur (${error.error?.Params?.Username}). Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n\r\n }\r\n this.error = error.error.Message;\r\n }\r\n );\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","<h2 mat-dialog-title>Change Password</h2>\n\n<form class=\"password-form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <mat-dialog-content>\n <div class=\"form-container\">\n @if (error) {\n <div class=\"error-msg full-width\">\n {{error}}\n </div>\n }\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>Old Password</mat-label>\n <input matInput formControlName=\"oldpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>New Password</mat-label>\n <input matInput formControlName=\"newpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>Confirmation</mat-label>\n <input matInput formControlName=\"confirmationpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n </div>\n </mat-dialog-content>\n\n <mat-dialog-actions align=\"end\">\n <button mat-button (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"form.invalid\">\n Change Password\n </button>\n </mat-dialog-actions>\n</form>","import { Oauthassociation } from './../../Models/oauthassociation';\r\nimport { Component, OnInit, Optional } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { AuthenticationServiceConfig } from '../../Services/authentication-service-config';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { SocialNetworkComponent } from '../social-network/social-network.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-social-network-dlg',\n templateUrl: './social-network-dlg.component.html',\n styleUrls: ['./social-network-dlg.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, SocialNetworkComponent, MatDialogActions, MatButton]\n})\r\nexport class SocialNetworkDlgComponent implements OnInit {\r\n\r\n oAuthProviders: string[];\r\n oAuthAssociations: Oauthassociation[];\r\n config: AuthenticationServiceConfig;\r\n\r\n constructor(private dialogRef: MatDialogRef<SocialNetworkDlgComponent>, private authenticationService: AuthenticationService, private dialog: MatDialog, @Optional() config?: AuthenticationServiceConfig) {\r\n this.config = config;\r\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n this.authenticationService.getOAuthAssociations().subscribe(oap => {\r\n this.oAuthAssociations = oap;//oap.map(item => Object.assign(new Oauthassociation(), item));\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n OK() {\r\n this.dialogRef.close();\r\n }\r\n\r\n OAuthAddAssociation(provider: String): void {\r\n const url = `${window.location.origin}/admin/AuthUsers/OAuth/${provider}/${this.config.environment}`;\r\n window.location.href = url;\r\n }\r\n OAuthDeleteAssociation(association: Oauthassociation): void {\r\n this.authenticationService.OAuthDeleteAssociation(association.provider, association.idOAuth).subscribe(\r\n result => {\r\n alert(\"Association supprimée\");\r\n const index = this.oAuthAssociations.indexOf(association, 0);\r\n if (index >= 0) {\r\n this.oAuthAssociations.splice(index, 1);\r\n } else {\r\n alert(\"unable to delete item\");\r\n }\r\n //this.oAuthAssociations.find(a => a === association\r\n },\r\n error => {\r\n alert('Impossible d\\'effacer l\\'association');\r\n }\r\n\r\n )\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>Gestion des identifications par réseaux sociaux</h2>\r\n<mat-dialog-content>\r\n <h3>Associations établies</h3>\r\n <p>Choisissez l'association que vous souhaitez supprimer</p>\r\n <gloww-social-network (callback)=\"OAuthDeleteAssociation($event)\" [oAuthProviders]=\"oAuthAssociations\"></gloww-social-network>\r\n <h3>Nouvelle association</h3>\r\n <p>Choisissez le provider</p>\r\n <gloww-social-network (callback)=\"OAuthAddAssociation($event)\" [oAuthProviders]=\"oAuthProviders\"></gloww-social-network>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-stroked-button color=\"accent\" class=\"btn-block\" (click)=\"OK() \">OK</button>\r\n</mat-dialog-actions>","import { ActivatedRoute, Router, RouterLink } from '@angular/router';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { MatDialogConfig, MatDialog } from '@angular/material/dialog';\r\nimport { ChangePasswordDlgComponent } from '../change-password-dlg/change-password-dlg.component';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\nimport { SocialNetworkDlgComponent } from '../social-network-dlg/social-network-dlg.component';\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\n selector: 'gloww-user-menu',\n templateUrl: './user-menu.component.html',\n styleUrls: ['./user-menu.component.scss'],\n imports: [NgClass, RouterLink]\n})\r\nexport class UserMenuComponent implements OnInit {\r\n\r\n @Input() size = '1x';\r\n @Input() imageUser = null;\r\n @Input() loginpage = '';\r\n\r\n showMenuUser = false;\r\n connected = false;\r\n oAuthProviders: string[];\r\n\r\n constructor(private authenticationService: AuthenticationService, private dialog: MatDialog, private router: Router) {\r\n const person: any = this.authenticationService.currentUserValue;\r\n if (person && person.UserInfo) {\r\n this.connected = true;\r\n if (person.UserInfo.Picture) { this.imageUser = '/' + authenticationService.environment + '/' + person.UserInfo.Picture; }\r\n }\r\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n Logout() {\r\n this.showMenuUser = false;\r\n this.authenticationService.logout();\r\n this.router.navigate(['/']);\r\n }\r\n\r\n ChangePassword() {\r\n this.showMenuUser = true;\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n this.dialog.open(ChangePasswordDlgComponent, dialogConfig).afterClosed().subscribe(result => {\r\n if (result) { alert('Password Changed'); }\r\n });\r\n }\r\n\r\n toggleMenuUser() {\r\n this.showMenuUser = !this.showMenuUser;\r\n }\r\n\r\n Configuration() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n this.dialog.open(SocialNetworkDlgComponent, dialogConfig).afterClosed().subscribe(result => {\r\n\r\n });\r\n }\r\n\r\n}\r\n","@if (connected) {\n <div>\n <span (click)=\"toggleMenuUser()\">\n @if (imageUser) {\n <img [src]=\"imageUser\" style=\"height:40px;float:left; padding-left:20px\" />\n }\n @if (!imageUser) {\n <i [ngClass]=\"'fal fa-user '+size\" style=\"float:left; padding-left:10px\">\n <!--[size]=\"size\"-->\n </i>\n }\n </span>\n @if (showMenuUser) {\n <div class=\"menuUser\">\n <ul class=\"menuSec\" style=\"border: solid lightgrey;\">\n <li (click)=\"ChangePassword()\">\n <i class=\"fal fa-key-skeleton\"></i>Change Password\n </li>\n @if (oAuthProviders && oAuthProviders.length) {\n <li (click)=\"Configuration()\">\n <i class=\"fal fa-tools\"></i>Configuration\n </li>\n }\n <li (click)=\"Logout()\">\n <i class=\"fal fa-sign-out\"></i>Déconnexion\n </li>\n </ul>\n </div>\n }\n </div>\n}\n@if (!connected && loginpage) {\n <div>\n <span style=\"height:40px;float:left; padding-left:20px\" [routerLink]=\"loginpage\">Connexion</span>\n </div>\n}\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class StagingInterceptor implements HttpInterceptor {\r\n constructor() { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n // add authorization header with jwt token if available\r\n try {\r\n if (!request.url.match(/version\\.json(\\?|$)/ig)) {\r\n console.log(`Replace ${request.url}`);\r\n return next.handle(request.clone({ url: request.url.replace(\"__Staging\", \"\") }));\r\n }\r\n } catch (e) {\r\n console.log(`staging interceptor ${e}`);\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","import { APP_BASE_HREF, PlatformLocation } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { jwtDecode } from 'jwt-decode';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard {\r\n\r\n private baseHref = null;\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private platformLocation: PlatformLocation\r\n //@Inject(APP_BASE_HREF) baseHref: string\r\n ) {\r\n this.baseHref = platformLocation.getBaseHrefFromDOM();\r\n }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const currentUser = this.authenticationService.currentUserValue;\r\n if (currentUser) {\r\n // logged in so return true\r\n const jwtToken = jwtDecode<any>(currentUser.Token);\r\n if (Date.now() < jwtToken.exp * 1000) {\r\n return true;\r\n } else {\r\n this.authenticationService.logout();\r\n }\r\n }\r\n const vd = window.location.pathname\r\n if (vd.endsWith(\"/login\")) { return true; }\r\n\r\n console.log(window.location);\r\n console.log(route);\r\n console.log(state);\r\n console.log(state.url);\r\n console.log(window.location.search);\r\n console.log(window.location.pathname);\r\n\r\n const returnUrl = window.location.pathname.substr(this.baseHref.length);\r\n //let application = window.location.pathname.substr(0, window.location.pathname.length - state.url.length);\r\n /*if (state.url === '/') {\r\n application = window.location.pathname.endsWith(\"/\") ? application.substr(0, window.location.pathname.length - 1) : window.location.pathname;\r\n }\r\n if (!application) { application = '/'; }\r\n console.log(application);*/\r\n // not logged in so redirect to login page with the return url\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: `${returnUrl}${window.location.search}`, application: `${this.baseHref}` } });\r\n return false;\r\n }\r\n}\r\n","import { PlatformLocation } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthenticationService } from '../gloww-security.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdministratorGuard {\r\n\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private platformLocation: PlatformLocation\r\n //@Inject(APP_BASE_HREF) baseHref: string\r\n ) {\r\n\r\n }\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n const currentUser: any = (this.authenticationService.currentUserValue as any).UserInfo;\r\n return currentUser.IsAdministrator || currentUser.isAdministrator;\r\n }\r\n\r\n}\r\n","import { AdministratorGuard } from './Helpers';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { AuthenticationServiceConfig } from './Services/authentication-service-config';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoginComponent } from './Components/login/login.component';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { AuthGuard } from './Helpers';\r\nimport { JwtInterceptor } from './Helpers/jwt.interceptor';\r\nimport { ErrorInterceptor } from './Helpers/error.interceptor';\r\nimport { AuthenticationService } from './Services/authentication.service';\r\n\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ChangePasswordDlgComponent } from './Components/change-password-dlg/change-password-dlg.component';\r\nimport { MatButton, MatButtonModule } from '@angular/material/button';\r\nimport { UserMenuComponent } from './Components/user-menu/user-menu.component';\r\nimport { SocialNetworkDlgComponent } from './Components/social-network-dlg/social-network-dlg.component';\r\nimport { SocialNetworkComponent } from './Components/social-network/social-network.component';\nimport { StagingInterceptor } from './Helpers/staging.interceptor';\n\nexport const GLOWW_SECURITY_STANDALONE_DECLARATIONS = [\n LoginComponent,\n ChangePasswordDlgComponent,\n UserMenuComponent,\n SocialNetworkDlgComponent,\n SocialNetworkComponent\n] as const;\n\n@NgModule({\n exports: [...GLOWW_SECURITY_STANDALONE_DECLARATIONS, RouterModule], imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatToolbarModule,\n MatButtonModule,\n MatSidenavModule,\n MatInputModule,\n MatFormFieldModule,\n MatCardModule,\n MatDialogModule,\n RouterModule,\n ...GLOWW_SECURITY_STANDALONE_DECLARATIONS], providers: [provideHttpClient(withInterceptorsFromDi())] })\nexport class GlowwSecurityModule {\n public static forRoot(authenticationServiceConfig: AuthenticationServiceConfig): ModuleWithProviders<GlowwSecurityModule> {\r\n\r\n /*\r\n var socialLoginProviders = {\r\n provide: 'SocialAuthServiceConfig',\r\n useValue: {\r\n autoLogin: false,\r\n providers: [\r\n ],\r\n onError: (err) => {\r\n console.error(err);\r\n }\r\n } as SocialAuthServiceConfig,\r\n };\r\n\r\n if (authenticationServiceConfig.googleClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: GoogleLoginProvider.PROVIDER_ID,\r\n provider: new GoogleLoginProvider(\r\n authenticationServiceConfig.googleClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.facebookClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: FacebookLoginProvider.PROVIDER_ID,\r\n provider: new FacebookLoginProvider(\r\n authenticationServiceConfig.facebookClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.amazonClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: AmazonLoginProvider.PROVIDER_ID,\r\n provider: new AmazonLoginProvider(\r\n authenticationServiceConfig.amazonClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.microsoftClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: MicrosoftLoginProvider.PROVIDER_ID,\r\n provider: new MicrosoftLoginProvider(\r\n authenticationServiceConfig.microsoftClientId\r\n )\r\n }\r\n )\r\n }\r\n */\r\n\r\n return {\r\n ngModule: GlowwSecurityModule,\r\n providers: [\r\n AuthenticationService,\r\n AuthenticationServiceConfig,\r\n { provide: AuthenticationServiceConfig, useValue: authenticationServiceConfig },\r\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n //{ provide: HTTP_INTERCEPTORS, useClass: StagingInterceptor, multi: true },\r\n //socialLoginProviders\r\n ]\r\n };\r\n }\r\n}\r\n\r\nexport { LoginComponent } from './Components/login/login.component';\nexport { ChangePasswordDlgComponent } from './Components/change-password-dlg/change-password-dlg.component';\nexport { UserMenuComponent } from './Components/user-menu/user-menu.component';\nexport { SocialNetworkDlgComponent } from './Components/social-network-dlg/social-network-dlg.component';\nexport { SocialNetworkComponent } from './Components/social-network/social-network.component';\nexport { AuthenticationService } from './Services/authentication.service';\nexport { JwtInterceptor } from './Helpers/jwt.interceptor';\nexport { ErrorInterceptor } from './Helpers/error.interceptor';\r\nexport { StagingInterceptor } from './Helpers/staging.interceptor';\r\nexport { AuthGuard } from './Helpers';\r\nexport { AdministratorGuard } from './Helpers/';\r\n","import { Component, Input, OnInit, SecurityContext, TemplateRef, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport { MatDialog, MatDialogRef, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { HtmlFormatPipe } from '../../Pipes/html-format.pipe';\r\nimport { VoiceRecognitionService } from '../../Services/voice-recognition.service';\r\n//import { AngularEditorConfig, AngularEditorToolbarComponent } from '@kolkov/angular-editor';\r\n//import { AngularEditorButtonConfig } from '@kolkov/angular-editor/lib/config';\r\nimport { AngularEditorConfig, AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { AuthenticationService } from '../../gloww-security/gloww-security.module';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\r\n\r\n@Component({\n selector: 'gloww-html-editor',\n templateUrl: './html-editor.component.html',\n styleUrls: ['./html-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: HtmlEditorComponent\n }\n ],\n imports: [AngularEditorModule, FormsModule, CdkScrollable, MatDialogContent, MatDialogActions, HtmlFormatPipe]\n})\r\nexport class HtmlEditorComponent implements ControlValueAccessor {\r\n @ViewChild('voiceRecognitionDlg') voiceRecognitionTemplate!: TemplateRef<any>;\r\n //@Input() formControlName: string = \"\";\r\n @Input() placeHolder: string = \"\";\r\n @Input('value') _value: any = null;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n //CCH tb?: AngularEditorToolbarComponent;\r\n dialogRef?: MatDialogRef<any, any>;\r\n\r\n allowedStyles = ['text-align'];\r\n allowedTags = ['p', 'span', 'div', 'hr', 'br', 'b', 'i', 'u', 'sup', 'sub', 'strike', 'ol', 'ul', 'li'];\r\n public editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n minHeight: '75px',\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: '0',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: 'Enter text here...',\r\n defaultParagraphSeparator: 'p',\r\n defaultFontName: '',\r\n defaultFontSize: '3',\r\n fonts: [\r\n { class: 'arial', name: 'Arial' }\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n }\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n //cch sanitize: (html: string) => this.sanitize(html),\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n ['insertImage', 'insertVideo', 'customClasses', 'heading', 'heading',\r\n 'fontName',\r\n 'fontSize',\r\n 'textColor',\r\n 'backgroundColor', !this.isAdministrator() ? 'toggleEditorMode' : '']\r\n ],\r\n/* additionalButtons: [\r\n {\r\n title: 'Speech Recognition',\r\n click: (tb: AngularEditorToolbarComponent, event) => {\r\n this.tb = tb;\r\n tb.focus();\r\n this.voiceRecognitionService.start();\r\n this.voiceRecognitionService.text = \"\";\r\n this.dialogRef = this.dialog.open(this.voiceRecognitionTemplate, {\r\n width: '550px'\r\n });\r\n\r\n },\r\n icon: 'fas fa-comment-plus'\r\n }\r\n ]*/\r\n };\r\n\r\n cancel() {\r\n this.voiceRecognitionService.stop();\r\n //CCH this.tb = undefined;\r\n this.dialogRef?.close();\r\n }\r\n\r\n paste() {\r\n //CCH this.tb?.insertHtml(new HtmlFormatPipe().transform(this.voiceRecognitionService.text));\r\n this.voiceRecognitionService.stop();\r\n //CCH this.tb = undefined;\r\n this.dialogRef?.close();\r\n }\r\n\r\n constructor(private sanitizer: DomSanitizer, private authenticationService: AuthenticationService, public voiceRecognitionService: VoiceRecognitionService, public dialog: MatDialog) {\r\n this.voiceRecognitionService.init();\r\n }\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n if (obj) {\r\n this.value = obj;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n sanitize(html: string): string {\r\n let itres = this.sanitizer.sanitize(SecurityContext.STYLE, html)?.replace(new RegExp('\\\\</?[a-z]+:[a-z]+\\\\>', 'gi'), '').replace(/class=\"Mso[a-z]+\"/ig, '');\r\n const matchTags = itres?.match(/<\\s*\\/?(?<tag>[a-z0-9]+)\\s*[^>]*>/ig);\r\n matchTags?.forEach(m => {\r\n const matchTag = m.match(/<\\s*\\/?(?<tag>[a-z0-9]+)\\s*[^>]*>/i);\r\n if (matchTag?.groups && this.allowedTags.indexOf(matchTag?.groups['tag']) < 0) {\r\n itres = itres?.replace(m, '');\r\n }\r\n });\r\n\r\n while (true) {\r\n const matchStyle = itres?.match(/style\\s*=\\s*\"(?<style>[^\"]+)\"/i);\r\n if (!matchStyle || !matchStyle?.groups) { break; }\r\n const styles = matchStyle?.groups['style']?.replace(/&quot;/ig, '\"');\r\n const smatches = styles.match(/(?<name>[^;:]+)\\s*:\\s*(?<value>[^;]+);*/ig);\r\n const newStyles: any[] = [];\r\n smatches?.forEach((v, i, a) => {\r\n const ssmatches = v.match(/(?<name>[^;:]+)\\s*:\\s*(?<value>[^;]+);*/i);\r\n if (ssmatches?.groups) {\r\n const name = ssmatches?.groups['name'];\r\n if (this.allowedStyles.indexOf(name) >= 0) {\r\n newStyles.push(v);\r\n }\r\n const value = ssmatches.groups['value'];\r\n console.log(`${name}=${value}`);\r\n }\r\n });\r\n let attr = '';\r\n if (newStyles.length) { attr = `stylenew=\"${newStyles.join(';')}\"`; }\r\n itres = itres?.replace(matchStyle[0], attr);\r\n }\r\n return itres?.replace(/stylenew=/ig, 'style=') ?? \"\";\r\n }\r\n\r\n isAdministrator() {\r\n const currentUser: any = (this.authenticationService.currentUserValue as any).UserInfo;\r\n return currentUser.IsAdministrator === 1 || currentUser.isAdministrator === 1;\r\n }\r\n\r\n}\r\n","<div>\r\n <angular-editor [(ngModel)]=\"value\" [config]=\"editorConfig\" [placeholder]=\"placeHolder\"></angular-editor>\r\n</div>\r\n<ng-template #voiceRecognitionDlg>\r\n <mat-dialog-content>\r\n <div>La reconnaissance vocale est activée. Veuillez dicter le texte à insérer.</div>\r\n <div [innerHTML]=\"voiceRecognitionService.text | htmlFormat\" style=\"width:500px;height:300px;border:1px solid; border-color: blue;\"></div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions>\r\n <button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\r\n <button class=\"mat-raised-button mat-primary\" (click)=\"paste()\">Paste</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n","import { CodeEditorComponent } from './../../code-editor/code-editor.component';\r\nimport { Component, Inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { CodemirrorComponent } from '@ctrl/ngx-codemirror';\r\nimport { ResizedEvent } from 'angular-resize-event';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { CodeEditorComponent as CodeEditorComponent_1 } from '../../code-editor/code-editor.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-file-edit',\n templateUrl: './file-edit.component.html',\n styleUrls: ['./file-edit.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [CdkDrag, MatDialogTitle, CdkDragHandle, CdkScrollable, MatDialogContent, FormsModule, ReactiveFormsModule, MatFormField, MatLabel, MatInput, CodeEditorComponent_1, MatDialogActions, MatButton]\n})\r\nexport class FileEditComponent implements OnInit {\r\n @ViewChild(CodemirrorComponent) codeMirrorComponent: CodemirrorComponent\r\n\r\n form: UntypedFormGroup;\r\n ext: string;\r\n\r\n modes = {\r\n \".txt\": \"null\",\r\n \".cs\": \"clike\",\r\n \".js\": \"javascript\",\r\n \".json\": { name: \"javascript\", json: true },\r\n \".css\": \"css\",\r\n \".scss\": \"scss\",\r\n \".htm\": \"html\",\r\n \".html\": \"html\",\r\n \".xml\": \"xml\",\r\n \".xsl\": \"xml\",\r\n \".xslt\": \"xml\",\r\n \".yml\": \"yaml\",\r\n \".yaml\": \"yaml\",\r\n\r\n };\r\n\r\n\r\n constructor(private formBuilder: UntypedFormBuilder, private dialogRef: MatDialogRef<FileEditComponent>, @Inject(MAT_DIALOG_DATA) definition) {\r\n this.form = this.formBuilder.group({\r\n path: [null, Validators.required],\r\n content: [null]\r\n });\r\n if (definition) {\r\n this.form.patchValue(definition);\r\n try {\r\n this.ext = definition.path.match(/\\.(txt|js|json|ts|cs|css|scss|xml|html|htm|yml|yaml|exp|sh|pwsh|xsl|xslt)$/ig)[0];\r\n } catch {\r\n this.ext = null;\r\n }\r\n\r\n\r\n\r\n }\r\n }\r\n\r\n getMode() {\r\n try {\r\n if (this.ext && this.modes[this.ext]) {\r\n return this.modes[this.ext];\r\n } else {\r\n return \"null\";\r\n }\r\n } catch {\r\n return \"null\";\r\n }\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n save() {\r\n this.dialogRef.close(this.form.value);\r\n }\r\n\r\n initDone = false;\r\n onResized(event: ResizedEvent) {\r\n /*console.log(`new Height ${event.newRect?.height}`);\r\n this.cmHeight = `${event.newRect?.height - 15}px`;*/\r\n if (this.initDone) {\r\n this.codeMirrorComponent.codeMirror.setSize(null, event.newRect?.height - 5);\r\n } else {\r\n this.initDone = true;\r\n }\r\n }\r\n\r\n}\r\n","<div cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" class=\"dlg\">\r\n <h2 mat-dialog-title cdkDragHandle>Ajout/Edition d'un fichier</h2>\r\n \r\n <mat-dialog-content [formGroup]=\"form\" class=\"dialog-form-content\">\r\n <div class=\"column-layout fill-container\">\r\n <mat-form-field appearance=\"outline\" class=\"width-100\">\r\n <mat-label>Path</mat-label>\r\n <input matInput [readonly]=\"true\" placeholder=\"Path\" formControlName=\"path\">\r\n </mat-form-field>\r\n\r\n <div class=\"editor-flex-grow\">\r\n <gloww-code-editor [mode]=\"getMode()\" formControlName=\"content\"></gloww-code-editor>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-raised-button (click)=\"cancel()\">Close</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">Save</button>\r\n </mat-dialog-actions>\r\n</div>","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FolderServiceConfig {\r\n apiPath?= '/';\r\n static Create(t?: any): FolderServiceConfig {\r\n const res = new FolderServiceConfig();\r\n if (t) {\r\n Object.assign(res, t);\r\n }\r\n return res;\r\n }\r\n}\r\n","import { FolderServiceConfig } from './folder-service-config';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { API_PATH } from '../injection-token';\r\nimport { API_SERVER_URL } from './gloww.service';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n\r\nexport interface DirectoryContent {\r\n files: string[];\r\n directories: string[];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FolderService {\r\n\r\n constructor(private http: HttpClient, private folderServiceConfig: FolderServiceConfig, @Optional() @Inject(API_SERVER_URL) apiServerUrl: string) {\r\n console.log(`folderServiceConfig ${folderServiceConfig.apiPath}`);\r\n console.log(`apiServierUrl ${apiServerUrl}`);\r\n }\r\n async noFolders() {\r\n return await firstValueFrom(this.http.get<boolean>(`${this.folderServiceConfig.apiPath}noFolders`));\r\n }\r\n\r\n\r\n getDirectoryContent(path: string) {\r\n return this.http.get<DirectoryContent>(`${this.folderServiceConfig.apiPath}Directories/${path ?? \"\"}`);\r\n }\r\n postDirectoryContent(path: string) {\r\n const formData = new FormData();\r\n return this.http.post<DirectoryContent>(`${this.folderServiceConfig.apiPath}Directories/${path}`, formData, {});\r\n }\r\n\r\n getFileContent(path: string) {\r\n return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, {\r\n responseType: 'text'\r\n });\r\n }\r\n getFileContentBlob(path: string) {\r\n return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, {\r\n responseType: 'blob'\r\n });\r\n }\r\n\r\n postFileContent(path: string, formData: FormData) {\r\n return this.http.post<any>(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, formData, {\r\n reportProgress: true,\r\n observe: 'events'\r\n });\r\n }\r\n}\r\n","import { HttpEventType, HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { Router, ActivatedRoute, NavigationEnd, RouterLink } from '@angular/router';\r\nimport { of } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { DirectoryContent, FolderService } from '../../../Services/folder.service';\r\nimport { PromptModel, PromptComponent } from '../../prompt/prompt.component';\r\nimport { UploadDocComponent } from '../../upload-doc/upload-doc.component';\r\nimport { UploadFileComponent } from '../../upload-file/upload-file.component';\r\nimport { FileEditComponent } from '../file-edit/file-edit.component';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\n@Component({\n selector: 'gloww-folders',\n templateUrl: './folders.component.html',\n styleUrls: ['./folders.component.scss'],\n imports: [RouterLink, MatProgressSpinner]\n})\r\nexport class FoldersComponent implements OnInit {\r\n\r\n\r\n currentDir: string;\r\n directoryContent: DirectoryContent;\r\n\r\n\r\n constructor(private folderService: FolderService, private router: Router, private route: ActivatedRoute, private dialog: MatDialog) {\r\n //flowService.getDirectoryContent(route.snapshot.params.id).subscribe(r => this.directoryContent = r);\r\n\r\n this.router.events.subscribe((event: NavigationEnd) => {\r\n if (event instanceof NavigationEnd) {\r\n const urlParts = event.url.split('/');\r\n this.currentDir = urlParts.slice(2).join(\"/\");\r\n this.directoryContent = null;\r\n folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n }\r\n })\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n addFolder() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = new PromptModel(\"New Folder\", \"Please give the name of the folder to create\", \"\", true);\r\n\r\n this.dialog.open(PromptComponent, dialogConfig).afterClosed().subscribe(folder => {\r\n if (folder) {\r\n this.folderService.postDirectoryContent(this.currentDir + '/' + folder).subscribe(c => {\r\n this.router.navigate(this.getRouterLink(folder)),\r\n error => alert(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n addFile() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = new PromptModel(\"New File\", \"Please give the name of the text file to create\", \"\", true);\r\n\r\n this.dialog.open(PromptComponent, dialogConfig).afterClosed().subscribe(fileName => {\r\n if (fileName) {\r\n this.Edit(fileName);\r\n this.directoryContent = null;\r\n this.folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n }\r\n });\r\n }\r\n\r\n addFileUpload() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = { acceptMime: 'image/*', multiple: true, allowAltFileName: true };\r\n\r\n this.dialog.open(UploadDocComponent, dialogConfig).afterClosed().subscribe(files => {\r\n if (files) {\r\n files.forEach(file => {\r\n const formData = new FormData();\r\n formData.append('file', file.data);\r\n this.UploadFile(this.currentDir + \"/\" + file.fileName, formData);\r\n this.directoryContent = null;\r\n this.folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n });\r\n }\r\n });\r\n }\r\n getRouterLink(directory?: string) {\r\n if (!this.currentDir) {\r\n return ['/folders', directory];\r\n }\r\n if (!directory) {\r\n let res = ['/folders', ...this.currentDir.split(\"/\")];\r\n res.pop();\r\n return res;\r\n }\r\n return ['/folders', ...this.currentDir.split(\"/\"), directory]\r\n }\r\n getHref(f: string) {\r\n if (!this.currentDir) {\r\n return ['/FlowMgmt', 'folders', f].join('/');\r\n }\r\n\r\n return ['/FlowMgmt', 'folders', ...this.currentDir.split(\"/\"), f].join('/');\r\n }\r\n\r\n\r\n\r\n dataURItoBlob(content) {\r\n const byteString = content;\r\n /*const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n let j = 0;\r\n for (let i = 0; i < byteString.length; i++) {\r\n let chr = byteString.charCodeAt(i);\r\n if (chr <= 255) {\r\n int8Array[j++] = chr;\r\n } else {\r\n console.log(`${chr}:${Math.floor(chr / 255)},${chr % 255}`)\r\n int8Array[j++] = Math.floor(chr / 255);\r\n int8Array[j++] = chr % 255;\r\n }\r\n }*/\r\n const te = new TextEncoder();\r\n const uint8array = te.encode(byteString);\r\n const blob = new Blob([uint8array], { type: 'text/plain;charset=UTF-8;' });\r\n return blob;\r\n }\r\n\r\n isEditable(filename: string): boolean {\r\n return filename.match(/\\.(txt|js|json|ts|cs|css|scss|xml|html|htm|exp|sh|pwsh|yml|yaml|xsl|xslt)$/ig) != null;\r\n }\r\n\r\n UploadFile(fileName: string, formData: FormData) {\r\n this.folderService.postFileContent(fileName, formData).pipe(\r\n map(event => {\r\n switch (event.type) {\r\n case HttpEventType.UploadProgress:\r\n //file.progress = Math.round(event.loaded * 100 / event.total);\r\n break;\r\n case HttpEventType.Response:\r\n return event.body;\r\n }\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n //file.inProgress = false;\r\n return of(`${fileName} upload failed.`);\r\n })).subscribe((event: any) => {\r\n if (typeof (event) === 'object') {\r\n //obj.Logo = event.Logo;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n Edit(fileName: string) {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n let content: string;\r\n this.folderService.getFileContent(this.currentDir + '/' + fileName).subscribe(c => {\r\n dialogConfig.data = { path: this.currentDir + '/' + fileName, content: c };\r\n this.dialog.open(FileEditComponent, dialogConfig).afterClosed().subscribe(data => {\r\n if (data) {\r\n const formData = new FormData();\r\n const imageName = fileName;\r\n const imageBlob = this.dataURItoBlob(data.content);\r\n const file = new File([imageBlob], imageName, { type: 'text/plain;charset=UTF-8;' });\r\n formData.append('file', file);\r\n this.UploadFile(this.currentDir + '/' + fileName, formData);\r\n //file.inProgress = true;\r\n\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n /*\r\nthis.http.get(`${environment.apiUrl}`, {\r\n responseType: 'arraybuffer', headers: headers\r\n}\r\n).subscribe(response => this.downLoadFile(response, \"application/ms-excel\"));*/\r\n\r\n downloadFile(fileName: string) {\r\n this.folderService.getFileContentBlob(this.currentDir + '/' + fileName).subscribe(blob => {\r\n this.downLoadFile2(blob, blob.type)\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Method is use to download file.\r\n * @param data - Array Buffer data\r\n * @param type - type of the document.\r\n */\r\n downLoadFile2(data: any, type: string) {\r\n let blob = new Blob([data], { type: type });\r\n let url = window.URL.createObjectURL(blob);\r\n let pwa = window.open(url);\r\n if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {\r\n alert('Please disable your Pop-up blocker and try again.');\r\n }\r\n }\r\n\r\n}\r\n","<h1>\n <i class=\"fal fa-folder\" size=\"40px\"></i> /{{currentDir}}\n @if (currentDir) {\n <i class=\"fal fa-level-up\" [routerLink]=\"getRouterLink()\"></i>\n }\n</h1>\n@if (directoryContent) {\n <div>\n <i class=\"fal fa-folder-plus\" (click)=\"addFolder()\" size=\"30px\"></i>\n <ul>\n @for (d of directoryContent.directories; track d) {\n <li>\n <i class=\"fal fa-folder\"></i><a [routerLink]=\"getRouterLink(d)\">{{d}}</a>\n </li>\n }\n </ul>\n <i class=\"fal fa-file-plus\" (click)=\"addFile()\" size=\"30px\"></i>\n <i class=\"fal fa-file-upload\" (click)=\"addFileUpload()\" size=\"30px\"></i>\n <ul>\n @for (f of directoryContent.files; track f) {\n <li>\n @if (isEditable(f)) {\n <a (click)=\"Edit(f)\" href=\"javascript:void(0);\">\n <i class=\"fal fa-file\"></i> {{f}}\n </a>\n } @else {\n <i class=\"fal fa-file fa-disabled\"></i> <a (click)=\"downloadFile(f)\" target=\"_blank\" href=\"javascript:void(0);\">{{f}}</a>\n }\n </li>\n }\n </ul>\n </div>\n} @else {\n <mat-spinner></mat-spinner>\n}\n","import { HttpResponse, HttpErrorResponse, HttpClient } from '@angular/common/http';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport FileSaver from 'file-saver';\r\nimport JSZip from 'jszip';\r\nimport { filter, map } from 'rxjs/operators';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatProgressBar } from '@angular/material/progress-bar';\r\n\r\n@Component({\n selector: 'gloww-download-progress',\n templateUrl: './download-progress.component.html',\n styleUrls: ['./download-progress.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, MatProgressBar, MatDialogActions]\n})\r\nexport class DownloadProgressComponent implements OnInit {\r\n\r\n done: number;\r\n name: string;\r\n files: { name: string, url: string }[];\r\n current: { url: string, loaded: number, total: number }[];\r\n message: string;\r\n percent: number;\r\n constructor(private dialogRef: MatDialogRef<DownloadProgressComponent>, @Inject(MAT_DIALOG_DATA) arg: any, public httpClient: HttpClient) {\r\n this.done = -1;\r\n this.name = arg.name;\r\n this.files = arg.files;\r\n this.current = []\r\n this.message = \"Download des fichiers\";\r\n this.percent = -1;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.name) {\r\n this.downloadZip();\r\n } else {\r\n this.download();\r\n }\r\n\r\n }\r\n\r\n async getFile(url: string, callback: (url: string, loaded: number, total: number) => void) {\r\n const httpOptions = {\r\n observe: \"events\",\r\n reportProgress: true,\r\n responseType: \"blob\" //as 'json'\r\n };\r\n const res = await this.httpClient.get(url, httpOptions as any).pipe(\r\n map((event: any) => {\r\n console.log(event);\r\n /*if (event.type === HttpEventType.DownloadProgress) {\r\n console.log(`download progress ${(event as HttpEventType.DownloadProgress).valueOf}`);\r\n }\r\n if (event.type === HttpEventType.Response) {\r\n console.log(\"donwload completed\");\r\n }*/\r\n if (event.type === 3) {\r\n callback(url, event.loaded, event.total)\r\n }\r\n if (event instanceof HttpResponse) {\r\n callback(url, -1, -1);\r\n }\r\n return event;\r\n }),\r\n filter((event: any) => event instanceof HttpResponse)).toPromise().catch((err: HttpErrorResponse) => {\r\n const error = err.error;\r\n return error;\r\n });\r\n return res.body;\r\n }\r\n\r\n callback(url: string, loaded: number, total: number) {\r\n const index = this.current.findIndex(c => c.url === url);\r\n if (total === -1) {\r\n this.done += 1;\r\n this.current.splice(index, 1);\r\n } else {\r\n if (index === -1) {\r\n this.current.push({ url, loaded, total });\r\n } else {\r\n this.current[index].loaded = loaded;\r\n }\r\n\r\n }\r\n }\r\n\r\n callback_zip(metadata: any) {\r\n this.percent = metadata.percent;\r\n }\r\n\r\n async downloadZip() {\r\n const zip = new JSZip();\r\n // tslint:disable-next-line:prefer-for-of\r\n this.done = 0;\r\n await Promise.all(this.files!.map(async (file) => {\r\n let fileData: any;\r\n fileData = await this.getFile(file.url, this.callback.bind(this));\r\n const b: any = new Blob([fileData], { type: '' + fileData.type + '' });\r\n zip.file(file.name, b);\r\n }));\r\n this.message = \"Génération du fichier Zip\";\r\n this.done = -1;\r\n\r\n await zip.generateAsync({ type: 'blob' }, this.callback_zip.bind(this)).then((content) => {\r\n if (content) {\r\n FileSaver.saveAs(content, this.name);\r\n }\r\n });\r\n this.dialogRef.close();\r\n }\r\n\r\n async download() {\r\n this.done = 0;\r\n await Promise.all(this.files!.map(async (file) => {\r\n let fileData: any;\r\n fileData = await this.getFile(file.url, this.callback.bind(this));\r\n const b: any = new Blob([fileData], { type: '' + fileData.type + '' });\r\n if (file.name===\"open\"){\r\n var blobURL = URL.createObjectURL(b);\r\n window.open(blobURL);\r\n }else{\r\n FileSaver.saveAs(b, file.name);\r\n }\r\n }));\r\n this.message = \"Génération du fichier Zip\";\r\n this.done = -1;\r\n this.dialogRef.close();\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>Progression Download</h2>\n\n<mat-dialog-content>\n <H3>{{message}}</H3>\n @if (percent>0) {\n <mat-progress-bar [value]=\"percent\"></mat-progress-bar>\n }\n @if (done>=0) {\n <div>\n <mat-progress-bar [value]=\"done*100/files.length\"></mat-progress-bar> {{done}}/{{files.length}}\n <br />\n <ul>\n @for ( file of current; track file; let i = $index) {\n <li>\n <span id=\"file-label\">{{file.url}}</span>\n <mat-progress-bar [value]=\"file.loaded*100/file.total\"></mat-progress-bar>\n </li>\n }\n </ul>\n </div>\n }\n</mat-dialog-content>\n\n\n<mat-dialog-actions>\n <!--<button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\n <button class=\"mat-raised-button mat-primary\" (click)=\"save()\">Save</button>-->\n</mat-dialog-actions>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { DownloadProgressComponent } from '../download-progress/download-progress.component';\r\n\r\n@Component({\n selector: 'gloww-secure-a',\n templateUrl: './secure-a.component.html',\n styleUrls: ['./secure-a.component.scss']\n})\r\nexport class SecureAComponent implements OnInit {\r\n @Input() href: string;\r\n @Input() name: string\r\n\r\n constructor(private dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n click() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = { files: [{ url: this.href, name: this.name }] };\r\n\r\n this.dialog.open(DownloadProgressComponent, dialogConfig).afterClosed().subscribe();\r\n }\r\n\r\n}\r\n","<a (click)=\"click()\" href=\"javascript:void(0);\">\r\n <ng-content></ng-content>\r\n</a>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'gloww-dummy',\n templateUrl: './dummy.component.html',\n styleUrls: ['./dummy.component.scss']\n})\r\nexport class DummyComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p>dummy works!</p>\r\n","import { Component, OnInit, Input, AfterViewInit, Inject } from '@angular/core';\r\nimport { ControlValueAccessor, UntypedFormBuilder, UntypedFormGroup, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { GlowwService } from '../../Services/gloww.service';\r\nimport { CodeEditorComponent } from '../code-editor/code-editor.component';\nimport { MatFormField } from '@angular/material/input';\nimport { MatSelect, MatOption } from '@angular/material/select';\r\n\r\n@Component({\n selector: 'gloww-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: SelectComponent\n }\n ],\n imports: [FormsModule, ReactiveFormsModule, MatFormField, MatSelect, MatOption]\n})\r\nexport class SelectComponent implements ControlValueAccessor, AfterViewInit {\r\n @Input('value') _value: any = null;\r\n @Input('objectName') objectName: any = null;\r\n @Input('returnField') returnField: any = null;\r\n @Input('displayField') displayField: any = null;\r\n @Input('displayFct') displayFct: any = null;\r\n @Input('placeHolder') placeHolder: any = null;\r\n @Input('data') data: any = null;\r\n @Input('compareField') compareField: any = null\r\n @Input() compareWith: (o1: any, o2: any) => boolean;\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n public items: any[] = [];\r\n public error: string;\r\n\r\n @Input() searchRequest: (obj?: any) => Observable<[]>;\r\n\r\n public form: UntypedFormGroup;\r\n glowwService: any;\r\n\r\n constructor(@Inject('glowwService') glowwService: any, private formBuilder: UntypedFormBuilder) {\r\n this.glowwService = glowwService;\r\n this.form = this.formBuilder.group({\r\n select: [null, null]\r\n });\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.error = null;\r\n if (!this.searchRequest) {\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n let queryParams: any = {};\r\n if (this.data) {\r\n Object.keys(this.data).forEach(name => {\r\n queryParams[name] = this.data[name];\r\n });\r\n }\r\n\r\n //debugger;\r\n this.searchRequest.call(this.glowwService, queryParams).subscribe(items => this.items = items,\r\n error => {\r\n this.error = error;\r\n });\r\n\r\n if (!this.compareWith && this.compareField) {\r\n this.compareWith = (o1, o2) => o1[this.compareField] == o2[this.compareField];\r\n }\r\n }\r\n ngAfterContentInit(): void {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n writeValue(val: any): void {\r\n val && this.form.setValue({ select: val }, { emitEvent: false });\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n this.form.valueChanges.subscribe(data => {\r\n if (this.returnField) {\r\n this.onChange(this.form.value.select[this.returnField]);\r\n } else {\r\n this.onChange(this.form.value.select);\r\n }\r\n });\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n propagateChange = (_: any) => { };\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n const status = isDisabled ? 'disable' : 'enable';\r\n //TODO\r\n }\r\n\r\n displayObj(item) {\r\n if (this.displayField) {\r\n return item[this.displayField];\r\n } else if (this.displayFct) {\r\n return this.displayFct(item);\r\n }\r\n }\r\n\r\n}\r\n\r\n","<form [formGroup]=\"form\">\n @if (error) {\n <div style=\"color:red\">{{error}}</div>\n }\n <mat-form-field>\n <mat-select [placeholder]=\"placeHolder\" formControlName=\"select\" [compareWith]=\"compareWith\">\n @for (item of items; track item) {\n <mat-option [value]=\"item\">{{displayObj(item)}}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n</form>","import { catchError, debounceTime, distinctUntilChanged, filter, map, switchMap, tap } from 'rxjs/operators';\r\nimport { Component, OnInit, Input, AfterViewInit, Inject, ChangeDetectorRef, forwardRef, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\nimport { TranslateDefaultParser } from '@ngx-translate/core';\nimport { MatFormField, MatInput } from '@angular/material/input';\nimport { MatAutocompleteTrigger, MatAutocomplete } from '@angular/material/autocomplete';\nimport { MatOption } from '@angular/material/select';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'gloww-auto-complete',\n templateUrl: './auto-complete.component.html',\n styleUrls: ['./auto-complete.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }\n ],\n imports: [FormsModule, ReactiveFormsModule, MatFormField, MatInput, MatAutocompleteTrigger, MatAutocomplete, MatOption, SafeHtmlPipe]\n})\r\nexport class AutoCompleteComponent implements ControlValueAccessor, OnInit, AfterViewInit {\r\n @Input('value') _value: any = null;\r\n @Input('objectName') objectName: any = null;\r\n @Input('searchField') searchField: any = null;\r\n @Input('returnField') returnField: any = null;\r\n @Input('displayField') displayField: any = null;\r\n @Input('displayExpr') displayExpr: any = null;\r\n @Input('displayFct') displayFct: any = null;\r\n @Input('placeHolder') placeHolder: any = null;\r\n @Input('data') data: any = null;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n public items: any[] = [];\r\n public error: string;\r\n\r\n @Input() searchRequest: (obj?: any) => Observable<[]>;\r\n\r\n public form: UntypedFormGroup;\r\n glowwService: any;\r\n resultCtrl: UntypedFormControl;\r\n public parser = new TranslateDefaultParser();\r\n\r\n constructor(@Inject('glowwService') glowwService: any, private formBuilder: UntypedFormBuilder, private ref: ChangeDetectorRef) {\r\n this.glowwService = glowwService;\r\n this.resultCtrl = new UntypedFormControl();\r\n this.form = this.formBuilder.group({\r\n __result: this.resultCtrl\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n public options: any[] = [];//Observable<unknown>;\r\n ngOnInit(): void {\r\n //debugger;\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n this.resultCtrl.valueChanges.pipe(\r\n filter(res => res != null && res.length > 2),\r\n distinctUntilChanged(),\r\n debounceTime(250),\r\n tap(() => { this.error = \"\"; this.options = []; }),\r\n switchMap(searchStr => {\r\n let searchObj = {};\r\n if (this.data) {\r\n Object.keys(this.data).forEach(k => {\r\n searchObj[k] = this.data[k];\r\n });\r\n }\r\n searchObj[this.searchField] = searchStr;\r\n return this.searchRequest.call(this.glowwService, searchObj).pipe(\r\n map(res => res),\r\n catchError(err => {\r\n this.error = err.message;\r\n this.ref.markForCheck();\r\n return of([])\r\n })\r\n )\r\n })\r\n ).subscribe(\r\n {\r\n next: (data: any[]) => {\r\n this.options = data;\r\n this.ref.markForCheck();\r\n },\r\n error: (error) => { this.error = error }\r\n }\r\n );\r\n }\r\n\r\n\r\n writeValue(val: any): void {\r\n val && this.form.setValue({ __result: val }, { emitEvent: false });\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n this.form.valueChanges.subscribe(data => {\r\n if (this.returnField) {\r\n this.onChange(this.form.value.__result[this.returnField]);\r\n } else {\r\n this.onChange(this.form.value.__result);\r\n }\r\n });\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n propagateChange = (_: any) => { };\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n const status = isDisabled ? 'disable' : 'enable';\r\n //TODO\r\n }\r\n\r\n displayObj(item) {\r\n if (!item) return null;\r\n console.log(\"displayOf\");\r\n if (this.displayField) {\r\n return item[this.displayField];\r\n } else if (this.displayExpr) {\r\n return this.parser.interpolate(this.displayExpr.replace(/\\\\\\{/g, \"{\").replace(/\\\\\\}/g, \"}\"), item);\r\n //return '?1' + this.parser.interpolate(\"{{Name}}\", { Name: \"test\" }) + '?2' + this.parser.interpolate(\"{{Name}}\", item)+'?3'+this.parser.interpolate(this.displayExpr.replace(/\\\\\\{/g,\"{\").replace(/\\\\\\}/g,\"}\"), item) +'?4'+ item;\r\n } else if (this.displayFct) {\r\n return this.displayFct(item);\r\n }\r\n }\r\n}\r\n\r\n","<div [formGroup]=\"form\" style=\"width:100%\" class=\"mainDiv\">\n <div style=\"color:red\">{{error}}</div>\n <mat-form-field style=\"width:100%\" class=\"autocff\">\n <input type=\"text\" matInput formControlName=\"__result\" [matAutocomplete]=\"auto\" [placeholder]=\"placeHolder\">\n </mat-form-field>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayObj.bind(this)\">\n @for (option of options; track option) {\n <mat-option [value]=\"option\" [innerHTML]=\"displayObj(option) | safeHtml\">\n </mat-option>\n }\n </mat-autocomplete>\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport moment from 'moment';\nimport { MatFormField, MatLabel, MatInput, MatSuffix } from '@angular/material/input';\nimport { MatDatepickerInput, MatDatepickerToggle, MatDatepicker } from '@angular/material/datepicker';\nimport { NgxMatDatetimePickerModule } from 'ngx-mat-datetime-picker-v2';\r\n\r\n@Component({\n selector: 'gloww-datetime',\n templateUrl: './datetime.component.html',\n styleUrls: ['./datetime.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: DatetimeComponent\n }\n ],\n imports: [MatFormField, MatLabel, MatInput, MatDatepickerInput, FormsModule, MatDatepickerToggle, MatSuffix, MatDatepicker, NgxMatDatetimePickerModule]\n})\r\nexport class DatetimeComponent implements ControlValueAccessor {\r\n @Input('value') _value: any = null;\r\n @Input('display') display: any = null;\r\n @Input('placeHolder') placeHolder: any = null;\r\n @Input('mode') mode: string = 'date';\r\n @Input() showSpinners: boolean = true;\r\n @Input() showSeconds: boolean = false;\r\n @Input() disableMinute: boolean = false;\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n constructor() { }\r\n\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n let dt = this._value;\r\n if (typeof (this._value) === 'string') {\r\n dt = (moment(this._value) as moment.Moment).toISOString();\r\n }\r\n this.onChange(dt);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n this.value = obj;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n}\r\n","<div style=\"width:100%\">\n @if (mode==='date') {\n <mat-form-field>\n <mat-label>{{display}}</mat-label>\n <input matInput [matDatepicker]=\"picker\" [placeholder]=\"placeHolder\" [(ngModel)]=\"value\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n }\n\n @if (mode==='datetime') {\n <mat-form-field>\n <mat-label>{{display}}</mat-label>\n <input matInput [ngxMatDatetimePicker]=\"pickerDT\" [placeholder]=\"placeHolder\" [(ngModel)]=\"value\">\n <mat-datepicker-toggle matSuffix [for]=\"$any(pickerDT)\"></mat-datepicker-toggle>\n <ngx-mat-datetime-picker #pickerDT [showSpinners]=\"showSpinners\" [showSeconds]=\"showSeconds\" [touchUi]=\"true\" [disableMinute]=\"disableMinute\">\n </ngx-mat-datetime-picker>\n </mat-form-field>\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[glowwCallback]',\n standalone: true\n})\nexport class CallbackDirective {\n\n constructor() { }\n\n}\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\n\r\nexport abstract class BaseCollectionComponent {\r\n\r\n filterform: FormGroup;\r\n constructor(private _formBuilder: FormBuilder) {\r\n this.filterform = this._formBuilder.group({\r\n filterData: [null, null],\r\n });\r\n }\r\n\r\n abstract GetDataSource(): MatTableDataSource<any>;\r\n\r\n Filter(args?) {\r\n const filterDictionary = new Map<string, string>();\r\n var jsonString = JSON.stringify(args ?? this.filterform.value.filterData);\r\n this.GetDataSource().filter = jsonString;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { IHasUnsavedData } from './ihas-unsaved-data';\r\n\r\n/*@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HasUnsavedDataGuard implements CanDeactivate<unknown> {\r\n canDeactivate(\r\n component: unknown,\r\n currentRoute: ActivatedRouteSnapshot,\r\n currentState: RouterStateSnapshot,\r\n nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n return true;\r\n }\r\n\r\n}*/\r\n\r\n@Injectable()\r\nexport class HasUnsavedDataGuard {\r\n canDeactivate(component: IHasUnsavedData): boolean {\r\n if (component.hasUnsavedData && component.hasUnsavedData()) {\r\n return confirm('You have some unsaved form data. Are you sure, you want to leave this page ? ');\r\n }\r\n return true;\r\n }\r\n}\r\n","import { FolderService } from './Services/folder.service';\r\nimport { VoiceRecognitionService } from './Services/voice-recognition.service';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { NavService } from './Services/nav.service';\r\nimport { SecureImgComponent } from './Components/secure-img/secure-img.component';\r\nimport { ConfirmationComponent } from './Components/confirmation/confirmation.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { VersionCheckService } from './Services/version-check.service';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { UploadDocComponent } from './Components/upload-doc/upload-doc.component';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { \r\n NgxMatDatetimePickerModule, // Existe selon ta liste\r\n NgxMatTimepickerComponent, // Attention : ta liste dit \"NgxMatTimepickerComponent\"\r\n NgxMatNativeDateModule, // Existe selon ta liste\r\n} from 'ngx-mat-datetime-picker-v2';\r\n/*import { NgxMatMomentModule } from '@angular-material-components/moment-adapter';*/\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { SafeHtmlPipe } from './Pipes/safe-html.pipe';\r\nimport { DisplayObjectsComponent } from './Components/display-objects/display-objects.component';\r\nimport { HeaderComponent } from './Components/header/header.component';\r\nimport { ResultTableComponent } from './Components/result-table/result-table.component';\r\nimport { SearchFormComponent } from './Components/search-form/search-form.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { PromptComponent } from './Components/prompt/prompt.component';\r\nimport { SecurePipe } from './Pipes/secure.pipe';\r\nimport { MenuListItemComponent } from './Components/menu-list-item/menu-list-item.component';\r\nimport { CodeEditorComponent } from './Components/code-editor/code-editor.component';\r\nimport { HtmlEditorComponent } from './Components/html-editor/html-editor.component';\r\nimport { HtmlFormatPipe } from './Pipes/html-format.pipe';\r\nimport { UploadFileComponent } from './Components/upload-file/upload-file.component';\r\nimport { FileSinkDirective } from './Directives/file-sink.directive';\r\nimport { FileEditComponent } from './Components/folders/file-edit/file-edit.component';\r\nimport { FoldersComponent } from './Components/folders/folders/folders.component';\r\nimport { FolderServiceConfig } from './Services/folder-service-config';\r\nimport { DownloadProgressComponent } from './Components/download-progress/download-progress.component';\r\nimport { SecureAComponent } from './Components/secure-a/secure-a.component';\r\nimport { DummyComponent } from './Components/dummy/dummy.component';\r\nimport { SelectComponent } from './Components/select/select.component';\r\nimport { AutoCompleteComponent } from './Components/auto-complete/auto-complete.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { DatetimeComponent } from './Components/datetime/datetime.component';\r\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\nimport { AngularResizeEventModule } from 'angular-resize-event';\nimport { RouteDirective } from './Directives/route.directive';\nimport { CallbackDirective } from './Directives/callback.directive';\nimport { FilterFormComponent } from './Components/filter-form/filter-form.component';\nimport { BaseCollectionComponent } from './Components/base-collection/base-collection.component';\n\nexport const GLOWW_STANDALONE_DECLARATIONS = [\n UploadDocComponent,\n SafeHtmlPipe,\n DisplayObjectsComponent,\n HeaderComponent,\n ResultTableComponent,\n SearchFormComponent,\n ConfirmationComponent,\n PromptComponent,\n SecurePipe,\n SecureImgComponent,\n MenuListItemComponent,\n CodeEditorComponent,\n HtmlEditorComponent,\n HtmlFormatPipe,\n UploadFileComponent,\n FileSinkDirective,\n FileEditComponent,\n FoldersComponent,\n DownloadProgressComponent,\n SecureAComponent,\n DummyComponent,\n SelectComponent,\n AutoCompleteComponent,\n DatetimeComponent,\n RouteDirective,\n CallbackDirective,\n FilterFormComponent\n] as const;\n\nexport const GLOWW_MODULE_EXPORTS = [\n ...GLOWW_STANDALONE_DECLARATIONS,\n MatDatepickerModule,\n NgxMatDatetimePickerModule,\n NgxMatTimepickerComponent,\n NgxMatNativeDateModule\n] as const;\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MatTableModule,\n MatSelectModule,\n MatPaginatorModule,\n MatSortModule,\n MatProgressSpinnerModule,\n MatAutocompleteModule,\n CodemirrorModule,\n AngularEditorModule,\n MatDatepickerModule,\n NgxMatDatetimePickerModule, // Existe selon ta liste\n NgxMatTimepickerComponent, // Attention : ta liste dit \"NgxMatTimepickerComponent\"\n NgxMatNativeDateModule, // Existe selon ta liste\n //NgxMatMomentModule,\n DragDropModule,\n AngularResizeEventModule,\n ...GLOWW_STANDALONE_DECLARATIONS\n ],\n providers: [],\n exports: [...GLOWW_MODULE_EXPORTS]\n})\nexport class GlowwModule {\n public static forRoot(folderServiceConfig?: FolderServiceConfig): ModuleWithProviders<GlowwModule> {\r\n console.log(`forRoot ${folderServiceConfig}`);\r\n return {\r\n ngModule: GlowwModule,\r\n providers: [\r\n VersionCheckService,\r\n NavService,\r\n VoiceRecognitionService,\r\n {\r\n provide: FolderServiceConfig,\r\n useValue: folderServiceConfig\r\n },\r\n { provide: MAT_DATE_LOCALE, useValue: 'fr' }]\r\n };\r\n }\r\n}\r\n\r\nexport { VersionCheckService } from './Services/version-check.service';\r\nexport { FolderService } from './Services/folder.service'\r\nexport { DialogService } from './Services/dialog.service';\r\nexport { VoiceRecognitionService } from './Services/voice-recognition.service';\r\nexport { DisplayObjectsComponent } from './Components/display-objects/display-objects.component';\nexport { HeaderComponent } from './Components/header/header.component';\nexport { ResultTableComponent } from './Components/result-table/result-table.component';\nexport { SearchFormComponent } from './Components/search-form/search-form.component';\nexport { FilterFormComponent } from './Components/filter-form/filter-form.component';\nexport { BaseCollectionComponent } from './Components/base-collection/base-collection.component';\nexport { UploadDocComponent } from './Components/upload-doc/upload-doc.component';\nexport { UploadFileComponent } from './Components/upload-file/upload-file.component';\nexport { ConfirmationComponent } from './Components/confirmation/confirmation.component';\nexport { PromptComponent } from './Components/prompt/prompt.component';\nexport { SecureImgComponent } from './Components/secure-img/secure-img.component';\nexport { MenuListItemComponent } from './Components/menu-list-item/menu-list-item.component';\nexport { CodeEditorComponent } from './Components/code-editor/code-editor.component';\nexport { HtmlEditorComponent } from './Components/html-editor/html-editor.component';\nexport { FileEditComponent } from './Components/folders/file-edit/file-edit.component';\nexport { FoldersComponent } from './Components/folders/folders/folders.component';\nexport { DownloadProgressComponent } from './Components/download-progress/download-progress.component';\nexport { DummyComponent } from './Components/dummy/dummy.component'\nexport { SelectComponent } from './Components/select/select.component'\nexport { DatetimeComponent } from './Components/datetime/datetime.component'\nexport { AutoCompleteComponent } from './Components/auto-complete/auto-complete.component'\nexport { SecureAComponent } from './Components/secure-a/secure-a.component';\nexport { SafeHtmlPipe } from './Pipes/safe-html.pipe';\nexport { SecurePipe } from './Pipes/secure.pipe';\nexport { HtmlFormatPipe } from './Pipes/html-format.pipe';\nexport { FileSinkDirective } from './Directives/file-sink.directive';\nexport { RouteDirective } from './Directives/route.directive';\nexport { CallbackDirective } from './Directives/callback.directive';\nexport { HasUnsavedDataGuard } from './Guards/has-unsaved-data.guard'\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlowwSecurityService {\r\n\r\n constructor() { }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport class GlowwValidators {\r\n public static isObject(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (typeof control.value !== 'object') {\r\n return { 'isNotObject': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isEmail(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotEmail': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isInteger(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:^\\s*\\d*\\s*$)/\r\n if ((typeof control.value !== 'number') && (typeof control.value !== 'string' || !control.value.toString().match(re))) {\r\n return { 'isNotInteger': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isNumber(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:(?:^\\s*(?:\\d+(?:[\\.]\\d+)?)?\\s*$))/\r\n if ((typeof control.value !== 'number') && (typeof control.value !== 'string' || !control.value.toString().match(re))) {\r\n return { 'isNotNumber': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isUrl(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(((https?:(?:\\/\\/)?)?(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\/[\\+~%\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isIPv4(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n public static isIPv4Range(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/\\d{1,2}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isIPv6(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n public static isIPv6Range(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/\\d{1-3}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isMacAddr(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(?:[[:xdigit:]]{2}([-:]))(?:[[:xdigit:]]{2}\\1){4}[[:xdigit:]]{2}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isInternationalPhoneNr(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\\d{1,14}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isJson(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n if (typeof control.value === 'object') { return null; }\r\n if (typeof control.value !== 'string') {\r\n return { 'isNotJson': true };\r\n }\r\n try {\r\n const j = JSON.parse(control.value);\r\n } catch (ex) {\r\n return { 'invalidJson': true };\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of gloww\r\n */\r\n\r\nexport * from './lib/Services/gloww.service';\r\nexport * from './lib/Services/version-check.service';\r\nexport * from './lib/Services/dialog.service';\r\nexport * from './lib/Services/nav.service';\r\nexport * from './lib/gloww.module';\r\nexport * from './lib/Models/nav-item';\r\nexport * from './lib/Pipes/safe-html.pipe';\nexport * from './lib/Pipes/secure.pipe';\nexport * from './lib/Pipes/html-format.pipe';\nexport * from './lib/Directives/callback.directive';\nexport * from './lib/Directives/file-sink.directive';\nexport * from './lib/Directives/route.directive';\nexport * from './lib/Components/upload-doc/upload-doc.component';\nexport * from './lib/Components/upload-file/upload-file.component';\nexport * from './lib/Components/display-objects/display-objects.component';\nexport * from './lib/Components/confirmation/confirmation.component';\nexport * from './lib/Components/prompt/prompt.component';\nexport * from './lib/Components/secure-img/secure-img.component';\nexport * from './lib/Components/secure-a/secure-a.component';\nexport * from './lib/Components/header/header.component';\nexport * from './lib/Components/result-table/result-table.component';\nexport * from './lib/Components/search-form/search-form.component';\nexport * from './lib/Components/filter-form/filter-form.component';\nexport * from './lib/Components/dummy/dummy.component'\nexport * from './lib/Components/datetime/datetime.component'\nexport * from './lib/Components/select/select.component'\nexport * from './lib/Components/auto-complete/auto-complete.component'\nexport * from './lib/Components/menu-list-item/menu-list-item.component';\nexport * from './lib/Components/code-editor/code-editor.component';\nexport * from './lib/Components/html-editor/html-editor.component';\nexport * from './lib/Components/folders/file-edit/file-edit.component';\nexport * from './lib/Components/folders/folders/folders.component';\nexport * from './lib/Components/download-progress/download-progress.component';\nexport * from './lib/Guards/has-unsaved-data.guard'\nexport * from './lib/Guards/ihas-unsaved-data'\n\nexport * from './lib/gloww-security/Components/login/login.component';\nexport * from './lib/gloww-security/Components/change-password-dlg/change-password-dlg.component';\nexport * from './lib/gloww-security/Components/user-menu/user-menu.component';\nexport * from './lib/gloww-security/Components/social-network/social-network.component';\nexport * from './lib/gloww-security/Components/social-network-dlg/social-network-dlg.component';\nexport * from './lib/gloww-security/Services/gloww-security.service';\nexport * from './lib/gloww-security/gloww-security.module';\nexport * from './lib/gloww-security/Services/authentication-service-config';\nexport * from './lib/Services/folder.service';\nexport * from './lib/Services/folder-service-config';\nexport * from './lib/Helpers/gloww-validators';\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i2.AuthenticationServiceConfig","i4.AuthenticationService","i5","delay","delayOperator","i1.NavService","i1.SnippetsService","i2.GlowwService","i3","i1.AuthenticationService","i3.AuthenticationService","i4.AuthenticationServiceConfig","i2.AuthenticationService","i3.AuthenticationServiceConfig","i3.VoiceRecognitionService","i4","CodeEditorComponent_1","i1.FolderService"],"mappings":"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"}
1
+ {"version":3,"file":"gloww-gloww.mjs","sources":["../../../projects/gloww/src/lib/Services/gloww.service.ts","../../../projects/gloww/src/lib/Services/version-check.service.ts","../../../projects/gloww/src/lib/Directives/route.directive.ts","../../../projects/gloww/src/lib/Pipes/safe-html.pipe.ts","../../../projects/gloww/src/lib/Components/confirmation/confirmation.component.ts","../../../projects/gloww/src/lib/Components/confirmation/confirmation.component.html","../../../projects/gloww/src/lib/Services/dialog.service.ts","../../../projects/gloww/src/lib/Services/nav.service.ts","../../../projects/gloww/src/lib/Services/voice-recognition.service.ts","../../../projects/gloww/src/lib/Components/secure-img/secure-img.component.ts","../../../projects/gloww/src/lib/Directives/file-sink.directive.ts","../../../projects/gloww/src/lib/Components/upload-file/upload-file.component.ts","../../../projects/gloww/src/lib/Components/upload-file/upload-file.component.html","../../../projects/gloww/src/lib/Components/upload-doc/upload-doc.component.ts","../../../projects/gloww/src/lib/Components/upload-doc/upload-doc.component.html","../../../projects/gloww/src/lib/Components/search-form/search-form.component.ts","../../../projects/gloww/src/lib/Components/search-form/search-form.component.html","../../../projects/gloww/src/lib/Components/header/header.component.ts","../../../projects/gloww/src/lib/Components/header/header.component.html","../../../projects/gloww/src/lib/Components/result-table/result-table.component.ts","../../../projects/gloww/src/lib/Components/result-table/result-table.component.html","../../../projects/gloww/src/lib/Components/filter-form/filter-form.component.ts","../../../projects/gloww/src/lib/Components/filter-form/filter-form.component.html","../../../projects/gloww/src/lib/gloww-security/Models/oauthassociation.ts","../../../projects/gloww/src/lib/gloww-security/Services/authentication-service-config.ts","../../../projects/gloww/src/lib/gloww-security/Services/authentication.service.ts","../../../projects/gloww/src/lib/Components/display-objects/display-objects.component.ts","../../../projects/gloww/src/lib/Components/display-objects/display-objects.component.html","../../../projects/gloww/src/lib/Components/prompt/prompt.component.ts","../../../projects/gloww/src/lib/Components/prompt/prompt.component.html","../../../projects/gloww/src/lib/Pipes/retry-with-delay.ts","../../../projects/gloww/src/lib/Pipes/secure.pipe.ts","../../../projects/gloww/src/lib/Components/menu-list-item/menu-list-item.component.ts","../../../projects/gloww/src/lib/Components/menu-list-item/menu-list-item.component.html","../../../projects/gloww/src/lib/Services/snippets.service.ts","../../../projects/gloww/src/lib/Components/code-editor/code-editor.component.ts","../../../projects/gloww/src/lib/Components/code-editor/code-editor.component.html","../../../projects/gloww/src/lib/Pipes/html-format.pipe.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network/social-network.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network/social-network.component.html","../../../projects/gloww/src/lib/gloww-security/Components/login/login.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/login/login.component.html","../../../projects/gloww/src/lib/gloww-security/Helpers/jwt.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/error.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.html","../../../projects/gloww/src/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.html","../../../projects/gloww/src/lib/gloww-security/Components/user-menu/user-menu.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/user-menu/user-menu.component.html","../../../projects/gloww/src/lib/gloww-security/Helpers/staging.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/auth.guard.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/administrator.guard.ts","../../../projects/gloww/src/lib/gloww-security/gloww-security.module.ts","../../../projects/gloww/src/lib/Components/html-editor/html-editor.component.ts","../../../projects/gloww/src/lib/Components/html-editor/html-editor.component.html","../../../projects/gloww/src/lib/Components/folders/file-edit/file-edit.component.ts","../../../projects/gloww/src/lib/Components/folders/file-edit/file-edit.component.html","../../../projects/gloww/src/lib/Services/folder-service-config.ts","../../../projects/gloww/src/lib/Services/folder.service.ts","../../../projects/gloww/src/lib/Components/folders/folders/folders.component.ts","../../../projects/gloww/src/lib/Components/folders/folders/folders.component.html","../../../projects/gloww/src/lib/Components/download-progress/download-progress.component.ts","../../../projects/gloww/src/lib/Components/download-progress/download-progress.component.html","../../../projects/gloww/src/lib/Components/secure-a/secure-a.component.ts","../../../projects/gloww/src/lib/Components/secure-a/secure-a.component.html","../../../projects/gloww/src/lib/Components/dummy/dummy.component.ts","../../../projects/gloww/src/lib/Components/dummy/dummy.component.html","../../../projects/gloww/src/lib/Components/select/select.component.ts","../../../projects/gloww/src/lib/Components/select/select.component.html","../../../projects/gloww/src/lib/Components/auto-complete/auto-complete.component.ts","../../../projects/gloww/src/lib/Components/auto-complete/auto-complete.component.html","../../../projects/gloww/src/lib/Components/datetime/datetime.component.ts","../../../projects/gloww/src/lib/Components/datetime/datetime.component.html","../../../projects/gloww/src/lib/Directives/callback.directive.ts","../../../projects/gloww/src/lib/Components/base-collection/base-collection.component.ts","../../../projects/gloww/src/lib/Guards/has-unsaved-data.guard.ts","../../../projects/gloww/src/lib/gloww.module.ts","../../../projects/gloww/src/lib/gloww-security/Services/gloww-security.service.ts","../../../projects/gloww/src/lib/Helpers/gloww-validators.ts","../../../projects/gloww/src/public-api.ts","../../../projects/gloww/src/gloww-gloww.ts"],"sourcesContent":["import { Injectable, InjectionToken, Injector } from '@angular/core';\r\nimport { firstValueFrom, Subject } from 'rxjs';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { PlatformLocation } from '@angular/common';\r\nimport { Location } from '@angular/common';\r\n\r\nexport const API_SERVER_URL = new InjectionToken<string>('ApiServerUrl.config');\r\nexport const GLOWW_APPLI = new InjectionToken<string>('GlowwAppli.config');\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlowwService {\r\n public baseHref: string;\r\n public InternalBasePath = '???';\r\n basePathChange: Subject<string> = new Subject<string>();\r\n public get basePath() {\r\n return this.InternalBasePath;\r\n }\r\n public set basePath(value: string) {\r\n //alert(`setBasePath ${value}`)\r\n //if (value.match(/_mgmt(\\/|$)/)) {\r\n const change = this.InternalBasePath != value;\r\n var oldUrl = this.location.path();\r\n var newUrl = oldUrl.replace(`/${this.InternalBasePath}/`, `/${value}/`);\r\n console.log(`GlowwService setBasePath (${this.InternalBasePath},${value}) ${oldUrl} -> ${newUrl}`);\r\n this.InternalBasePath = value;\r\n if (change) {\r\n this.location.go(newUrl);\r\n this.basePathChange.next(newUrl);\r\n }\r\n //} else {\r\n //console.log(`not mgmt ${value}`);;\r\n //}\r\n }\r\n public baseUrl = '/';\r\n protected http: HttpClient;\r\n protected BasePath: string;\r\n protected ApiServerUrl: string;\r\n protected platformLocation: PlatformLocation;\r\n protected location: Location\r\n constructor(private _injector: Injector) {\r\n this.location = _injector.get(Location);\r\n this.http = _injector.get(HttpClient);\r\n this.platformLocation = _injector.get(PlatformLocation);\r\n try { this.ApiServerUrl = _injector.get(API_SERVER_URL); } catch { }\r\n try { this.BasePath = _injector.get(GLOWW_APPLI) } catch { } this.BasePath = this.BasePath ?? 'GlowwApi';\r\n\r\n //@Optional() @Inject(API_SERVER_URL) apiServerUrl: string, @Optional() @Inject(GLOWW_APPLI) glowwAppli: string\r\n this.baseHref = this.platformLocation.getBaseHrefFromDOM();\r\n this.InternalBasePath = this.BasePath;\r\n if (this.ApiServerUrl) { this.baseUrl = this.ApiServerUrl; if (!this.baseUrl.endsWith('/')) { this.baseUrl += '/'; } }\r\n }\r\n public getParams(obj: any) {\r\n let params = new HttpParams();\r\n if (!obj) { return params; }\r\n Object.keys(obj).forEach(p => {\r\n if (obj[p]) {\r\n params = params.append(p.toString(), obj[p].toString());\r\n }\r\n });\r\n return params;\r\n }\r\n\r\n public async noSrc() {\r\n return await firstValueFrom(this.http.get<boolean>(`/admin/ORMS/${this.InternalBasePath.replace(/_mgmt/, \"\")}/noSrc`));\r\n }\r\n\r\n public async noRestSecurity() {\r\n return await firstValueFrom(this.http.get<boolean>(`/admin/ORMS/${this.InternalBasePath.replace(/_mgmt/, \"\")}/noRestSecurity`));\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VersionCheckService {\r\n // this will be replaced by actual hash post-build.js\r\n private currentHash = '{{POST_BUILD_ENTERS_HASH_HERE}}';\r\n private callback;\r\n public url;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n /**\r\n * Checks in every set frequency the version of frontend application\r\n * @param url the url to test (default : /version.json)\r\n * @param frequency - in milliseconds, defaults to 1 minutes\r\n * @param callback - function to call when the version is different, default askReloadApplication\r\n */\r\n public initVersionCheck(url = '/version.json', frequency = 1000 * 60, callback = this.askReloadApplication) {\r\n this.callback = callback;\r\n this.url = url;\r\n this.checkVersion();\r\n setInterval(() => {\r\n this.checkVersion();\r\n }, frequency);\r\n }\r\n\r\n public askReloadApplication() {\r\n console.log('askReload');\r\n // ENTER YOUR CODE TO DO SOMETHING UPON VERSION CHANGE\r\n if (confirm('Une nouvelle version est disponible sur le serveur. Il est nécessaire de recharger l\\'application. Veuillez confirmer le rechargement de l\\'application')) {\r\n this.reloadApplication();\r\n }\r\n }\r\n public reloadApplication() {\r\n console.log('reload');\r\n let search = location.search;\r\n if (search) { search += '&'; }\r\n search += '___t=' + new Date().getTime();\r\n console.log(`Search ${search}`);\r\n location.search = search;\r\n }\r\n\r\n private checkVersion() {\r\n // timestamp these requests to invalidate caches\r\n this.http.get(this.url + '?t=' + new Date().getTime())\r\n // .first()\r\n .subscribe(\r\n (response: any) => {\r\n console.log('get version ok');\r\n const hash = response.hash;\r\n const hashChanged = this.hasHashChanged(this.currentHash, hash);\r\n console.log(`HASH : Current : ${this.currentHash}, New : ${hash}, Changed ${hashChanged}`);\r\n\r\n // If new version, do something\r\n if (hashChanged) {\r\n this.callback();\r\n }\r\n // store the new hash so we wouldn't trigger versionChange again\r\n // only necessary in case you did not force refresh\r\n this.currentHash = hash;\r\n },\r\n (err) => {\r\n console.error(err, 'Could not get version');\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Checks if hash has changed.\r\n * This file has the JS hash, if it is a different one than in the version.json\r\n * we are dealing with version change\r\n * @param currentHash currenthash\r\n * @param newHash newhash\r\n * @returns the currenthash and newhash are different\r\n */\r\n private hasHashChanged(currentHash, newHash) {\r\n return currentHash !== newHash;\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Router } from '@angular/router';\n\n\n@Directive({\n selector: '[glowwRoute]',\n standalone: true\n})\nexport class RouteDirective {\n\r\n constructor(private el: ElementRef, private router: Router) { }\r\n @Input() dlg: any;\r\n\r\n @HostListener('click', ['$event.target']) onClick($event) {\r\n console.info('clicked: ' + $event.getAttribute('data-link'));\r\n if (this.dlg) { this.dlg.close(true); }\r\n var goRoute = $event.getAttribute('data-link');\r\n this.router.navigate([goRoute]);\r\n\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n standalone: true\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\r\n\tconstructor(private sanitizer: DomSanitizer) { }\r\n\r\n\ttransform(style) {\r\n\t\treturn this.sanitizer.bypassSecurityTrustHtml(style);\r\n\t\t// return this.sanitizer.bypassSecurityTrustStyle(style);\r\n\t\t// return this.sanitizer.bypassSecurityTrustXxx(style); - see docs\r\n\t}\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { RouteDirective } from '../../Directives/route.directive';\nimport { MatButton } from '@angular/material/button';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'glw-confirmation',\n templateUrl: './confirmation.component.html',\n styleUrls: ['./confirmation.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, RouteDirective, MatDialogActions, MatButton, SafeHtmlPipe]\n})\r\nexport class ConfirmationComponent {\r\n\r\n title: string;\r\n message: string;\r\n mode: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<ConfirmationComponent>, @Inject(MAT_DIALOG_DATA) public data: ConfirmationModel) {\r\n // Update view with given values\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.mode = data.mode ?? 'confirmation';\r\n }\r\n\r\n onConfirm(): void {\r\n // Close the dialog, return true\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onDismiss(): void {\r\n // Close the dialog, return false\r\n this.dialogRef.close(false);\r\n }\r\n\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\nexport class ConfirmationModel {\r\n constructor(public title: string, public message: string, public mode?: string) {\r\n }\r\n}\r\n","<h1 mat-dialog-title>\n {{title}}\n</h1>\n\n<div mat-dialog-content>\n <p [innerHTML]=\"message | safeHtml\" glowwRoute [dlg]=\"dialogRef\"></p>\n</div>\n\n@if (mode==='confirmation') {\n <mat-dialog-actions>\n <button mat-button (click)=\"onDismiss()\">No</button>\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Yes</button>\n </mat-dialog-actions>\n}\n@if (mode==='alert') {\n <mat-dialog-actions>\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">OK</button>\n </mat-dialog-actions>\n}","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationComponent, ConfirmationModel } from '../Components/confirmation/confirmation.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n constructor(protected dialog: MatDialog) { }\r\n\r\n createConfirmationDialog(title: string, message: string, mode?: string) {\r\n const dialogData = new ConfirmationModel(title, message, mode);\r\n return this.dialog.open(ConfirmationComponent, {\r\n maxWidth: '80%',\r\n data: dialogData,\r\n disableClose: true\r\n });\r\n }\r\n\r\n\r\n openConfirmationDialog(title: string, message: string, mode?: string) {\r\n return this.createConfirmationDialog(title, message, mode).afterClosed();\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { Event, NavigationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NavService {\r\n public appDrawer: any;\r\n public currentUrl = new BehaviorSubject<string>(undefined);\r\n\r\n constructor(private router: Router) {\r\n this.router.events.subscribe((event: Event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.currentUrl.next(event.urlAfterRedirects);\r\n }\r\n });\r\n }\r\n\r\n public closeNav() {\r\n this.appDrawer.close();\r\n }\r\n\r\n public openNav() {\r\n this.appDrawer.open();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n\r\ndeclare var webkitSpeechRecognition: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VoiceRecognitionService {\r\n\r\n recognition = new webkitSpeechRecognition();\r\n isStoppedSpeechRecog = false;\r\n public text = '';\r\n tempWords: any;\r\n\r\n constructor() { }\r\n\r\n init() {\r\n\r\n this.recognition.interimResults = true;\r\n this.recognition.lang = 'fr-be';\r\n\r\n this.recognition.addEventListener('result', (e: any) => {\r\n const transcript = Array.from(e.results)\r\n .map((result: any) => result[0])\r\n .map((result) => result.transcript)\r\n .join('');\r\n this.tempWords = transcript;\r\n console.log(transcript);\r\n });\r\n }\r\n\r\n start() {\r\n this.isStoppedSpeechRecog = false;\r\n this.recognition.start();\r\n console.log(\"Speech recognition started\")\r\n this.recognition.addEventListener('end', (condition: any) => {\r\n if (this.isStoppedSpeechRecog) {\r\n this.recognition.stop();\r\n console.log(\"End speech recognition\")\r\n } else {\r\n this.wordConcat()\r\n this.recognition.start();\r\n }\r\n });\r\n }\r\n stop() {\r\n this.isStoppedSpeechRecog = true;\r\n this.wordConcat()\r\n this.recognition.stop();\r\n console.log(\"End speech recognition\")\r\n }\r\n\r\n wordConcat() {\r\n this.text = this.text + ' ' + this.tempWords + '.';\r\n this.tempWords = '';\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { switchMap, map } from 'rxjs/operators';\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\n selector: 'secure-img',\n template: `\n <img [src]=\"dataUrl$ | async\" style=\"object-fit: contain;\"/>\n `,\n imports: [AsyncPipe]\n})\r\nexport class SecureImgComponent implements OnChanges {\r\n // This code block just creates an rxjs stream from the src\r\n // this makes sure that we can handle source changes\r\n // or even when the component gets destroyed\r\n // So basically turn src into src$\r\n @Input() public src!: string;\r\n private src$ = new BehaviorSubject(this.src);\r\n ngOnChanges(): void {\r\n this.src$.next(this.src);\r\n }\r\n\r\n // this stream will contain the actual url that our img tag will load\r\n // everytime the src changes, the previous call would be canceled and the\r\n // new resource would be loaded\r\n dataUrl$ = this.src$.pipe(switchMap(url => this.loadImage(url)))\r\n\r\n // we need HttpClient to load the image\r\n constructor(private httpClient: HttpClient, private domSanitizer: DomSanitizer) {\r\n }\r\n\r\n private loadImage(url: string): Observable<any> {\r\n return this.httpClient\r\n // load the image as a blob\r\n .get(url, { responseType: 'blob' })\r\n // create an object url of that blob that we can use in the src attribute\r\n .pipe(map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))))\r\n }\r\n}\r\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[glowwFileSink]',\n standalone: true\n})\nexport class FileSinkDirective {\n\r\n @HostBinding('class.fileover') fileOver: boolean;\r\n @Output() fileDropped = new EventEmitter<any>();\r\n\r\n // Dragover listener\r\n @HostListener('dragover', ['$event']) onDragOver(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n }\r\n\r\n // Dragleave listener\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n }\r\n\r\n // Drop listener\r\n @HostListener('drop', ['$event']) public ondrop(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n let files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ElementRef, Inject, Input, AfterViewInit } from '@angular/core';\r\nimport { UntypedFormGroup, FormBuilder, FormArray, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { FileSinkDirective } from '../../Directives/file-sink.directive';\nimport { NgClass } from '@angular/common';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-upload-file',\n templateUrl: './upload-file.component.html',\n styleUrls: ['./upload-file.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: UploadFileComponent\n }\n ],\n imports: [MatCard, FileSinkDirective, MatCardContent, NgClass, MatProgressBar, MatCardActions, MatButton]\n})\r\nexport class UploadFileComponent implements ControlValueAccessor, AfterViewInit {\r\n @ViewChild('fileUpload') fileUpload: ElementRef;\r\n @Input() multiple: boolean = false;\r\n @Input() allowAltFileName: boolean = false;\r\n @Input() acceptMime: string = '*/*';\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n form: UntypedFormGroup;\r\n\r\n files = [];\r\n\r\n constructor() {\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n const fileUpload = this.fileUpload.nativeElement;\r\n fileUpload.onchange = () => {\r\n if (!this.multiple || !this.files) {\r\n this.files = [];\r\n }\r\n for (const file of fileUpload.files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });\r\n //if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }\r\n }\r\n this.onChange(this.files);\r\n this.onTouched();\r\n };\r\n }\r\n\r\n get value() {\r\n return this.files;\r\n //return this._value;\r\n }\r\n\r\n set value(val) {\r\n this.files = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n\r\n\r\n writeValue(obj: any): void {\r\n this.value = obj;\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n\r\n SelectFiles() {\r\n if (this.files && this.files.length > 0 && !this.multiple) {\r\n if (confirm(\"Do you want to replace current file ?\")) {\r\n this.files = [];\r\n } else {\r\n return;\r\n }\r\n }\r\n this.fileUpload.nativeElement.click();\r\n }\r\n\r\n ChangeAltName(i, $event) {\r\n this.files[i].altFileName = $event.target.value;\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n\r\n onFileDropped($event) {\r\n this.prepareFilesList($event);\r\n }\r\n prepareFilesList(files: Array<any>) {\r\n if (files.length > 1 && !this.multiple) {\r\n alert(\"You can only drop an only file at once\");\r\n return;\r\n }\r\n if (this.files && this.files.length > 0 && !this.multiple) {\r\n if (confirm(\"Do you want to replace current file ?\")) {\r\n this.files = [];\r\n } else {\r\n return;\r\n }\r\n }\r\n if (!this.files) this.files = [];\r\n for (const file of files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });\r\n }\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n\r\n /**\r\n * format bytes\r\n * @param bytes (File size in bytes)\r\n * @param decimals (Decimals point)\r\n */\r\n formatBytes(bytes, decimals = 2) {\r\n if (bytes === 0) {\r\n return \"0 Bytes\";\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals;\r\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\r\n }\r\n\r\n deleteFile(index: number) {\r\n if (this.files[index].progress && this.files[index].progress < 100) {\r\n console.log(\"Upload in progress.\");\r\n return;\r\n }\r\n this.files.splice(index, 1);\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n}\r\n\r\n","<mat-card appearance=\"outlined\" glowwFileSink (fileDropped)=\"onFileDropped($event)\" style=\"height:calc(100% - 40px)\">\n <mat-card-content style=\"min-height:100px;height:calc(100% - 60px)\">\n @if (files && files.length) {\n <div class=\"files-list\" style=\"height:calc(100% - 60px)\">\n @for (file of files; track file; let i = $index) {\n <div class=\"single-file\" [ngClass]=\"file.status\">\n <i class=\"fa-thin fa-file fa-lg\"></i>\n <div class=\"info\">\n <h4 class=\"name\">\n {{ file?.fileName }}\n </h4>\n <p class=\"size\">\n {{ formatBytes(file?.size) }}\n </p>\n <mat-progress-bar [value]=\"file.progress\"></mat-progress-bar>\n </div>\n <i class=\"fa-thin fa-trash fa-lg\" (click)=\"deleteFile(i)\"></i>\n </div>\n }\n </div>\n }\n @if (!files || !files.length) {\n <div style=\"height:calc(100% - 60px)\">No file(s) selected</div>\n }\n <input type=\"file\" #fileUpload id=\"fileUpload\" name=\"fileUpload\" [accept]=\"acceptMime\" style=\"display:none;\" [multiple]=\"multiple\" />\n </mat-card-content>\n <mat-card-actions style=\"text-align:center\">\n <button mat-raised-button color=\"accent\" (click)=\"SelectFiles()\">\n <i class=\"fal fa-file-upload\"></i> @if (!multiple) {\n <span>Select file or Drop a file</span>\n }\n @if (multiple) {\n <span>Select file(s) or drop file(s)</span>\n }\n </button>\n</mat-card-actions>\n</mat-card>","import { Component, OnInit, ViewChild, ElementRef, Inject, Input } from '@angular/core';\r\nimport { FormGroup, UntypedFormBuilder, FormArray, FormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { UploadFileComponent } from '../upload-file/upload-file.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-upload-doc',\n templateUrl: './upload-doc.component.html',\n styleUrls: ['./upload-doc.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, UploadFileComponent, FormsModule, MatDialogActions, MatButton]\n})\r\nexport class UploadDocComponent {\r\n\r\n multiple: boolean = false;\r\n allowAltFileName: boolean = false;\r\n\r\n acceptMime = '*/*';\r\n files = [];\r\n callback: (files: any) => Observable<any>;\r\n constructor(private dialogRef: MatDialogRef<UploadDocComponent>, @Inject(MAT_DIALOG_DATA) public data: any, private formBuilder: UntypedFormBuilder) {\r\n if (data && data.acceptMime) {\r\n this.acceptMime = data.acceptMime;\r\n }\r\n if (data && data.multiple) {\r\n this.multiple = data.multiple;\r\n }\r\n if (data && data.allowAltFileName) {\r\n this.allowAltFileName = data.allowAltFileName;\r\n }\r\n if (data && data.callback) {\r\n this.callback = data.callback;\r\n }\r\n }\r\n\r\n /*\r\n get fileNames(): FormArray {\r\n return this.form.get(\"fileNames\") as FormArray\r\n }\r\n\r\n FileName(fn: string): FormGroup {\r\n return this.formBuilder.group({\r\n fileName: fn\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onClick() {\r\n const fileUpload = this.fileUpload.nativeElement; fileUpload.onchange = () => {\r\n if (this.multiple) {\r\n this.files = [];\r\n if (this.allowAltFileName) { this.fileNames.clear(); }\r\n }\r\n for (const file of fileUpload.files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name });\r\n if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }\r\n }\r\n };\r\n fileUpload.click();\r\n }\r\n\r\n private uploadFiles() {\r\n this.fileUpload.nativeElement.value = '';\r\n this.files.forEach(file => {\r\n alert('upload file');\r\n // this.uploadFile(file);\r\n });\r\n }\r\n */\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n save() {\r\n console.log(\"save UploadDoc\");\r\n console.log(`this.files.length ${this.files.length}`);\r\n /*if (this.allowAltFileName) {\r\n for (let i = 0; i < this.files.length; i++) {\r\n // Comment to be sure new version\r\n this.files[i].name = this.fileNames.value[i].fileName;\r\n }\r\n }*/\r\n if (this.callback) {\r\n this.callback(this.files).subscribe(res => this.dialogRef.close(this.files));\r\n } else {\r\n this.dialogRef.close(this.files);\r\n }\r\n }\r\n}\r\n","<h2 mat-dialog-title>\r\n Association d'un nouveau document</h2>\r\n\r\n<mat-dialog-content>\r\n\r\n <gloww-upload-file [(ngModel)]=\"files\" [acceptMime]=\"acceptMime\" [multiple]=\"multiple\" [allowAltFileName]=\"allowAltFileName\"></gloww-upload-file>\r\n\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-raised-button (click)=\"cancel()\">Close</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">Save</button>\r\n</mat-dialog-actions>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'glw-search-form',\n templateUrl: './search-form.component.html',\n styleUrls: ['./search-form.component.scss']\n})\r\nexport class SearchFormComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'glw-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\r\nexport class HeaderComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { AfterContentInit, Component, ContentChildren, OnInit, QueryList } from '@angular/core';\r\nimport { MatColumnDef } from '@angular/material/table';\r\n\r\n@Component({\n selector: 'glw-result-table',\n templateUrl: './result-table.component.html',\n styleUrls: ['./result-table.component.scss']\n})\r\nexport class ResultTableComponent implements OnInit, AfterContentInit {\r\n\t@ContentChildren(MatColumnDef) columnDefs: QueryList<MatColumnDef>;\r\n\tconstructor() { }\r\n\r\n\tngAfterContentInit(): void {\r\n\t\tconsole.log(this.columnDefs.length);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\r\n\r\n@Component({\n selector: 'glw-filter-form',\n templateUrl: './filter-form.component.html',\n styleUrls: ['./filter-form.component.css'],\n imports: [MatCard, MatCardContent, MatCardActions, MatButton, MatIcon]\n})\r\nexport class FilterFormComponent implements OnInit {\r\n @Output() filter = new EventEmitter<any>();\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n onFilter() {\r\n this.filter.emit(\"xxx\");\r\n }\r\n\r\n}\r\n","<mat-card appearance=\"outlined\">\r\n <mat-card-content>\r\n <ng-content></ng-content>\r\n </mat-card-content>\r\n <mat-card-actions align=\"end\">\r\n <button mat-stroked-button color=\"accent\" (click)=\"onFilter()\">\r\n <mat-icon>search</mat-icon>\r\n Filter\r\n </button>\r\n </mat-card-actions>\r\n</mat-card>","export class Oauthassociation {\r\n public idOAuth: number;\r\n public provider: string;\r\n public name: string;\r\n public value: string;\r\n\r\n public toString() {\r\n return this.provider;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationServiceConfig {\r\n currentUserVariableName?= 'currentuser';\r\n authenticationUrl?= `/admin/authusers/authenticate`;\r\n changePasswordUrl?= `/admin/authusers/changePassword`;\r\n askResetPasswordCodeUrl?= `/admin/authusers/askResetPasswordCode`;\r\n resetPassworUrl?= `/admin/authusers/resetPassword`;\r\n environment?= '__GlowwSecurity__';\r\n showDomain?= false;\r\n askGSM?= false;\r\n googleClientId?= '';\r\n facebookClientId?= '';\r\n amazonClientId?= '';\r\n microsoftClientId?= '';\r\n}\r\n","import { Oauthassociation } from './../Models/oauthassociation';\r\nimport { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\n\r\nimport { User } from '../Models/user';\r\nimport { AuthenticationServiceConfig } from './authentication-service-config';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationService {\r\n private currentUserSubject: BehaviorSubject<User>;\r\n public currentUser: Observable<User>;\r\n public currentUserVariableName: string;\r\n public authenticationUrl: string;\r\n public changePasswordUrl: string;\r\n public askResetPasswordCodeUrl: string;\r\n public resetPasswordUrl: string;\r\n public OAuthGetProvidersUrl: string;\r\n public OAuthAskCodeUrl: string;\r\n public OAuthAssociationUrl: string;\r\n public OAuthGetAssociationsUrl: string;\r\n public OAuthDeleteAssociationUrl: string;\r\n public environment: string;\r\n public showdomain: boolean;\r\n public hasLocalStorage = false;\r\n\r\n constructor(private http: HttpClient, @Inject(PLATFORM_ID) private platformId: any, @Optional() config?: AuthenticationServiceConfig) {\r\n this.hasLocalStorage = isPlatformBrowser(this.platformId);\r\n if (config && config.currentUserVariableName) { this.currentUserVariableName = config.currentUserVariableName; } else { this.currentUserVariableName = 'currentUser'; }\r\n if (config && config.authenticationUrl) { this.authenticationUrl = config.authenticationUrl; } else { this.authenticationUrl = `/admin/authusers/authenticate`; }\r\n if (config && config.changePasswordUrl) { this.changePasswordUrl = config.changePasswordUrl; } else { this.changePasswordUrl = this.authenticationUrl.replace('authenticate', 'changePassword'); }\r\n if (config && config.askResetPasswordCodeUrl) { this.askResetPasswordCodeUrl = config.askResetPasswordCodeUrl; } else { this.askResetPasswordCodeUrl = this.authenticationUrl.replace('authenticate', 'askResetPasswordCode'); }\r\n if (config && config.resetPassworUrl) { this.resetPasswordUrl = config.resetPassworUrl; } else { this.resetPasswordUrl = this.authenticationUrl.replace('authenticate', 'resetPassword'); }\r\n this.OAuthGetProvidersUrl = this.authenticationUrl.replace('authenticate', 'OAuthGetProviders');\r\n this.OAuthAskCodeUrl = this.authenticationUrl.replace('authenticate', 'OAuthAskCode');\r\n this.OAuthAssociationUrl = this.authenticationUrl.replace('authenticate', 'OAuthAssociation');\r\n this.OAuthGetAssociationsUrl = this.authenticationUrl.replace('authenticate', 'OAuthGetAssociations');\r\n this.OAuthDeleteAssociationUrl = this.authenticationUrl.replace('authenticate', 'OAuthDeleteAssociation');\r\n if (config && config.environment) { this.environment = config.environment; }\r\n if (config && config.showDomain) { this.showdomain = config.showDomain; }\r\n if (this.hasLocalStorage) { // Angular Universal\r\n this.currentUserSubject = new BehaviorSubject<User>(JSON.parse(localStorage.getItem(this.currentUserVariableName)));\r\n this.currentUser = this.currentUserSubject.asObservable();\r\n }\r\n }\r\n\r\n public get currentUserValue(): User {\r\n if (!this.currentUserSubject) { return null; } // Angular Universsal\r\n return this.currentUserSubject.value;\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (!this.currentUserSubject) { return null; } // Angular Universsal\r\n return this.currentUserSubject.value !== null;\r\n }\r\n\r\n login(domain: string, username: string, password: string) {\r\n const formData = new FormData();\r\n if (this.showdomain) { formData.set('domain', domain); }\r\n formData.set('environment', this.environment);\r\n formData.set('username', username);\r\n formData.set('password', password);\r\n return this.http.post<any>(this.authenticationUrl, formData, { observe: 'response' })\r\n .pipe(map(resp => {\r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n const user: any = resp.body;\r\n if (this.hasLocalStorage) { localStorage.setItem(this.currentUserVariableName, JSON.stringify(user)); }\r\n this.currentUserSubject.next(user);\r\n return user;\r\n }));\r\n }\r\n\r\n changePassword(domain: string, username: string, oldpassword: string, newpassword: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n domain: this.currentUserValue.domain ?? '',\r\n username: this.currentUserValue.username,\r\n newpassword,\r\n oldpassword,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.changePasswordUrl, { params });\r\n }\r\n\r\n logout() {\r\n // remove user from local storage to log user out\r\n if (this.hasLocalStorage) { localStorage.removeItem(this.currentUserVariableName); }\r\n this.currentUserSubject.next(null);\r\n }\r\n\r\n askResetPasswordCode(domain: string, firstname: string, lastname: string, email: string, gsm: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n domain: '',\r\n firstname,\r\n lastname,\r\n email,\r\n gsm,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.askResetPasswordCodeUrl, { params });\r\n }\r\n\r\n resetPassword(email: string, code: string, password: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n email,\r\n code,\r\n password,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.resetPasswordUrl, { params });\r\n }\r\n\r\n getOAuthProviders() {\r\n return this.http.get<string[]>(this.OAuthGetProvidersUrl);\r\n }\r\n\r\n OAuthAskCode(environment: string, login: string, idOauth: number, provider: string, name: string, value: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment,\r\n login,\r\n idOauth,\r\n provider,\r\n name,\r\n value\r\n }\r\n });\r\n return this.http.get<any>(this.OAuthAskCodeUrl, { params });\r\n }\r\n\r\n OAuthAssociation(environment: string, code: string, idOauth: number, provider: string, name: string, value: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment,\r\n code,\r\n idOauth,\r\n provider,\r\n name,\r\n value\r\n }\r\n });\r\n return this.http.get<any>(this.OAuthAssociationUrl, { params }).pipe(\r\n map(resp => {\r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n console.log(\"OAuthAuthentication\");\r\n console.log(resp);\r\n const user: any = resp;\r\n if (this.hasLocalStorage) { localStorage.setItem(this.currentUserVariableName, JSON.stringify(user)); }\r\n this.currentUserSubject.next(user);\r\n return user;\r\n })\r\n );\r\n }\r\n getOAuthAssociations() {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<Oauthassociation[]>(this.OAuthGetAssociationsUrl, { params }).pipe(\r\n tap((value) => console.log(value)),\r\n map((value) => value.map(item => Object.assign(new Oauthassociation(), item))),\r\n tap((value) => console.log(value))\r\n );\r\n }\r\n\r\n OAuthDeleteAssociation(provider: string, idOAuth: number) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment: this.environment,\r\n provider,\r\n idOAuth\r\n }\r\n });\r\n return this.http.get(this.OAuthDeleteAssociationUrl, { params });\r\n }\r\n\r\n}\r\n","import { DisplayObjectsConfiguration } from './../display-objects-configuration';\r\nimport { SearchFormComponent } from '../search-form/search-form.component';\r\n//import { Reference } from '@angular/compiler/src/render3/r3_ast';\r\nimport { Component, ContentChild, OnInit, ViewChild, AfterViewInit, ElementRef, Directive, ChangeDetectorRef, Injector, ChangeDetectionStrategy, AfterContentInit, QueryList, ContentChildren, OnChanges, SimpleChanges, Input, TemplateRef, Inject } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup, UntypedFormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, Sort } from '@angular/material/sort';\r\nimport { MatColumnDef, MatTable, MatTableDataSource, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow } from '@angular/material/table';\r\nimport { combineLatest, forkJoin, ObjectUnsubscribedError, observable, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { HeaderComponent } from '../header/header.component';\r\nimport { ResultTableComponent } from '../result-table/result-table.component';\r\nimport { interval } from 'rxjs';\r\nimport { HttpErrorResponse, HttpEvent, HttpEventType, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Location, NgClass } from '@angular/common';\r\nimport { ActivatedRoute, Data, NavigationEnd, Router, RouterLink } from '@angular/router';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { GlowwService } from '../../Services/gloww.service';\r\nimport { AuthenticationService } from '../../gloww-security/Services/authentication.service';\r\nimport { Moment } from 'moment';\r\nimport { map, catchError, mergeMap, tap, filter, switchMap, take } from 'rxjs/operators';\r\nimport { FilterFormComponent } from '../filter-form/filter-form.component';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { MatError, MatFormField } from '@angular/material/input';\nimport { MatSelect, MatOption } from '@angular/material/select';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\nexport interface Action {\r\n icon: any;\r\n name?: string;\r\n routerLinkFct?: (obj) => string[];\r\n display?: (obj) => boolean;\r\n};\r\n\r\n@Component({\n selector: 'glw-display-objects',\n templateUrl: './display-objects.component.html',\n styleUrls: ['./display-objects.component.scss'],\n imports: [MatCard, MatCardContent, MatError, FormsModule, ReactiveFormsModule, MatFormField, MatSelect, MatOption, MatCardActions, MatButton, MatIcon, MatTable, MatSort, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, RouterLink, NgClass, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow, MatPaginator, MatProgressSpinner]\n})\r\nexport class DisplayObjectsComponent<TObj> implements OnInit, AfterContentInit, AfterViewInit, OnChanges {\r\n\r\n @ContentChild(HeaderComponent) header: HeaderComponent;\r\n @ContentChild(SearchFormComponent) searchFormLayout: SearchFormComponent;\r\n @ContentChild(FilterFormComponent) filterFormLayout: FilterFormComponent;\r\n @ContentChild(ResultTableComponent) resultLayout: ResultTableComponent;\r\n @ViewChild(MatTable, { static: false }) table: MatTable<any>;\r\n @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;\r\n @ViewChild(MatSort, { static: false }) sort: MatSort;\r\n\r\n // after the <ng-content> has been initialized, the column definitions are available.\r\n // All that's left is to add them to the table ourselves:\r\n @Input() configuration: DisplayObjectsConfiguration<TObj>;\r\n @Input() displayObjLink: (obj: TObj, action?: string) => (string | string[]);\r\n @Input() canDisplayObj: ((user: any, obj: TObj, action?: string) => boolean) | boolean = false;\r\n @Input() canEdit: ((user: any, obj: TObj) => boolean) | boolean = true;\r\n @Input() canDelete: ((user: any, obj: TObj) => boolean) | boolean = true;\r\n @Input() canAdd: ((user: any) => boolean) | boolean = true;\r\n @Input() form: UntypedFormGroup;\r\n @Input() SearchForm: any;\r\n @Input() searchRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() postRequest: (obj?: TObj | any) => Observable<TObj>;\r\n @Input() deleteRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() putRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() maxrows: string[];\r\n @Input() mandatoryParams: object = {};\r\n @Input() actions = [];\r\n @Input() dialogConfig: object = {};\r\n ///////@Input() fileFields: string[];\r\n @Input() parent: any;\r\n\r\n @Input() columns: () => string[];\r\n @Input() objectName: string;\r\n @Input() primaryKey: string | string[];\r\n @Input() Editor: TemplateRef<any>;\r\n @Input() AddEditor: TemplateRef<any>;\r\n columnsToDisplay = [];\r\n dataSource: MatTableDataSource<TObj>;\r\n displayform = true;\r\n displayresult = false;\r\n queryParams: any = {};\r\n resultException: string;\r\n currentUser: any;\r\n form2: UntypedFormGroup;\r\n data: object;\r\n routeParams: object;\r\n glowwService: GlowwService;\r\n\r\n constructor(@Inject('glowwService') glowwService: GlowwService, private changeDetectorRef: ChangeDetectorRef, private dialog: MatDialog, private router: Router, private location: Location, private authenticationService: AuthenticationService, private formBuilder: UntypedFormBuilder, private route: ActivatedRoute) {\r\n this.glowwService = glowwService;\r\n const component = this;\r\n this.currentUser = (this.authenticationService.currentUserValue as any).UserInfo;\r\n this.form2 = this.formBuilder.group({\r\n _MaxRow_: [null]\r\n });\r\n //debugger;\r\n this.data = this.route.snapshot.data;\r\n this.routeParams = this.route.snapshot.params;\r\n route.params.subscribe(routeParams => {\r\n this.routeParams = routeParams;\r\n if (this.displayresult) this.Search();\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n }\r\n\r\n InitRequest() {\r\n if (!this.searchRequest) {\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n if (!this.postRequest) {\r\n this.postRequest = this.glowwService[`post${this.objectName}`];\r\n }\r\n if (!this.deleteRequest) {\r\n this.deleteRequest = this.glowwService[`delete${this.objectName}`];\r\n }\r\n if (!this.putRequest) {\r\n this.putRequest = this.glowwService[`put${this.objectName}`];\r\n }\r\n }\r\n\r\n sortData(sort: Sort) {\r\n this.sort.sort({ id: sort.active, start: sort.direction ? sort.direction : \"asc\", disableClear: true });\r\n //this.sort.sortChange.emit(sort);\r\n }\r\n\r\n\r\n\r\n getValue4Sort(item: any, header: string | object): string | number {\r\n let fct = \"\";\r\n let parts = [];\r\n if (typeof header === 'object') {\r\n fct = header[\"fct\"];\r\n parts = header[\"parts\"];\r\n } else {\r\n console.log(`previewMatchSortingFn ${item} - ${header}`);\r\n const headerFct = header.split(\"---\");\r\n fct = null;\r\n if (headerFct.length === 2) { fct = headerFct[1]; }\r\n parts = headerFct[0].split(\".\");\r\n }\r\n let res = item;\r\n for (let i = 0; i < parts.length; i++) {\r\n res = res[parts[i]];\r\n if (!res) return null;\r\n }\r\n switch (fct) {\r\n case \"insensitive\":\r\n return res.toString().toLowerCase();\r\n }\r\n return res;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.objectName) this.objectName = this.parent.objectName;\r\n if (!this.actions || this.actions.length === 0) this.actions = this.parent.actions;\r\n if (!this.primaryKey) this.primaryKey = this.parent.primaryKey;\r\n if (!this.columns) this.columns = this.parent.columnsToDisplay;\r\n if (!this.Editor) this.Editor = this.parent.editor;\r\n if (!this.AddEditor) this.AddEditor = this.parent.addEditor ?? this.parent.editor;\r\n ///////if (!this.fileFields) this.fileFields = this.parent.fileFields;\r\n if (!this.maxrows) this.maxrows = this.parent.maxrows;\r\n\r\n this.InitRequest();\r\n if (this.maxrows?.length > 0) { this.form.addControl(\"_MaxRow_\", new UntypedFormControl(null)); }\r\n //debugger;\r\n console.log(`INIT : formLayout:${this.searchFormLayout}-displayform:${this.displayform}`)\r\n if (!this.searchFormLayout && this.resultLayout) {\r\n this.displayform = false; this.displayresult = true;\r\n }\r\n if (Object.keys(this.data).length > 0 && (this.data[\"__mode\"] !== \"edit\")) {\r\n this.displayform = false; this.displayresult = true;\r\n }\r\n if (Object.keys(this.route.snapshot.params).length > 0 && (this.data[\"__mode\"] !== \"edit\")) {\r\n this.displayform = false; this.displayresult = true;\r\n }\r\n this.glowwService.basePathChange.subscribe(newUrl => {\r\n console.log(`basePathChange ${newUrl}: fromLayout:${this.searchFormLayout}-displayform:${this.displayform}`);\r\n this.parent.form?.reset();\r\n if (!this.searchFormLayout && this.resultLayout) {\r\n this.displayform = false; this.displayresult = true;\r\n }\r\n if (this.displayresult) { this.Search(); }\r\n });\r\n if (this.displayresult) { this.Search(); }\r\n }\r\n ngAfterContentInit(): void {\r\n\r\n }\r\n\r\n private navSubscription = new Subscription();\r\n\r\n ngOnInit(): void {\r\n this.navSubscription = this.router.events.subscribe((e: any) => {\r\n if (e instanceof NavigationEnd) {\r\n this.parent.form?.reset();\r\n this.displayform = true; this.displayresult = false;\r\n this.changeDetectorRef.detectChanges();\r\n this.dataSource = null;\r\n if (!this.searchFormLayout && this.resultLayout) {\r\n this.displayform = false; this.displayresult = true;\r\n }\r\n if (this.displayresult) { this.Search(); }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.navSubscription?.unsubscribe(); // this prevents a memory leak\r\n }\r\n\r\n Init(data?: Data) {\r\n if ((data && Object.keys(data).length > 0) || this.displayresult) {\r\n this.Search(data);\r\n }\r\n }\r\n\r\n currentFilter: (data: TObj, filter: string) => boolean = null;\r\n SetFilterPredicate() {\r\n this.dataSource.filterPredicate = function(record, filterString) {\r\n console.log(filterString);\r\n var filter = JSON.parse(filterString);\r\n let isMatch = true;\r\n const keys = Object.keys(filter);\r\n for (let key of keys) {\r\n let value = filter[key];\r\n if (!value) continue;\r\n const re = /(?<Field>.+?)(?=___|$)(?:___(?<Option>.+))?/m;\r\n const keyplus = re.exec(key);\r\n let m;\r\n\r\n let option = \"\";\r\n if (keyplus) {\r\n console.log(`Regex OK ${keyplus}`);\r\n key = keyplus[1];\r\n option = keyplus[2]??\"\";\r\n }\r\n console.log(`${key} - ${option}`)\r\n if (key == \"AllFields\") {\r\n const filterValue = filter[\"AllFields\"].trim().toLowerCase();\r\n const dataStr = Object.keys(record)\r\n .reduce((currentTerm: string, key: string) => {\r\n return currentTerm + (record as { [key: string]: any })[key] + '◬';\r\n }, '')\r\n isMatch = (dataStr.toLowerCase().indexOf(filterValue) != -1);\r\n } else {\r\n console.log(`${key} ${record[key as string]} `);\r\n let fieldValue = record[key as string] ?? \"\";\r\n if (option.includes(\"i\")) {\r\n fieldValue = fieldValue.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n if (option.includes(\"c\")) {\r\n isMatch = fieldValue.includes(value);\r\n } else {\r\n isMatch = (fieldValue == value);\r\n }\r\n\r\n\r\n console.log(`${key} ${record[key as string]} ${value} : ${isMatch}`);\r\n }\r\n if (!isMatch) return false;\r\n }\r\n return isMatch;\r\n }\r\n }\r\n\r\n\r\n Search(data?: Data) {\r\n console.log(`Search ${this.glowwService.InternalBasePath}`);\r\n if (data) this.data = data;\r\n this.displayresult = true;\r\n this.displayform = false;\r\n this.resultException = null;\r\n\r\n if (this.data) {\r\n Object.keys(this.data).forEach(name => {\r\n this.queryParams[name] = this.data[name];\r\n });\r\n }\r\n if (this.routeParams) {\r\n Object.keys(this.routeParams).forEach(name => {\r\n this.queryParams[name] = this.routeParams[name];\r\n });\r\n }\r\n\r\n if (this.mandatoryParams) {\r\n Object.keys(this.mandatoryParams).forEach(name => {\r\n this.queryParams[name] = this.queryParams[name];\r\n });\r\n }\r\n this.queryParams['__guid'] = (Math.random().toString()).substring(2);\r\n\r\n console.log(\"Before searchRequest\");\r\n //debugger;\r\n this.searchRequest.call(this.glowwService, this.queryParams).subscribe(r => {\r\n console.log(\"search done\");\r\n try {\r\n this.dataSource = new MatTableDataSource<TObj>(r);\r\n this.SetFilterPredicate();\r\n } catch (ex) {\r\n alert(`${ex}`);\r\n }\r\n console.log(\"dataSource changed\");\r\n this.changeDetectorRef.detectChanges();\r\n this.UpdateTable();\r\n },\r\n error => {\r\n this.displayresult = false;\r\n this.displayform = true;\r\n this.resultException = error;\r\n });\r\n }\r\n\r\n clean(obj) {\r\n for (const propName in obj) {\r\n if (obj[propName] === null || obj[propName] === undefined) {\r\n delete obj[propName];\r\n }\r\n }\r\n }\r\n\r\n onSearch() {\r\n this.queryParams = {};\r\n const searchData = this.parent.form.value.searchData;\r\n if (searchData) {\r\n Object.keys(searchData).forEach(name => {\r\n const val = searchData[name];\r\n this.queryParams[name] = val;\r\n });\r\n }\r\n if (this.form2.value._MaxRow_) { this.queryParams._MaxRow_ = this.form2.value._MaxRow_; }\r\n this.clean(this.queryParams);\r\n const params = new HttpParams({ fromObject: this.queryParams });\r\n const currentstate = this.location.getState();\r\n this.location.replaceState(this.router.url, params.toString());\r\n this.Search();\r\n\r\n }\r\n\r\n onFilter() {\r\n\r\n\r\n }\r\n\r\n UpdateDataSource(r: TObj[]) {\r\n this.dataSource = new MatTableDataSource<TObj>(r);\r\n this.SetFilterPredicate();\r\n this.changeDetectorRef.detectChanges();\r\n\r\n this.UpdateTable();\r\n\r\n }\r\n\r\n UpdateTable() {\r\n console.log(\"UpdateTable()\");\r\n if (this.dataSource) {\r\n if (!this.table) {\r\n console.log('!this.table');\r\n return;\r\n }\r\n this.resultLayout.columnDefs.forEach(columnDef => this.table.addColumnDef(columnDef));\r\n this.dataSource.paginator = this.paginator;\r\n this.dataSource.sort = this.sort;\r\n this.dataSource.sortingDataAccessor = this.getValue4Sort;\r\n console.log(`After this.dataSource.sort = ${this.parent.sort}`);\r\n this.columnsToDisplay = this.columns();\r\n }\r\n }\r\n\r\n canDisplayObjThis(obj, action?) {\r\n try {\r\n if (!this.displayObjLink) { return false; }\r\n if (typeof this.canDisplayObj === 'boolean') { return this.canDisplayObj; }\r\n return this.canDisplayObj(this.currentUser, obj, action);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n canAddThis() {\r\n try {\r\n if (!this.canAdd) { return false; }\r\n if (typeof this.canAdd === 'boolean') { return this.canAdd; }\r\n return this.canAdd(this.currentUser);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n\r\n canEditThis(obj) {\r\n try {\r\n if (!this.canEdit) { return false; }\r\n if (typeof this.canEdit === 'boolean') { return this.canEdit; }\r\n return this.canEdit(this.currentUser, obj);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n\r\n canDeleteThis(obj) {\r\n try {\r\n if (!this.canDelete) { return false; }\r\n if (typeof this.canDelete === 'boolean') { return this.canDelete; }\r\n return this.canDelete(this.currentUser, obj);\r\n } catch (ex) {\r\n console.log(ex);\r\n return false;\r\n }\r\n }\r\n\r\n displayObjLinkThis(obj, action?) {\r\n if (!this.displayObjLink) { return null; }\r\n return this.displayObjLink(obj, action);\r\n }\r\n\r\n\r\n isString(value): boolean {\r\n return typeof value === 'string' || value instanceof String;\r\n }\r\n getPrimaryKey(obj: object | TObj): object[] {\r\n let res = [];\r\n if (this.isString(this.primaryKey)) {\r\n console.log(\"string\");\r\n res.push(obj[this.primaryKey as string]);\r\n } else {\r\n console.log(\"string[]\");\r\n (this.primaryKey as string[]).forEach(key => res.push(obj[key]));\r\n }\r\n return res;\r\n }\r\n\r\n _saveObj(obj: any): Observable<any> {\r\n var subject = new Subject<any>();\r\n this.postRequest.call(this.glowwService, obj).subscribe(\r\n data => {\r\n const tmp = this.dataSource.data;\r\n tmp.push(data);\r\n this.dataSource.data = tmp;\r\n subject.next(data);\r\n },\r\n error => {\r\n alert(`Unable to add Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n subject.error(error);\r\n }\r\n );\r\n return subject;\r\n }\r\n _saveFile(fileField: string, obj: any, file: any): Observable<any> {\r\n const formData = new FormData();\r\n formData.append('file', file.data);\r\n return this.glowwService[`post${this.objectName}${fileField}`].call(this.glowwService, this.getPrimaryKey(obj), formData).pipe(\r\n tap((event: HttpEvent<any>) => {\r\n switch (event.type) {\r\n case HttpEventType.UploadProgress:\r\n file.progress = Math.round(event.loaded * 100 / (event.total ?? 1));\r\n file.inProgress = file.progress !== 100;\r\n break;\r\n case HttpEventType.Response:\r\n file.progress = 100;\r\n file.status = \"Done\";\r\n file.inProgress = false;\r\n break;\r\n }\r\n }),\r\n filter((event: HttpEvent<any>) => {\r\n console.log(`filter ${event.type}`);\r\n return event.type === HttpEventType.Response\r\n }),\r\n map((event: HttpResponse<any>) => {\r\n console.log(`map ${event.type}`);\r\n const tmp = this.dataSource.data;\r\n tmp[tmp.indexOf(obj)] = event.body;\r\n this.dataSource.data = tmp;\r\n console.log(`after replace...`);\r\n return event.body;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n file.inProgress = false;\r\n file.status = \"Error\";\r\n console.log(`${file.data.name} upload failed.`);\r\n //subject.error(error);\r\n return of(`${file.data.name} upload failed.`);\r\n })\r\n );\r\n }\r\n\r\n AddObj() {\r\n const dialogConfig = new MatDialogConfig();\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.maxHeight = \"95%\";\r\n dialogConfig.maxWidth = \"95%\";\r\n dialogConfig.height = \"100%\"\r\n if (this.dialogConfig) {\r\n Object.keys(this.dialogConfig).forEach(\r\n name => {\r\n dialogConfig[name] = this.dialogConfig[name];\r\n }\r\n );\r\n }\r\n let args = {};\r\n Object.keys(this.route.snapshot?.params).forEach(key => {\r\n args[key] = this.route.snapshot?.params[key];\r\n dialogConfig.data = args;\r\n });\r\n\r\n\r\n const dlg = this.dialog.open(this.AddEditor, dialogConfig);\r\n dlg.componentInstance.callback = (\r\n data => {\r\n let datacopy = { ...data };\r\n const fileFields = (this.Editor as any).fileFields;\r\n console.log(`fileFields ${fileFields?.length}`);\r\n if (fileFields?.length == 1) {\r\n // Un seul champ, il peut être multiple\r\n const fileField = fileFields[0];\r\n console.log(`fileField ${fileField}`);\r\n const files = datacopy[fileField];\r\n delete datacopy[fileField];\r\n const allobs: { [key: string]: Observable<any>; } = {}\r\n files.forEach(file => {\r\n if (file.statut !== 'Done' && file.statut !== 'Error') {\r\n const obs = this._saveObj(datacopy).pipe(\r\n switchMap(newdata => this._saveFile(fileField, newdata, file)\r\n ));\r\n console.log(`file.fileName ${file.fileName}`);\r\n allobs[file.fileName] = obs;\r\n }\r\n });\r\n return combineLatest(allobs).pipe(take(1));\r\n\r\n } else if (fileFields?.length > 1) {\r\n // Plusieurs champs file, il ne peut y avoir qu'une seul fichier par champ.\r\n const fields = {};\r\n fileFields.forEach(ff => {\r\n fields[ff] = datacopy[ff];\r\n delete datacopy[ff];\r\n return this._saveObj(datacopy).pipe(\r\n mergeMap(newdata => {\r\n var allobs: Observable<any>[] = [];\r\n Object.entries(fields).forEach(([fileField, files]: [string, any[]]) => {\r\n if (files.length > 0) {\r\n allobs.push(this._saveFile(fileField, newdata, files[0]));\r\n }\r\n })\r\n return forkJoin(allobs); // TODO : PAS TERMINE... JAMAIS UTILISE...\r\n }));\r\n })\r\n } else {\r\n // Form sans fichier\r\n return this._saveObj(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DeleteObj(obj) {\r\n if (confirm('Are you sure you want to delete this objet ? ')) {\r\n this.deleteRequest.apply(this.glowwService, this.getPrimaryKey(obj)).subscribe(\r\n p => {\r\n const i = this.dataSource.data.indexOf(obj);\r\n const tmp = this.dataSource.data;\r\n tmp.splice(i, 1);\r\n this.dataSource.data = tmp;\r\n },\r\n error => {\r\n alert(`Unable to delete Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n }\r\n );\r\n }\r\n }\r\n\r\n _updateObj(current: any, newData: any): Observable<any> {\r\n let args: object[] = this.getPrimaryKey(current); args.push(newData);\r\n var subject = new Subject<any>();\r\n this.putRequest.apply(this.glowwService, args).subscribe(\r\n data => {\r\n const i = this.dataSource.data.indexOf(current);\r\n const tmp = this.dataSource.data;\r\n tmp[i] = data;\r\n this.dataSource.data = tmp;\r\n subject.next(data);\r\n },\r\n error => {\r\n alert(`Unable to update Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n subject.error(error);\r\n }\r\n );\r\n return subject;\r\n }\r\n\r\n\r\n EditObj(obj: TObj) {\r\n const dialogConfig = new MatDialogConfig();\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.maxHeight = \"95%\";\r\n dialogConfig.maxWidth = \"95%\";\r\n dialogConfig.height = \"100%\"\r\n\r\n if (this.dialogConfig) {\r\n Object.keys(this.dialogConfig).forEach(\r\n name => {\r\n dialogConfig[name] = this.dialogConfig[name];\r\n }\r\n );\r\n }\r\n const current = { ...obj };\r\n dialogConfig.data = obj;\r\n const dlg = this.dialog.open(this.Editor, dialogConfig);\r\n dlg.componentInstance.callback = (\r\n data => {\r\n let datacopy = { ...data };\r\n const fileFields = (this.Editor as any).fileFields;\r\n if (fileFields?.length == 1) {\r\n // Un seul champ, il peut être multiple\r\n const fileField = fileFields[0];\r\n const files = datacopy[fileField];\r\n delete datacopy[fileField];\r\n const allobs: { [key: string]: Observable<any>; } = {}\r\n files.forEach(file => {\r\n if (file.statut !== 'Done' && file.statut !== 'Error') {\r\n const obs = this._updateObj(current, datacopy).pipe(\r\n switchMap(newdata => this._saveFile(fileField, newdata, file)\r\n ));\r\n allobs[file.fileName] = obs;\r\n }\r\n });\r\n return combineLatest(allobs).pipe(take(1));\r\n\r\n } else if (fileFields?.length > 1) {\r\n // Plusieurs champs file, il ne peut y avoir qu'une seul fichier par champ.\r\n const fields = {};\r\n fileFields.forEach(ff => {\r\n fields[ff] = datacopy[ff];\r\n delete datacopy[ff];\r\n return this._updateObj(current, datacopy).pipe(\r\n mergeMap(newdata => {\r\n var allobs: Observable<any>[] = [];\r\n Object.entries(fields).forEach(([fileField, files]: [string, any[]]) => {\r\n if (files.length > 0) {\r\n allobs.push(this._saveFile(fileField, newdata, files[0]));\r\n }\r\n })\r\n return forkJoin(allobs); // TODO : PAS TERMINE... JAMAIS UTILISE...\r\n }));\r\n })\r\n } else {\r\n // Form sans fichier\r\n return this._updateObj(current, data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n}\r\n","<div>\n <ng-content select=\"glw-header\"></ng-content>\n</div>\n\n@if (displayform) {\n <div>\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n @if (resultException) {\n <mat-error>\n Unable to query : {{resultException}}\n </mat-error>\n }\n <ng-content select=\"glw-search-form\"></ng-content>\n <!--<ng-container *ngComponentOutlet=\"SearchForm; injector: objInjector\"></ng-container>-->\n @if (maxrows) {\n <div [formGroup]=\"form2\">\n <br />\n <mat-form-field>\n <mat-select placeholder=\"MaxRow\" formControlName=\"_MaxRow_\">\n @for (maxrow of maxrows; track maxrow) {\n <mat-option [value]=\"maxrow\">\n @if (maxrow) {\n <span>{{maxrow}} objects</span>\n }\n @if (!maxrow) {\n <span> Default</span>\n }\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n }\n </mat-card-content>\n <mat-card-actions>\n <button mat-stroked-button color=\"accent\" (click)=\"onSearch()\">\n <mat-icon>search</mat-icon>\n Search\n </button>\n </mat-card-actions>\n </mat-card>\n </div>\n}\n\n<div [hidden]=\"!displayresult\">\n <!--*ngIf=\"displayresult\"-->\n <div class=\"mat-elevation-z8\" [hidden]=\"!dataSource\">\n <ng-content select=\"[filter]\"></ng-content>\n\n <!--*ngIf=\"dataSource; else Spinner\"-->\n <table mat-table [dataSource]=\"dataSource\" matSort>\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef>\n @if (canAddThis()) {\n <i class=\"fal fa-plus\" (click)=\"AddObj()\">\n </i>\n }\n </th>\n <td mat-cell *matCellDef=\"let obj\">\n @if (canDisplayObjThis(obj)) {\n <i class=\"fal fa-eye\" [routerLink]=\"displayObjLinkThis(obj)\">\n </i>\n }\n @for (action of actions; track action) {\n @if (action.icon.icon && (!action.display || action.display(obj, action.name))) {\n <i [ngClass]=\"action.icon\" [routerLink]=\"action.routerLinkFct(obj)\">\n </i>\n }\n @if (!action.icon.icon && (!action.display || action.display(obj, action.name))) {\n <i [ngClass]=\"action.icon\" [routerLink]=\"action.routerLinkFct(obj)\"></i>\n }\n }\n @if (canDeleteThis(obj)) {\n <i class=\"fal fa-trash-alt\" (click)=\"DeleteObj(obj)\">\n </i>\n }\n @if (canEditThis(obj)) {\n <i class=\"fal fa-pencil\" (click)=\"EditObj(obj)\">\n </i>\n }\n </td>\n </ng-container>\n <ng-content select=\"glw-result-table\"></ng-content>\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let myRowData; columns: columnsToDisplay\"></tr>\n </table>\n <mat-paginator pageSize=\"10\"></mat-paginator>\n </div>\n <div #Spinner [hidden]=\"dataSource\">\n <mat-spinner></mat-spinner>\n </div>\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'gloww-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, FormsModule, ReactiveFormsModule, MatFormField, MatInput, MatDialogActions, MatButton, SafeHtmlPipe]\n})\r\nexport class PromptComponent implements OnInit {\r\n title: string;\r\n message: string;\r\n form: UntypedFormGroup;\r\n\r\n constructor(public dialogRef: MatDialogRef<PromptComponent>, @Inject(MAT_DIALOG_DATA) public data: PromptModel, private formBuilder: UntypedFormBuilder) {\r\n // Update view with given values\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.form = this.formBuilder.group({\r\n prompt: [data.initialValue, data.required ? Validators.required : null],\r\n });\r\n }\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n onCancel(): void {\r\n // Close the dialog, return true\r\n this.dialogRef.close(false);\r\n }\r\n\r\n onOK(): void {\r\n // Close the dialog, return false\r\n this.dialogRef.close(this.form.value.prompt);\r\n }\r\n\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\nexport class PromptModel {\r\n constructor(public title: string, public message: string, public initialValue: string, public required: boolean) {\r\n }\r\n}\r\n","<h1 mat-dialog-title>\r\n {{title}}\r\n</h1>\r\n\r\n<div mat-dialog-content [formGroup]=\"form\">\r\n <p [innerHTML]=\"message | safeHtml\"></p>\r\n <mat-form-field>\r\n <input matInput placeholder=\"Prompt\" formControlName=\"prompt\" style=\"width: calc(100% - 32px);\">\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-dialog-actions>\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onOK()\">Yes</button>\r\n</mat-dialog-actions>\r\n","import { MonoTypeOperatorFunction } from 'rxjs';\r\nimport { delay as delayOperator, retryWhen, scan, tap } from 'rxjs/operators';\r\n\r\nexport function retryWithDelay<T>(\r\n delay: number,\r\n count = 1\r\n): MonoTypeOperatorFunction<T> {\r\n return (input) =>\r\n input.pipe(\r\n retryWhen((errors) =>\r\n errors.pipe(\r\n scan((acc, error) => ({ count: acc.count + 1, error }), {\r\n count: 0,\r\n error: undefined as any,\r\n }),\r\n tap((current) => {\r\n if (current.count > count) {\r\n throw current.error;\r\n }\r\n }),\r\n delayOperator(delay)\r\n )\r\n )\r\n );\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { switchMap, map, catchError, retry, delay } from 'rxjs/operators';\nimport { retryWithDelay } from './retry-with-delay';\n\n@Pipe({\n name: 'secure',\n standalone: true\n})\nexport class SecurePipe implements PipeTransform {\n\r\n constructor(private http: HttpClient, private domSanitizer: DomSanitizer) { }\r\n\r\n transform(url: any, delayVal?: any, retryVal?: any) {\r\n if (!delayVal) { delayVal = 5000; }\r\n if (!retryVal) { retryVal = 0; }\r\n return this.http\r\n // load the image as a blob\r\n .get(url, { responseType: 'blob' })\r\n // create an object url of that blob that we can use in the src attribute\r\n .pipe(\r\n map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))),\r\n retryWithDelay(delayVal, retryVal)\r\n );\r\n }\r\n}\r\n","import { Component, HostBinding, Inject, Input, OnInit, AfterViewInit } from '@angular/core';\r\nimport { NavItem } from '../../Models/nav-item';\r\nimport { Router, RouterLink } from '@angular/router';\r\nimport { NavService } from '../../Services/nav.service';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { GlowwService } from '../../Services/gloww.service';\nimport { async } from 'rxjs';\nimport { NgStyle, NgClass, AsyncPipe } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatListItem, MatListItemIcon, MatListItemTitle } from '@angular/material/list';\n\r\n@Component({\n selector: 'gloww-menu-list-item',\n templateUrl: './menu-list-item.component.html',\n styleUrls: ['./menu-list-item.component.scss'],\n animations: [\n trigger('indicatorRotate', [\n state('collapsed', style({ transform: 'rotate(0deg)' })),\n state('expanded', style({ transform: 'rotate(180deg)' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)'))\n ])\n ],\n imports: [NgStyle, NgClass, RouterLink, MatIcon, MatListItem, MatListItemIcon, MatListItemTitle, AsyncPipe]\n})\nexport class MenuListItemComponent implements OnInit, AfterViewInit {\n\r\n private _expanded: boolean = false;\r\n get expanded(): boolean {\r\n return this._expanded;\r\n }\r\n set expanded(value: boolean) {\r\n console.log(\"change expanded\");\r\n this._expanded = value;\r\n }\r\n\r\n @HostBinding('attr.aria-expanded') ariaExpanded = this.expanded;\r\n @Input() item: NavItem;\r\n @Input() depth: number;\r\n glowwService: GlowwService;\r\n _disabled: Promise<boolean>;\r\n _hidden: Promise<boolean>;\r\n\r\n\r\n constructor(@Inject('glowwService') glowwService: GlowwService, public navService: NavService, public router: Router) {\r\n this.glowwService = glowwService;\r\n if (this.depth === undefined) {\r\n this.depth = 0;\r\n }\r\n }\r\n ngAfterViewInit(): void {\r\n this._disabled = this.getDisabledPromise();\r\n this._hidden = this.getHiddenPromise();\r\n this.glowwService.basePathChange.subscribe(newUrl => {\r\n console.log(`basePathChange in menu ${newUrl}`);\r\n this._disabled = this.getDisabledPromise();\r\n this._hidden = this.getHiddenPromise();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n onItemSelected(item: NavItem) {\r\n if (item.children && item.children.length) {\r\n this.expanded = !this.expanded;\r\n }\r\n }\r\n\r\n isActive(item: NavItem) {\r\n let route = this.item.route as string;\r\n if (typeof this.item.route === 'function') {\r\n const routefct: () => string | string[] = this.item.route;\r\n route = routefct.call(this);\r\n return route ? this.router.isActive(route, true) : false\r\n }\r\n }\r\n\r\n routerLink(item: NavItem) {\r\n //if (this.isDisabled(item)) return null;\r\n let route = this.item.route as string;\r\n if (typeof this.item.route === 'function') {\r\n const routefct: () => string | string[] = this.item.route;\r\n route = routefct.call(this);\r\n }\r\n return route;\r\n }\r\n\r\n falsePromise = new Promise<boolean>((resolve, reject) => {\r\n resolve(false)\r\n });\r\n\r\n getDisabledPromise() {\r\n //console.log(`isdisable item ${item.displayName} ${item.disabled}`);\r\n if (!this.item.disabled) {\r\n return this.falsePromise;\r\n }\r\n return (this.item.disabled as any)();\r\n }\r\n\r\n getHiddenPromise() {\r\n if (!this.item.hidden) {\r\n return this.falsePromise;\r\n }\r\n return (this.item.hidden as any)();\r\n }\r\n\r\n}\r\n","@if (item) {\n @if (!(_hidden | async)) {\n <div class=\"thisMenu\" (click)=\"onItemSelected(item)\" [class.disabled]=\"(_disabled | async)\">\n <a mat-list-item lines=\"1\"\n [ngStyle]=\"{'padding-left': (depth * 12) + 'px'}\"\n [ngClass]=\"{'active': isActive(item) && !(_disabled | async), 'expanded': expanded}\"\n class=\"menu-list-item\"\n [routerLink]=\"routerLink(item)\">\n <span matListItemIcon class=\"routeIcon\">\n <i [ngClass]=\"item.icon\" [ngStyle]=\"item.iconStyle\"></i>\n </span>\n <span matListItemTitle class=\"menu-label\">{{item.displayName}}</span>\n </a>\n @if (item.children?.length && !(_disabled | async)) {\n <div class=\"expand-container\">\n <mat-icon [@indicatorRotate]=\"expanded ? 'expanded': 'collapsed'\" class=\"expandIcon\">\n expand_more\n </mat-icon>\n </div>\n }\n </div>\n }\n @if (expanded && !(_disabled | async)) {\n <div>\n @for (child of item.children; track child) {\n <gloww-menu-list-item [item]=\"child\" [depth]=\"depth+1\">\n </gloww-menu-list-item>\n }\n </div>\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport interface Snippet {\r\n name: string;\r\n code?: string;\r\n externfile?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SnippetsService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getSnippets(path: string): Observable<Snippet[]> {\r\n return this.http.get<Snippet[]>(path);\r\n }\r\n\r\n getSnippetCode(path: string) {\r\n return this.http.get(path, {\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n}\r\n","import { Snippet, SnippetsService } from './../../Services/snippets.service';\r\nimport { Component, Input, OnInit, ViewChild, AfterViewInit, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport { CodemirrorComponent, CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport { GlowwService } from '../../Services/gloww.service';\r\nimport prettier from 'node_modules/prettier/esm/standalone.mjs';\r\nimport parserTypescript from 'node_modules/prettier/esm/parser-typescript.mjs'\r\nimport parserBabel from 'node_modules/prettier/esm/parser-babel.mjs'\nimport { MatLabel } from '@angular/material/input';\nimport { MatSelect, MatOption } from '@angular/material/select';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-code-editor',\n templateUrl: './code-editor.component.html',\n styleUrls: ['./code-editor.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: CodeEditorComponent\n }\n ],\n imports: [MatLabel, MatSelect, FormsModule, MatOption, MatButton, CodemirrorModule]\n})\r\nexport class CodeEditorComponent implements ControlValueAccessor, AfterViewInit {\r\n @Input('value') _value: any = null;\r\n @Input('display') display: string = null;\r\n @Input('mode') mode: any = \"text/typescript\";\r\n @Input('formatter') formatter?: string;\r\n @Input('formatterOptions') formatterOptions?: any = { useTabs: true, printWidth: 160 };\r\n @Input('snippets') snippets?: Snippet[];\r\n @Input('snippetsPath') snippetsPath?: string;\r\n @ViewChild(CodemirrorComponent) codeMirrorComponent: CodemirrorComponent;\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n resizable = true;\r\n\r\n currentSnippet?: Snippet;\r\n doc: any = null;\r\n extraKeys = {\r\n \"Alt-K\": function(cm) { alert('Alt-K'); cm.blockComment(cm.doc.getCursor('from'), cm.doc.getCursor('to'));/*cm.toggleComment();*/ },\r\n \"Shift-Alt-K\": \"toggleComment\",\r\n \"Alt-N\": this.autoFormatSelection.bind(this)\r\n };\r\n\r\n constructor(private snippetsService: SnippetsService, private glowwService: GlowwService) {\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n console.log(this.codeMirrorComponent);\r\n console.log(this.codeMirrorComponent.codeMirror);\r\n this.doc = this.codeMirrorComponent.codeMirror?.getDoc();\r\n console.log(this.doc);\r\n if (this.snippetsPath) {\r\n this.snippetsService.getSnippets(this.snippetsPath.replace(\"/assets/\", this.glowwService.baseHref + \"/assets/\")).subscribe((snippets) => {\r\n if (!this.snippets) {\r\n this.snippets = [];\r\n }\r\n snippets.forEach((snippet) => this.snippets.push(snippet));\r\n });\r\n }\r\n }\r\n\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n if (typeof (obj) === 'object' && obj != null) {\r\n this.value = JSON.stringify(obj);\r\n } else {\r\n this.value = obj;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n insert() {\r\n this.doc = this.codeMirrorComponent.codeMirror?.getDoc();\r\n var cursor = this.doc.getCursor();\r\n if (this.currentSnippet.code) {\r\n this.doc.replaceRange(this.currentSnippet.code, cursor);\r\n }\r\n if (this.currentSnippet.externfile) {\r\n this.snippetsService.getSnippetCode(this.currentSnippet.externfile).subscribe((code) => this.doc.replaceRange(code, cursor));\r\n }\r\n }\r\n\r\n getSelectedRange(doc) {\r\n return { from: doc.getCursor('from'), to: doc.getCursor('to') };\r\n }\r\n\r\n getFormatter(): string {\r\n if (this.formatter) return this.formatter;\r\n if (this.mode.match(/typescript/)) { return \"typescript\"; }\r\n return null;\r\n }\r\n\r\n\r\n autoFormatSelection(cm) {\r\n try {\r\n const formatter = this.getFormatter();\r\n if (!formatter) {\r\n alert(\"no formatter defined for this code\");\r\n return;\r\n }\r\n let options: any = { ...this.formatterOptions };\r\n options.parser = formatter;\r\n options.plugins = [parserTypescript, parserBabel]\r\n\r\n cm.doc.setValue(prettier.format(cm.doc.getValue(), options));\r\n } catch (ex) {\r\n alert(`Unable to format this code, check Syntax`);\r\n }\r\n }\r\n}\r\n","<div class=\"editor-container mainDiv\">\n <mat-label>{{display}}</mat-label>\n\n @if (snippets?.length) {\n <div class=\"snippet-header\">\n <mat-select [(ngModel)]=\"currentSnippet\" class=\"snippet-select\">\n @for (snippet of snippets; track snippet) {\n <mat-option [value]=\"snippet\">{{snippet.name}}</mat-option>\n }\n </mat-select>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"insert()\">Insert</button>\n </div>\n }\n\n <ngx-codemirror\n [(ngModel)]=\"value\"\n [options]=\"{lineNumbers: true, theme: 'eclipse', indentWithTabs:true, indentUnit: 4, matchBrackets: true, mode: mode, fixedGutter:false, extraKeys: extraKeys}\"\n class=\"editor-full-width\">\n </ngx-codemirror>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'htmlFormat',\n standalone: true\n})\nexport class HtmlFormatPipe implements PipeTransform {\n\r\n constructor(private _sanitizer?: DomSanitizer) { }\r\n\r\n transform(value: string, ...args: unknown[]): string {\r\n const newval = value.replace(/(^\\s*\\w|\\.\\s\\w)/g, m => m.toUpperCase()).replace(/\\s\\./ig, '').replace(/\\s*Nouvelle ligne\\s*.\\s*/ig, '<br/>').trim();\r\n if (!this._sanitizer) return newval;\r\n return this._sanitizer.bypassSecurityTrustHtml(newval) as string;\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, OnInit, Output, Input } from '@angular/core';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\n selector: 'gloww-social-network',\n templateUrl: './social-network.component.html',\n styleUrls: ['./social-network.component.scss'],\n imports: [NgClass]\n})\r\nexport class SocialNetworkComponent implements OnInit {\r\n @Input() oAuthProviders: any[];\r\n @Output() callback: EventEmitter<any> = new EventEmitter();\r\n\r\n icons = {\r\n Google: \"fa-brands fa-google\",\r\n LinkedIN: \"fa-brands fa-linkedin\",\r\n Facebook: \"fa-brands fa-facebook\",\r\n Github: \"fa-brands fa-github\",\r\n Amazon: \"fa-brands fa-amazon\",\r\n Apple: \"fa-brands fa-apple\",\r\n Microsoft: \"fa-brands fa-microsoft\",\r\n Twitter: \"fa-brands fa-twitter\",\r\n VK: \"fa-brands fa-vk\",\r\n };\r\n\r\n // oAuthAssociations: string[];\r\n // oAuthProviders: string[];\r\n\r\n constructor(private authenticationService: AuthenticationService) {\r\n // this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n // this.authenticationService.getOAuthAssociations().subscribe(oap => this.oAuthAssociations = oap);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n execute(provider) {\r\n this.callback.emit(provider);\r\n }\r\n writeobj(provider) {\r\n console.log(provider);\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","@if (oAuthProviders) {\n <div class=\"social-network-container\">\n @for (provider of oAuthProviders; track provider) {\n <a (click)=\"execute(provider)\" class=\"provider-link\" [title]=\"provider\">\n <i [ngClass]=\"icons[provider.toString()]\"></i>\n </a>\n }\n </div>\n}","import { MatIconModule } from '@angular/material/icon';\r\nimport { Component, OnInit, Optional } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { first } from 'rxjs/operators';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\nimport { AuthenticationServiceConfig } from '../../Services/authentication-service-config';\nimport { MatCard, MatCardHeader, MatCardTitle, MatCardContent } from '@angular/material/card';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\nimport { SocialNetworkComponent } from '../social-network/social-network.component';\r\n\r\n@Component({\n selector: 'gloww-login',\n templateUrl: 'login.component.html',\n styleUrls: ['./login.component.scss'],\n imports: [MatCard, MatCardHeader, MatCardTitle, FormsModule, ReactiveFormsModule, MatCardContent, MatFormField, MatLabel, MatInput, MatButton, SocialNetworkComponent]\n}) export class LoginComponent implements OnInit {\n public loginForm: UntypedFormGroup;\r\n public lostPasswordForm: UntypedFormGroup;\r\n public resetPasswordForm: UntypedFormGroup;\r\n loading = false;\r\n submitted = false;\r\n returnUrl: string;\r\n application: string;\r\n error = '';\r\n showDomain = false;\r\n state = 1;\r\n config: AuthenticationServiceConfig;\r\n oAuthProviders: string[];\r\n\r\n idOauth?: number;\r\n provider?: string;\r\n name?: string;\r\n value?: string;\n\n\n constructor(private formBuilder: UntypedFormBuilder, private route: ActivatedRoute, private router: Router, private authenticationService: AuthenticationService, @Optional() config?: AuthenticationServiceConfig) {\n // redirect to home if already logged in\r\n if (this.authenticationService.currentUserValue) {\r\n this.router.navigate(['/']);\r\n }\r\n this.config = config;\r\n if (config && config.showDomain) {\n this.showDomain = config.showDomain;\n }\n\n this.initializeForms();\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\n }\n\n private initializeForms() {\n const grp: any = {\n username: ['', Validators.required],\n password: ['', Validators.required]\n };\n const lostPwd: any = {\n email: ['', Validators.required],\n gsm: [''],\n firstname: ['', Validators.required],\n lastname: ['', Validators.required]\n };\n const resetPwd: any = {\n email: ['', Validators.required],\n code: ['', Validators.required],\n newPassword: ['', Validators.required],\n confirmationPassword: ['', Validators.required]\n };\n if (this.showDomain) {\n grp.domain = [''];\n }\n this.loginForm = this.formBuilder.group(grp);\n this.lostPasswordForm = this.formBuilder.group(lostPwd);\n this.resetPasswordForm = this.formBuilder.group(resetPwd, { validator: this.MatchPassword });\n }\n\n MatchPassword(fg: UntypedFormGroup) {\n if (!fg) { return; }\n return fg.get('newpassword')?.value === fg.get('confirmationPassword')?.value;\n }\n ngOnInit() {\n // get return url from route parameters or default to '/'\n this.returnUrl = this.route.snapshot.queryParams.returnUrl;//|| window.location.search;\n this.application = this.route.snapshot.queryParams.application;//|| window.location.pathname;\r\n console.log(`returnUrl : ${this.returnUrl}`);\r\n console.log(`application : ${this.application}`);\r\n\r\n this.idOauth = this.route.snapshot.queryParams.idOauth;\r\n this.provider = this.route.snapshot.queryParams.provider;\r\n this.name = this.route.snapshot.queryParams.name;\r\n this.value = this.route.snapshot.queryParams.value;\r\n if (this.idOauth) {\r\n this.state = 4;\r\n }\r\n\r\n }\r\n\r\n // convenience getter for easy access to form fields\r\n get f() { return this.loginForm.controls; }\r\n\r\n resetError() {\r\n this.error = \"\";\r\n }\r\n\r\n onConnect() {\r\n this.submitted = true;\r\n this.error = \"\";\r\n // stop here if form is invalid\r\n if (this.loginForm.invalid) {\r\n return;\r\n }\r\n this.loading = true;\r\n let domain = '';\r\n if (this.showDomain) {\r\n domain = this.f.domain.value;\r\n }\r\n this.authenticationService.login(domain, this.f.username.value, this.f.password.value)\r\n .pipe(first())\r\n .subscribe(data => {\r\n console.log(`navigate to ${this.returnUrl}`);\r\n this.router.navigate([this.returnUrl]);\r\n }, error => {\r\n if (error.error?.Code) {\r\n switch (error.error?.Code) {\r\n case 'BADAUTH':\r\n this.error = 'Utilisateur inconnu ou mauvais mot de passe. Veuillez vérifier vos identifiants.';\r\n break;\r\n case 'WEAKPASSWORD':\r\n this.error = 'Le mot de passe que vous avez utilisez est trop faible. S\\'il s\\'agit effectivement de votre mot de passe, veuillez le réinitialiser au moyen de la fonctionnalité \"Mot de passe oublié\". ';\r\n break;\r\n case 'BLACKLISTEDIP':\r\n this.error = `Trop de tentatives de connexion à partir de cette adresse IP(${error.error?.Params?.IP}).Vous ne pouvez plus vous connecter à partir de ce poste.`;\r\n break;\r\n case 'TOOMANYFROMIP':\r\n this.error = `Trop de tentatives de connexion, à partir de cette adresse IP(${error.error?.Params?.IP}).Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n case 'TOOMANYFORUSERNAME':\r\n this.error = `Trop de tentatives de connexion pour cet utilisateur(${error.error?.Params?.Username}).Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n\r\n }\r\n if (!this.error) this.error = error.error.Message;\r\n }\r\n else {\r\n this.error = 'Impossible de se connecter. ';\r\n }\r\n this.loading = false;\r\n });\r\n }\r\n\r\n onAskResetPasswordCode() {\r\n let gsm = this.lostPasswordForm.value.gsm;\r\n if (!this.config?.askGSM) {\r\n gsm = '--noGSM--';\r\n }\r\n this.authenticationService\r\n .askResetPasswordCode('', this.lostPasswordForm.value.firstname, this.lostPasswordForm.value.lastname, this.lostPasswordForm.value.email, gsm)\r\n .subscribe(\r\n d => { },\r\n error => { }\r\n );\r\n this.state = 3;\r\n }\r\n\r\n onResetPassword() {\r\n this.authenticationService\r\n .resetPassword(this.resetPasswordForm.value.email, this.resetPasswordForm.value.code, this.resetPasswordForm.value.newPassword)\r\n .subscribe(\r\n d => { },\r\n error => { }\r\n );\r\n this.state = 1;\r\n }\r\n\r\n OAuthSignIn(provider: String): void {\r\n const url = `${window.location.origin}/admin/AuthUsers/OAuth/${provider}/${this.config.environment}?returnUrl=${encodeURI(this.returnUrl)}&application=${encodeURI(this.application)}&loginUrl=${encodeURI(window.location.pathname)}&currentUserVariableName=${this.authenticationService.currentUserVariableName}`;\r\n window.location.href = url;\r\n }\r\n\r\n onOAuthAskCode(): void {\r\n this.authenticationService\r\n .OAuthAskCode(this.authenticationService.environment, this.resetPasswordForm.value.email, this.idOauth, this.provider, this.name, this.value)\r\n .subscribe(\r\n d => {\r\n this.state = 5;\r\n },\r\n error => { }\r\n );\r\n }\r\n onOAuthAssociation(): void {\r\n this.authenticationService\r\n .OAuthAssociation(this.authenticationService.environment, this.resetPasswordForm.value.code, this.idOauth, this.provider, this.name, this.value)\r\n .subscribe(\r\n user => {\r\n console.log(user);\r\n window.location.href = this.returnUrl;\r\n },\r\n error => { }\r\n );\r\n }\r\n}\r\n","<div class=\"login-wrapper center-layout\">\n <mat-card appearance=\"outlined\" class=\"login-card\">\n <mat-card-header>\n <mat-card-title>Connexion</mat-card-title>\n </mat-card-header>\n\n @if (state==1) {\n <form class=\"example-form\" [formGroup]=\"loginForm\" (ngSubmit)=\"onConnect()\">\n <mat-card-content class=\"form-grid\">\n @if (error) {\n <span class=\"error-msg full-width\">{{error}}</span>\n }\n @if (showDomain) {\n <mat-form-field class=\"full-width\">\n <mat-label>Domain</mat-label>\n <input matInput formControlName=\"domain\" (change)=\"resetError()\">\n </mat-form-field>\n }\n <mat-form-field class=\"full-width\">\n <mat-label>Username</mat-label>\n <input matInput formControlName=\"username\" (change)=\"resetError()\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Password</mat-label>\n <input matInput formControlName=\"password\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n </mat-card-content>\n <div class=\"action-buttons-row\">\n <button mat-raised-button color=\"primary\" type=\"submit\">Me Connecter</button>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"state=2; resetError();\">\n Mot de passe oublié\n </button>\n </div>\n <div class=\"social-divider\">\n <gloww-social-network (callback)=\"OAuthSignIn($event)\" [oAuthProviders]=\"oAuthProviders\"></gloww-social-network>\n </div>\n </form>\n }\n\n @if (state==2) {\n <form class=\"example-form\" [formGroup]=\"lostPasswordForm\" (ngSubmit)=\"onAskResetPasswordCode()\">\n <mat-card-content class=\"form-grid\">\n @if (error) {\n <span class=\"error-msg full-width\">{{error}}</span>\n }\n </mat-card-content>\n <div class=\"action-buttons-column\">\n <button mat-raised-button color=\"primary\" class=\"btn-block\" type=\"submit\">Demande de réinitialisation</button>\n <button mat-stroked-button color=\"primary\" class=\"btn-block\" (click)=\"state=3\">J'ai un code</button>\n </div>\n </form>\n }\n\n </mat-card>\n</div>","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n\tconstructor(private authenticationService: AuthenticationService) { }\r\n\r\n\tintercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\t\t// add authorization header with jwt token if available\r\n\t\ttry {\r\n\t\t\tconst currentUser = this.authenticationService.currentUserValue;\r\n\t\t\tif (currentUser && currentUser.Token) {\r\n\t\t\t\trequest = request.clone({\r\n\t\t\t\t\tsetHeaders: {\r\n\t\t\t\t\t\tAuthorization: `Bearer ${currentUser.Token}`\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(`jwt interceptor ${e}`);\r\n\t\t}\r\n\r\n\t\treturn next.handle(request);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private authenticationService: AuthenticationService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(catchError(err => {\r\n if (err.status === 401) {\r\n // auto logout if 401 response returned from api\r\n this.authenticationService.logout();\r\n location.reload();\r\n }\r\n\r\n const error = err.error ? (err.error.message || err.StatusText) : err.statusText;\r\n if (console) console.log(err);\r\n return throwError(err);\r\n }));\r\n }\r\n}\r\n","import { MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-change-password-dlg',\n templateUrl: './change-password-dlg.component.html',\n styleUrls: ['./change-password-dlg.component.scss'],\n imports: [MatDialogTitle, FormsModule, ReactiveFormsModule, CdkScrollable, MatDialogContent, MatFormField, MatLabel, MatInput, MatDialogActions, MatButton]\n})\r\nexport class ChangePasswordDlgComponent implements OnInit {\r\n error: string;\r\n form: UntypedFormGroup;\r\n constructor(private formBuilder: UntypedFormBuilder, private dialogRef: MatDialogRef<ChangePasswordDlgComponent>, private authenticationService: AuthenticationService) {\r\n this.form = this.formBuilder.group({\r\n oldpassword: ['', Validators.required],\r\n newpassword: ['', Validators.required],\r\n confirmationpassword: ['', Validators.required]\r\n }, { validator: c => c.get('newpassword').value === c.get('confirmationpassword').value });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n resetError() {\r\n this.error = '';\r\n }\r\n\r\n onSubmit() {\r\n this.resetError();\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n const user = this.authenticationService.currentUserValue;\r\n this.authenticationService.changePassword('', user.username, this.form.value.oldpassword, this.form.value.newpassword).subscribe(r =>\r\n this.dialogRef.close(true),\r\n error => {\r\n switch (error.error?.Code) {\r\n case 'COMPLEXITY':\r\n this.error = 'Le mot de passe souhaitez n\\'est pas suffisamment complexe. Veuillez utiliser un mot de passe long (8 caractères minimum) combinant des majuscules, minuscules, chiffres et caractères spéciaux.';\r\n break;\r\n case 'BADAUTH':\r\n this.error = 'Utilisateur inconnu ou mauvais mot de passe. Veuillez vérifier vos identifiants.';\r\n break;\r\n case 'WEAKPASSWORD':\r\n this.error = 'Le mot de passe que vous avez utilisez est trop faible. S\\'il s\\'agit effectivement de votre mot de passe, veuillez le réinitialiser au moyen de la fonctionnalité \"Mot de passe oublié\". ';\r\n break;\r\n case 'BLACKLISTEDIP':\r\n this.error = `Trop de tentatives de connexion à partir de cette adresse IP (${error.error?.Params?.IP}). Vous ne pouvez plus vous connecter à partir de ce poste.`;\r\n break;\r\n case 'TOOMANYFROMIP':\r\n this.error = `Trop de tentatives de connexion, à partir de cette adresse IP (${error.error?.Params?.IP}). Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n case 'TOOMANYFORUSERNAME':\r\n this.error = `Trop de tentatives de connexion pour cet utilisateur (${error.error?.Params?.Username}). Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n\r\n }\r\n this.error = error.error.Message;\r\n }\r\n );\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","<h2 mat-dialog-title>Change Password</h2>\n\n<form class=\"password-form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <mat-dialog-content>\n <div class=\"form-container\">\n @if (error) {\n <div class=\"error-msg full-width\">\n {{error}}\n </div>\n }\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>Old Password</mat-label>\n <input matInput formControlName=\"oldpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>New Password</mat-label>\n <input matInput formControlName=\"newpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>Confirmation</mat-label>\n <input matInput formControlName=\"confirmationpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n </div>\n </mat-dialog-content>\n\n <mat-dialog-actions align=\"end\">\n <button mat-button (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"form.invalid\">\n Change Password\n </button>\n </mat-dialog-actions>\n</form>","import { Oauthassociation } from './../../Models/oauthassociation';\r\nimport { Component, OnInit, Optional } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { AuthenticationServiceConfig } from '../../Services/authentication-service-config';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { SocialNetworkComponent } from '../social-network/social-network.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-social-network-dlg',\n templateUrl: './social-network-dlg.component.html',\n styleUrls: ['./social-network-dlg.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, SocialNetworkComponent, MatDialogActions, MatButton]\n})\r\nexport class SocialNetworkDlgComponent implements OnInit {\r\n\r\n oAuthProviders: string[];\r\n oAuthAssociations: Oauthassociation[];\r\n config: AuthenticationServiceConfig;\r\n\r\n constructor(private dialogRef: MatDialogRef<SocialNetworkDlgComponent>, private authenticationService: AuthenticationService, private dialog: MatDialog, @Optional() config?: AuthenticationServiceConfig) {\r\n this.config = config;\r\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n this.authenticationService.getOAuthAssociations().subscribe(oap => {\r\n this.oAuthAssociations = oap;//oap.map(item => Object.assign(new Oauthassociation(), item));\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n OK() {\r\n this.dialogRef.close();\r\n }\r\n\r\n OAuthAddAssociation(provider: String): void {\r\n const url = `${window.location.origin}/admin/AuthUsers/OAuth/${provider}/${this.config.environment}`;\r\n window.location.href = url;\r\n }\r\n OAuthDeleteAssociation(association: Oauthassociation): void {\r\n this.authenticationService.OAuthDeleteAssociation(association.provider, association.idOAuth).subscribe(\r\n result => {\r\n alert(\"Association supprimée\");\r\n const index = this.oAuthAssociations.indexOf(association, 0);\r\n if (index >= 0) {\r\n this.oAuthAssociations.splice(index, 1);\r\n } else {\r\n alert(\"unable to delete item\");\r\n }\r\n //this.oAuthAssociations.find(a => a === association\r\n },\r\n error => {\r\n alert('Impossible d\\'effacer l\\'association');\r\n }\r\n\r\n )\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>Gestion des identifications par réseaux sociaux</h2>\r\n<mat-dialog-content>\r\n <h3>Associations établies</h3>\r\n <p>Choisissez l'association que vous souhaitez supprimer</p>\r\n <gloww-social-network (callback)=\"OAuthDeleteAssociation($event)\" [oAuthProviders]=\"oAuthAssociations\"></gloww-social-network>\r\n <h3>Nouvelle association</h3>\r\n <p>Choisissez le provider</p>\r\n <gloww-social-network (callback)=\"OAuthAddAssociation($event)\" [oAuthProviders]=\"oAuthProviders\"></gloww-social-network>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-stroked-button color=\"accent\" class=\"btn-block\" (click)=\"OK() \">OK</button>\r\n</mat-dialog-actions>","import { ActivatedRoute, Router, RouterLink } from '@angular/router';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { MatDialogConfig, MatDialog } from '@angular/material/dialog';\r\nimport { ChangePasswordDlgComponent } from '../change-password-dlg/change-password-dlg.component';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\nimport { SocialNetworkDlgComponent } from '../social-network-dlg/social-network-dlg.component';\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\n selector: 'gloww-user-menu',\n templateUrl: './user-menu.component.html',\n styleUrls: ['./user-menu.component.scss'],\n imports: [NgClass, RouterLink]\n})\r\nexport class UserMenuComponent implements OnInit {\r\n\r\n @Input() size = '1x';\r\n @Input() imageUser = null;\r\n @Input() loginpage = '';\r\n\r\n showMenuUser = false;\r\n connected = false;\r\n oAuthProviders: string[];\r\n\r\n constructor(private authenticationService: AuthenticationService, private dialog: MatDialog, private router: Router) {\r\n const person: any = this.authenticationService.currentUserValue;\r\n if (person && person.UserInfo) {\r\n this.connected = true;\r\n if (person.UserInfo.Picture) { this.imageUser = '/' + authenticationService.environment + '/' + person.UserInfo.Picture; }\r\n }\r\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n Logout() {\r\n this.showMenuUser = false;\r\n this.authenticationService.logout();\r\n this.router.navigate(['/']);\r\n }\r\n\r\n ChangePassword() {\r\n this.showMenuUser = true;\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n this.dialog.open(ChangePasswordDlgComponent, dialogConfig).afterClosed().subscribe(result => {\r\n if (result) { alert('Password Changed'); }\r\n });\r\n }\r\n\r\n toggleMenuUser() {\r\n this.showMenuUser = !this.showMenuUser;\r\n }\r\n\r\n Configuration() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n this.dialog.open(SocialNetworkDlgComponent, dialogConfig).afterClosed().subscribe(result => {\r\n\r\n });\r\n }\r\n\r\n}\r\n","@if (connected) {\n <div>\n <span (click)=\"toggleMenuUser()\">\n @if (imageUser) {\n <img [src]=\"imageUser\" style=\"height:40px;float:left; padding-left:20px\" />\n }\n @if (!imageUser) {\n <i [ngClass]=\"'fal fa-user '+size\" style=\"float:left; padding-left:10px\">\n <!--[size]=\"size\"-->\n </i>\n }\n </span>\n @if (showMenuUser) {\n <div class=\"menuUser\">\n <ul class=\"menuSec\" style=\"border: solid lightgrey;\">\n <li (click)=\"ChangePassword()\">\n <i class=\"fal fa-key-skeleton\"></i>Change Password\n </li>\n @if (oAuthProviders && oAuthProviders.length) {\n <li (click)=\"Configuration()\">\n <i class=\"fal fa-tools\"></i>Configuration\n </li>\n }\n <li (click)=\"Logout()\">\n <i class=\"fal fa-sign-out\"></i>Déconnexion\n </li>\n </ul>\n </div>\n }\n </div>\n}\n@if (!connected && loginpage) {\n <div>\n <span style=\"height:40px;float:left; padding-left:20px\" [routerLink]=\"loginpage\">Connexion</span>\n </div>\n}\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class StagingInterceptor implements HttpInterceptor {\r\n constructor() { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n // add authorization header with jwt token if available\r\n try {\r\n if (!request.url.match(/version\\.json(\\?|$)/ig)) {\r\n console.log(`Replace ${request.url}`);\r\n return next.handle(request.clone({ url: request.url.replace(\"__Staging\", \"\") }));\r\n }\r\n } catch (e) {\r\n console.log(`staging interceptor ${e}`);\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","import { APP_BASE_HREF, PlatformLocation } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { jwtDecode } from 'jwt-decode';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard {\r\n\r\n private baseHref = null;\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private platformLocation: PlatformLocation\r\n //@Inject(APP_BASE_HREF) baseHref: string\r\n ) {\r\n this.baseHref = platformLocation.getBaseHrefFromDOM();\r\n }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const currentUser = this.authenticationService.currentUserValue;\r\n if (currentUser) {\r\n // logged in so return true\r\n const jwtToken = jwtDecode<any>(currentUser.Token);\r\n if (Date.now() < jwtToken.exp * 1000) {\r\n return true;\r\n } else {\r\n this.authenticationService.logout();\r\n }\r\n }\r\n const vd = window.location.pathname\r\n if (vd.endsWith(\"/login\")) { return true; }\r\n\r\n console.log(window.location);\r\n console.log(route);\r\n console.log(state);\r\n console.log(state.url);\r\n console.log(window.location.search);\r\n console.log(window.location.pathname);\r\n\r\n const returnUrl = window.location.pathname.substr(this.baseHref.length);\r\n //let application = window.location.pathname.substr(0, window.location.pathname.length - state.url.length);\r\n /*if (state.url === '/') {\r\n application = window.location.pathname.endsWith(\"/\") ? application.substr(0, window.location.pathname.length - 1) : window.location.pathname;\r\n }\r\n if (!application) { application = '/'; }\r\n console.log(application);*/\r\n // not logged in so redirect to login page with the return url\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: `${returnUrl}${window.location.search}`, application: `${this.baseHref}` } });\r\n return false;\r\n }\r\n}\r\n","import { PlatformLocation } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthenticationService } from '../gloww-security.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdministratorGuard {\r\n\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private platformLocation: PlatformLocation\r\n //@Inject(APP_BASE_HREF) baseHref: string\r\n ) {\r\n\r\n }\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n const currentUser: any = (this.authenticationService.currentUserValue as any).UserInfo;\r\n return currentUser.IsAdministrator || currentUser.isAdministrator;\r\n }\r\n\r\n}\r\n","import { AdministratorGuard } from './Helpers';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { AuthenticationServiceConfig } from './Services/authentication-service-config';\nimport { EnvironmentProviders, makeEnvironmentProviders, ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoginComponent } from './Components/login/login.component';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { AuthGuard } from './Helpers';\r\nimport { JwtInterceptor } from './Helpers/jwt.interceptor';\r\nimport { ErrorInterceptor } from './Helpers/error.interceptor';\r\nimport { AuthenticationService } from './Services/authentication.service';\r\n\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ChangePasswordDlgComponent } from './Components/change-password-dlg/change-password-dlg.component';\r\nimport { MatButton, MatButtonModule } from '@angular/material/button';\r\nimport { UserMenuComponent } from './Components/user-menu/user-menu.component';\r\nimport { SocialNetworkDlgComponent } from './Components/social-network-dlg/social-network-dlg.component';\r\nimport { SocialNetworkComponent } from './Components/social-network/social-network.component';\nimport { StagingInterceptor } from './Helpers/staging.interceptor';\n\nexport const GLOWW_SECURITY_STANDALONE_DECLARATIONS = [\n LoginComponent,\n ChangePasswordDlgComponent,\n UserMenuComponent,\n SocialNetworkDlgComponent,\n SocialNetworkComponent\n] as const;\n\nfunction getGlowwSecurityProviders(authenticationServiceConfig: AuthenticationServiceConfig): Provider[] {\n return [\n AuthenticationService,\n AuthenticationServiceConfig,\n { provide: AuthenticationServiceConfig, useValue: authenticationServiceConfig },\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\n //{ provide: HTTP_INTERCEPTORS, useClass: StagingInterceptor, multi: true },\n //socialLoginProviders\n ];\n}\n\nexport function provideGlowwSecurity(authenticationServiceConfig: AuthenticationServiceConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideHttpClient(withInterceptorsFromDi()),\n ...getGlowwSecurityProviders(authenticationServiceConfig)\n ]);\n}\n\n@NgModule({\n exports: [...GLOWW_SECURITY_STANDALONE_DECLARATIONS, RouterModule], imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatToolbarModule,\n MatButtonModule,\n MatSidenavModule,\n MatInputModule,\n MatFormFieldModule,\n MatCardModule,\n MatDialogModule,\n RouterModule,\n ...GLOWW_SECURITY_STANDALONE_DECLARATIONS], providers: [provideHttpClient(withInterceptorsFromDi())] })\nexport class GlowwSecurityModule {\n public static forRoot(authenticationServiceConfig: AuthenticationServiceConfig): ModuleWithProviders<GlowwSecurityModule> {\n\r\n /*\r\n var socialLoginProviders = {\r\n provide: 'SocialAuthServiceConfig',\r\n useValue: {\r\n autoLogin: false,\r\n providers: [\r\n ],\r\n onError: (err) => {\r\n console.error(err);\r\n }\r\n } as SocialAuthServiceConfig,\r\n };\r\n\r\n if (authenticationServiceConfig.googleClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: GoogleLoginProvider.PROVIDER_ID,\r\n provider: new GoogleLoginProvider(\r\n authenticationServiceConfig.googleClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.facebookClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: FacebookLoginProvider.PROVIDER_ID,\r\n provider: new FacebookLoginProvider(\r\n authenticationServiceConfig.facebookClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.amazonClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: AmazonLoginProvider.PROVIDER_ID,\r\n provider: new AmazonLoginProvider(\r\n authenticationServiceConfig.amazonClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.microsoftClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: MicrosoftLoginProvider.PROVIDER_ID,\r\n provider: new MicrosoftLoginProvider(\r\n authenticationServiceConfig.microsoftClientId\r\n )\r\n }\r\n )\r\n }\r\n */\r\n\r\n return {\n ngModule: GlowwSecurityModule,\n providers: getGlowwSecurityProviders(authenticationServiceConfig)\n };\n }\n}\n\r\nexport { LoginComponent } from './Components/login/login.component';\nexport { ChangePasswordDlgComponent } from './Components/change-password-dlg/change-password-dlg.component';\nexport { UserMenuComponent } from './Components/user-menu/user-menu.component';\nexport { SocialNetworkDlgComponent } from './Components/social-network-dlg/social-network-dlg.component';\nexport { SocialNetworkComponent } from './Components/social-network/social-network.component';\nexport { AuthenticationService } from './Services/authentication.service';\nexport { JwtInterceptor } from './Helpers/jwt.interceptor';\nexport { ErrorInterceptor } from './Helpers/error.interceptor';\r\nexport { StagingInterceptor } from './Helpers/staging.interceptor';\r\nexport { AuthGuard } from './Helpers';\r\nexport { AdministratorGuard } from './Helpers/';\r\n","import { Component, Input, OnInit, SecurityContext, TemplateRef, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport { MatDialog, MatDialogRef, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { HtmlFormatPipe } from '../../Pipes/html-format.pipe';\r\nimport { VoiceRecognitionService } from '../../Services/voice-recognition.service';\r\n//import { AngularEditorConfig, AngularEditorToolbarComponent } from '@kolkov/angular-editor';\r\n//import { AngularEditorButtonConfig } from '@kolkov/angular-editor/lib/config';\r\nimport { AngularEditorConfig, AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { AuthenticationService } from '../../gloww-security/gloww-security.module';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\r\n\r\n@Component({\n selector: 'gloww-html-editor',\n templateUrl: './html-editor.component.html',\n styleUrls: ['./html-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: HtmlEditorComponent\n }\n ],\n imports: [AngularEditorModule, FormsModule, CdkScrollable, MatDialogContent, MatDialogActions, HtmlFormatPipe]\n})\r\nexport class HtmlEditorComponent implements ControlValueAccessor {\r\n @ViewChild('voiceRecognitionDlg') voiceRecognitionTemplate!: TemplateRef<any>;\r\n //@Input() formControlName: string = \"\";\r\n @Input() placeHolder: string = \"\";\r\n @Input('value') _value: any = null;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n //CCH tb?: AngularEditorToolbarComponent;\r\n dialogRef?: MatDialogRef<any, any>;\r\n\r\n allowedStyles = ['text-align'];\r\n allowedTags = ['p', 'span', 'div', 'hr', 'br', 'b', 'i', 'u', 'sup', 'sub', 'strike', 'ol', 'ul', 'li'];\r\n public editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n minHeight: '75px',\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: '0',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: 'Enter text here...',\r\n defaultParagraphSeparator: 'p',\r\n defaultFontName: '',\r\n defaultFontSize: '3',\r\n fonts: [\r\n { class: 'arial', name: 'Arial' }\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n }\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n //cch sanitize: (html: string) => this.sanitize(html),\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n ['insertImage', 'insertVideo', 'customClasses', 'heading', 'heading',\r\n 'fontName',\r\n 'fontSize',\r\n 'textColor',\r\n 'backgroundColor', !this.isAdministrator() ? 'toggleEditorMode' : '']\r\n ],\r\n/* additionalButtons: [\r\n {\r\n title: 'Speech Recognition',\r\n click: (tb: AngularEditorToolbarComponent, event) => {\r\n this.tb = tb;\r\n tb.focus();\r\n this.voiceRecognitionService.start();\r\n this.voiceRecognitionService.text = \"\";\r\n this.dialogRef = this.dialog.open(this.voiceRecognitionTemplate, {\r\n width: '550px'\r\n });\r\n\r\n },\r\n icon: 'fas fa-comment-plus'\r\n }\r\n ]*/\r\n };\r\n\r\n cancel() {\r\n this.voiceRecognitionService.stop();\r\n //CCH this.tb = undefined;\r\n this.dialogRef?.close();\r\n }\r\n\r\n paste() {\r\n //CCH this.tb?.insertHtml(new HtmlFormatPipe().transform(this.voiceRecognitionService.text));\r\n this.voiceRecognitionService.stop();\r\n //CCH this.tb = undefined;\r\n this.dialogRef?.close();\r\n }\r\n\r\n constructor(private sanitizer: DomSanitizer, private authenticationService: AuthenticationService, public voiceRecognitionService: VoiceRecognitionService, public dialog: MatDialog) {\r\n this.voiceRecognitionService.init();\r\n }\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n if (obj) {\r\n this.value = obj;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n sanitize(html: string): string {\r\n let itres = this.sanitizer.sanitize(SecurityContext.STYLE, html)?.replace(new RegExp('\\\\</?[a-z]+:[a-z]+\\\\>', 'gi'), '').replace(/class=\"Mso[a-z]+\"/ig, '');\r\n const matchTags = itres?.match(/<\\s*\\/?(?<tag>[a-z0-9]+)\\s*[^>]*>/ig);\r\n matchTags?.forEach(m => {\r\n const matchTag = m.match(/<\\s*\\/?(?<tag>[a-z0-9]+)\\s*[^>]*>/i);\r\n if (matchTag?.groups && this.allowedTags.indexOf(matchTag?.groups['tag']) < 0) {\r\n itres = itres?.replace(m, '');\r\n }\r\n });\r\n\r\n while (true) {\r\n const matchStyle = itres?.match(/style\\s*=\\s*\"(?<style>[^\"]+)\"/i);\r\n if (!matchStyle || !matchStyle?.groups) { break; }\r\n const styles = matchStyle?.groups['style']?.replace(/&quot;/ig, '\"');\r\n const smatches = styles.match(/(?<name>[^;:]+)\\s*:\\s*(?<value>[^;]+);*/ig);\r\n const newStyles: any[] = [];\r\n smatches?.forEach((v, i, a) => {\r\n const ssmatches = v.match(/(?<name>[^;:]+)\\s*:\\s*(?<value>[^;]+);*/i);\r\n if (ssmatches?.groups) {\r\n const name = ssmatches?.groups['name'];\r\n if (this.allowedStyles.indexOf(name) >= 0) {\r\n newStyles.push(v);\r\n }\r\n const value = ssmatches.groups['value'];\r\n console.log(`${name}=${value}`);\r\n }\r\n });\r\n let attr = '';\r\n if (newStyles.length) { attr = `stylenew=\"${newStyles.join(';')}\"`; }\r\n itres = itres?.replace(matchStyle[0], attr);\r\n }\r\n return itres?.replace(/stylenew=/ig, 'style=') ?? \"\";\r\n }\r\n\r\n isAdministrator() {\r\n const currentUser: any = (this.authenticationService.currentUserValue as any).UserInfo;\r\n return currentUser.IsAdministrator === 1 || currentUser.isAdministrator === 1;\r\n }\r\n\r\n}\r\n","<div>\r\n <angular-editor [(ngModel)]=\"value\" [config]=\"editorConfig\" [placeholder]=\"placeHolder\"></angular-editor>\r\n</div>\r\n<ng-template #voiceRecognitionDlg>\r\n <mat-dialog-content>\r\n <div>La reconnaissance vocale est activée. Veuillez dicter le texte à insérer.</div>\r\n <div [innerHTML]=\"voiceRecognitionService.text | htmlFormat\" style=\"width:500px;height:300px;border:1px solid; border-color: blue;\"></div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions>\r\n <button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\r\n <button class=\"mat-raised-button mat-primary\" (click)=\"paste()\">Paste</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n","import { CodeEditorComponent } from './../../code-editor/code-editor.component';\r\nimport { Component, Inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { CodemirrorComponent } from '@ctrl/ngx-codemirror';\r\nimport { ResizedEvent } from 'angular-resize-event';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { CodeEditorComponent as CodeEditorComponent_1 } from '../../code-editor/code-editor.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-file-edit',\n templateUrl: './file-edit.component.html',\n styleUrls: ['./file-edit.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [CdkDrag, MatDialogTitle, CdkDragHandle, CdkScrollable, MatDialogContent, FormsModule, ReactiveFormsModule, MatFormField, MatLabel, MatInput, CodeEditorComponent_1, MatDialogActions, MatButton]\n})\r\nexport class FileEditComponent implements OnInit {\r\n @ViewChild(CodemirrorComponent) codeMirrorComponent: CodemirrorComponent\r\n\r\n form: UntypedFormGroup;\r\n ext: string;\r\n\r\n modes = {\r\n \".txt\": \"null\",\r\n \".cs\": \"clike\",\r\n \".js\": \"javascript\",\r\n \".json\": { name: \"javascript\", json: true },\r\n \".css\": \"css\",\r\n \".scss\": \"scss\",\r\n \".htm\": \"html\",\r\n \".html\": \"html\",\r\n \".xml\": \"xml\",\r\n \".xsl\": \"xml\",\r\n \".xslt\": \"xml\",\r\n \".yml\": \"yaml\",\r\n \".yaml\": \"yaml\",\r\n\r\n };\r\n\r\n\r\n constructor(private formBuilder: UntypedFormBuilder, private dialogRef: MatDialogRef<FileEditComponent>, @Inject(MAT_DIALOG_DATA) definition) {\r\n this.form = this.formBuilder.group({\r\n path: [null, Validators.required],\r\n content: [null]\r\n });\r\n if (definition) {\r\n this.form.patchValue(definition);\r\n try {\r\n this.ext = definition.path.match(/\\.(txt|js|json|ts|cs|css|scss|xml|html|htm|yml|yaml|exp|sh|pwsh|xsl|xslt)$/ig)[0];\r\n } catch {\r\n this.ext = null;\r\n }\r\n\r\n\r\n\r\n }\r\n }\r\n\r\n getMode() {\r\n try {\r\n if (this.ext && this.modes[this.ext]) {\r\n return this.modes[this.ext];\r\n } else {\r\n return \"null\";\r\n }\r\n } catch {\r\n return \"null\";\r\n }\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n save() {\r\n this.dialogRef.close(this.form.value);\r\n }\r\n\r\n initDone = false;\r\n onResized(event: ResizedEvent) {\r\n /*console.log(`new Height ${event.newRect?.height}`);\r\n this.cmHeight = `${event.newRect?.height - 15}px`;*/\r\n if (this.initDone) {\r\n this.codeMirrorComponent.codeMirror.setSize(null, event.newRect?.height - 5);\r\n } else {\r\n this.initDone = true;\r\n }\r\n }\r\n\r\n}\r\n","<div cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" class=\"dlg\">\r\n <h2 mat-dialog-title cdkDragHandle>Ajout/Edition d'un fichier</h2>\r\n \r\n <mat-dialog-content [formGroup]=\"form\" class=\"dialog-form-content\">\r\n <div class=\"column-layout fill-container\">\r\n <mat-form-field appearance=\"outline\" class=\"width-100\">\r\n <mat-label>Path</mat-label>\r\n <input matInput [readonly]=\"true\" placeholder=\"Path\" formControlName=\"path\">\r\n </mat-form-field>\r\n\r\n <div class=\"editor-flex-grow\">\r\n <gloww-code-editor [mode]=\"getMode()\" formControlName=\"content\"></gloww-code-editor>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-raised-button (click)=\"cancel()\">Close</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">Save</button>\r\n </mat-dialog-actions>\r\n</div>","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FolderServiceConfig {\r\n apiPath?= '/';\r\n static Create(t?: any): FolderServiceConfig {\r\n const res = new FolderServiceConfig();\r\n if (t) {\r\n Object.assign(res, t);\r\n }\r\n return res;\r\n }\r\n}\r\n","import { FolderServiceConfig } from './folder-service-config';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { API_PATH } from '../injection-token';\r\nimport { API_SERVER_URL } from './gloww.service';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n\r\nexport interface DirectoryContent {\r\n files: string[];\r\n directories: string[];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FolderService {\r\n\r\n constructor(private http: HttpClient, private folderServiceConfig: FolderServiceConfig, @Optional() @Inject(API_SERVER_URL) apiServerUrl: string) {\r\n console.log(`folderServiceConfig ${folderServiceConfig.apiPath}`);\r\n console.log(`apiServierUrl ${apiServerUrl}`);\r\n }\r\n async noFolders() {\r\n return await firstValueFrom(this.http.get<boolean>(`${this.folderServiceConfig.apiPath}noFolders`));\r\n }\r\n\r\n\r\n getDirectoryContent(path: string) {\r\n return this.http.get<DirectoryContent>(`${this.folderServiceConfig.apiPath}Directories/${path ?? \"\"}`);\r\n }\r\n postDirectoryContent(path: string) {\r\n const formData = new FormData();\r\n return this.http.post<DirectoryContent>(`${this.folderServiceConfig.apiPath}Directories/${path}`, formData, {});\r\n }\r\n\r\n getFileContent(path: string) {\r\n return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, {\r\n responseType: 'text'\r\n });\r\n }\r\n getFileContentBlob(path: string) {\r\n return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, {\r\n responseType: 'blob'\r\n });\r\n }\r\n\r\n postFileContent(path: string, formData: FormData) {\r\n return this.http.post<any>(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, formData, {\r\n reportProgress: true,\r\n observe: 'events'\r\n });\r\n }\r\n}\r\n","import { HttpEventType, HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { Router, ActivatedRoute, NavigationEnd, RouterLink } from '@angular/router';\r\nimport { of } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { DirectoryContent, FolderService } from '../../../Services/folder.service';\r\nimport { PromptModel, PromptComponent } from '../../prompt/prompt.component';\r\nimport { UploadDocComponent } from '../../upload-doc/upload-doc.component';\r\nimport { UploadFileComponent } from '../../upload-file/upload-file.component';\r\nimport { FileEditComponent } from '../file-edit/file-edit.component';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\n@Component({\n selector: 'gloww-folders',\n templateUrl: './folders.component.html',\n styleUrls: ['./folders.component.scss'],\n imports: [RouterLink, MatProgressSpinner]\n})\r\nexport class FoldersComponent implements OnInit {\r\n\r\n\r\n currentDir: string;\r\n directoryContent: DirectoryContent;\r\n\r\n\r\n constructor(private folderService: FolderService, private router: Router, private route: ActivatedRoute, private dialog: MatDialog) {\r\n //flowService.getDirectoryContent(route.snapshot.params.id).subscribe(r => this.directoryContent = r);\r\n\r\n this.router.events.subscribe((event: NavigationEnd) => {\r\n if (event instanceof NavigationEnd) {\r\n const urlParts = event.url.split('/');\r\n this.currentDir = urlParts.slice(2).join(\"/\");\r\n this.directoryContent = null;\r\n folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n }\r\n })\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n addFolder() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = new PromptModel(\"New Folder\", \"Please give the name of the folder to create\", \"\", true);\r\n\r\n this.dialog.open(PromptComponent, dialogConfig).afterClosed().subscribe(folder => {\r\n if (folder) {\r\n this.folderService.postDirectoryContent(this.currentDir + '/' + folder).subscribe(c => {\r\n this.router.navigate(this.getRouterLink(folder)),\r\n error => alert(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n addFile() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = new PromptModel(\"New File\", \"Please give the name of the text file to create\", \"\", true);\r\n\r\n this.dialog.open(PromptComponent, dialogConfig).afterClosed().subscribe(fileName => {\r\n if (fileName) {\r\n this.Edit(fileName);\r\n this.directoryContent = null;\r\n this.folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n }\r\n });\r\n }\r\n\r\n addFileUpload() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = { acceptMime: 'image/*', multiple: true, allowAltFileName: true };\r\n\r\n this.dialog.open(UploadDocComponent, dialogConfig).afterClosed().subscribe(files => {\r\n if (files) {\r\n files.forEach(file => {\r\n const formData = new FormData();\r\n formData.append('file', file.data);\r\n this.UploadFile(this.currentDir + \"/\" + file.fileName, formData);\r\n this.directoryContent = null;\r\n this.folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n });\r\n }\r\n });\r\n }\r\n getRouterLink(directory?: string) {\r\n if (!this.currentDir) {\r\n return ['/folders', directory];\r\n }\r\n if (!directory) {\r\n let res = ['/folders', ...this.currentDir.split(\"/\")];\r\n res.pop();\r\n return res;\r\n }\r\n return ['/folders', ...this.currentDir.split(\"/\"), directory]\r\n }\r\n getHref(f: string) {\r\n if (!this.currentDir) {\r\n return ['/FlowMgmt', 'folders', f].join('/');\r\n }\r\n\r\n return ['/FlowMgmt', 'folders', ...this.currentDir.split(\"/\"), f].join('/');\r\n }\r\n\r\n\r\n\r\n dataURItoBlob(content) {\r\n const byteString = content;\r\n /*const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n let j = 0;\r\n for (let i = 0; i < byteString.length; i++) {\r\n let chr = byteString.charCodeAt(i);\r\n if (chr <= 255) {\r\n int8Array[j++] = chr;\r\n } else {\r\n console.log(`${chr}:${Math.floor(chr / 255)},${chr % 255}`)\r\n int8Array[j++] = Math.floor(chr / 255);\r\n int8Array[j++] = chr % 255;\r\n }\r\n }*/\r\n const te = new TextEncoder();\r\n const uint8array = te.encode(byteString);\r\n const blob = new Blob([uint8array], { type: 'text/plain;charset=UTF-8;' });\r\n return blob;\r\n }\r\n\r\n isEditable(filename: string): boolean {\r\n return filename.match(/\\.(txt|js|json|ts|cs|css|scss|xml|html|htm|exp|sh|pwsh|yml|yaml|xsl|xslt)$/ig) != null;\r\n }\r\n\r\n UploadFile(fileName: string, formData: FormData) {\r\n this.folderService.postFileContent(fileName, formData).pipe(\r\n map(event => {\r\n switch (event.type) {\r\n case HttpEventType.UploadProgress:\r\n //file.progress = Math.round(event.loaded * 100 / event.total);\r\n break;\r\n case HttpEventType.Response:\r\n return event.body;\r\n }\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n //file.inProgress = false;\r\n return of(`${fileName} upload failed.`);\r\n })).subscribe((event: any) => {\r\n if (typeof (event) === 'object') {\r\n //obj.Logo = event.Logo;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n Edit(fileName: string) {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n let content: string;\r\n this.folderService.getFileContent(this.currentDir + '/' + fileName).subscribe(c => {\r\n dialogConfig.data = { path: this.currentDir + '/' + fileName, content: c };\r\n this.dialog.open(FileEditComponent, dialogConfig).afterClosed().subscribe(data => {\r\n if (data) {\r\n const formData = new FormData();\r\n const imageName = fileName;\r\n const imageBlob = this.dataURItoBlob(data.content);\r\n const file = new File([imageBlob], imageName, { type: 'text/plain;charset=UTF-8;' });\r\n formData.append('file', file);\r\n this.UploadFile(this.currentDir + '/' + fileName, formData);\r\n //file.inProgress = true;\r\n\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n /*\r\nthis.http.get(`${environment.apiUrl}`, {\r\n responseType: 'arraybuffer', headers: headers\r\n}\r\n).subscribe(response => this.downLoadFile(response, \"application/ms-excel\"));*/\r\n\r\n downloadFile(fileName: string) {\r\n this.folderService.getFileContentBlob(this.currentDir + '/' + fileName).subscribe(blob => {\r\n this.downLoadFile2(blob, blob.type)\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Method is use to download file.\r\n * @param data - Array Buffer data\r\n * @param type - type of the document.\r\n */\r\n downLoadFile2(data: any, type: string) {\r\n let blob = new Blob([data], { type: type });\r\n let url = window.URL.createObjectURL(blob);\r\n let pwa = window.open(url);\r\n if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {\r\n alert('Please disable your Pop-up blocker and try again.');\r\n }\r\n }\r\n\r\n}\r\n","<h1>\n <i class=\"fal fa-folder\" size=\"40px\"></i> /{{currentDir}}\n @if (currentDir) {\n <i class=\"fal fa-level-up\" [routerLink]=\"getRouterLink()\"></i>\n }\n</h1>\n@if (directoryContent) {\n <div>\n <i class=\"fal fa-folder-plus\" (click)=\"addFolder()\" size=\"30px\"></i>\n <ul>\n @for (d of directoryContent.directories; track d) {\n <li>\n <i class=\"fal fa-folder\"></i><a [routerLink]=\"getRouterLink(d)\">{{d}}</a>\n </li>\n }\n </ul>\n <i class=\"fal fa-file-plus\" (click)=\"addFile()\" size=\"30px\"></i>\n <i class=\"fal fa-file-upload\" (click)=\"addFileUpload()\" size=\"30px\"></i>\n <ul>\n @for (f of directoryContent.files; track f) {\n <li>\n @if (isEditable(f)) {\n <a (click)=\"Edit(f)\" href=\"javascript:void(0);\">\n <i class=\"fal fa-file\"></i> {{f}}\n </a>\n } @else {\n <i class=\"fal fa-file fa-disabled\"></i> <a (click)=\"downloadFile(f)\" target=\"_blank\" href=\"javascript:void(0);\">{{f}}</a>\n }\n </li>\n }\n </ul>\n </div>\n} @else {\n <mat-spinner></mat-spinner>\n}\n","import { HttpResponse, HttpErrorResponse, HttpClient } from '@angular/common/http';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport FileSaver from 'file-saver';\r\nimport JSZip from 'jszip';\r\nimport { filter, map } from 'rxjs/operators';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatProgressBar } from '@angular/material/progress-bar';\r\n\r\n@Component({\n selector: 'gloww-download-progress',\n templateUrl: './download-progress.component.html',\n styleUrls: ['./download-progress.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, MatProgressBar, MatDialogActions]\n})\r\nexport class DownloadProgressComponent implements OnInit {\r\n\r\n done: number;\r\n name: string;\r\n files: { name: string, url: string }[];\r\n current: { url: string, loaded: number, total: number }[];\r\n message: string;\r\n percent: number;\r\n constructor(private dialogRef: MatDialogRef<DownloadProgressComponent>, @Inject(MAT_DIALOG_DATA) arg: any, public httpClient: HttpClient) {\r\n this.done = -1;\r\n this.name = arg.name;\r\n this.files = arg.files;\r\n this.current = []\r\n this.message = \"Download des fichiers\";\r\n this.percent = -1;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.name) {\r\n this.downloadZip();\r\n } else {\r\n this.download();\r\n }\r\n\r\n }\r\n\r\n async getFile(url: string, callback: (url: string, loaded: number, total: number) => void) {\r\n const httpOptions = {\r\n observe: \"events\",\r\n reportProgress: true,\r\n responseType: \"blob\" //as 'json'\r\n };\r\n const res = await this.httpClient.get(url, httpOptions as any).pipe(\r\n map((event: any) => {\r\n console.log(event);\r\n /*if (event.type === HttpEventType.DownloadProgress) {\r\n console.log(`download progress ${(event as HttpEventType.DownloadProgress).valueOf}`);\r\n }\r\n if (event.type === HttpEventType.Response) {\r\n console.log(\"donwload completed\");\r\n }*/\r\n if (event.type === 3) {\r\n callback(url, event.loaded, event.total)\r\n }\r\n if (event instanceof HttpResponse) {\r\n callback(url, -1, -1);\r\n }\r\n return event;\r\n }),\r\n filter((event: any) => event instanceof HttpResponse)).toPromise().catch((err: HttpErrorResponse) => {\r\n const error = err.error;\r\n return error;\r\n });\r\n return res.body;\r\n }\r\n\r\n callback(url: string, loaded: number, total: number) {\r\n const index = this.current.findIndex(c => c.url === url);\r\n if (total === -1) {\r\n this.done += 1;\r\n this.current.splice(index, 1);\r\n } else {\r\n if (index === -1) {\r\n this.current.push({ url, loaded, total });\r\n } else {\r\n this.current[index].loaded = loaded;\r\n }\r\n\r\n }\r\n }\r\n\r\n callback_zip(metadata: any) {\r\n this.percent = metadata.percent;\r\n }\r\n\r\n async downloadZip() {\r\n const zip = new JSZip();\r\n // tslint:disable-next-line:prefer-for-of\r\n this.done = 0;\r\n await Promise.all(this.files!.map(async (file) => {\r\n let fileData: any;\r\n fileData = await this.getFile(file.url, this.callback.bind(this));\r\n const b: any = new Blob([fileData], { type: '' + fileData.type + '' });\r\n zip.file(file.name, b);\r\n }));\r\n this.message = \"Génération du fichier Zip\";\r\n this.done = -1;\r\n\r\n await zip.generateAsync({ type: 'blob' }, this.callback_zip.bind(this)).then((content) => {\r\n if (content) {\r\n FileSaver.saveAs(content, this.name);\r\n }\r\n });\r\n this.dialogRef.close();\r\n }\r\n\r\n async download() {\r\n this.done = 0;\r\n await Promise.all(this.files!.map(async (file) => {\r\n let fileData: any;\r\n fileData = await this.getFile(file.url, this.callback.bind(this));\r\n const b: any = new Blob([fileData], { type: '' + fileData.type + '' });\r\n if (file.name===\"open\"){\r\n var blobURL = URL.createObjectURL(b);\r\n window.open(blobURL);\r\n }else{\r\n FileSaver.saveAs(b, file.name);\r\n }\r\n }));\r\n this.message = \"Génération du fichier Zip\";\r\n this.done = -1;\r\n this.dialogRef.close();\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>Progression Download</h2>\n\n<mat-dialog-content>\n <H3>{{message}}</H3>\n @if (percent>0) {\n <mat-progress-bar [value]=\"percent\"></mat-progress-bar>\n }\n @if (done>=0) {\n <div>\n <mat-progress-bar [value]=\"done*100/files.length\"></mat-progress-bar> {{done}}/{{files.length}}\n <br />\n <ul>\n @for ( file of current; track file; let i = $index) {\n <li>\n <span id=\"file-label\">{{file.url}}</span>\n <mat-progress-bar [value]=\"file.loaded*100/file.total\"></mat-progress-bar>\n </li>\n }\n </ul>\n </div>\n }\n</mat-dialog-content>\n\n\n<mat-dialog-actions>\n <!--<button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\n <button class=\"mat-raised-button mat-primary\" (click)=\"save()\">Save</button>-->\n</mat-dialog-actions>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { DownloadProgressComponent } from '../download-progress/download-progress.component';\r\n\r\n@Component({\n selector: 'gloww-secure-a',\n templateUrl: './secure-a.component.html',\n styleUrls: ['./secure-a.component.scss']\n})\r\nexport class SecureAComponent implements OnInit {\r\n @Input() href: string;\r\n @Input() name: string\r\n\r\n constructor(private dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n click() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = { files: [{ url: this.href, name: this.name }] };\r\n\r\n this.dialog.open(DownloadProgressComponent, dialogConfig).afterClosed().subscribe();\r\n }\r\n\r\n}\r\n","<a (click)=\"click()\" href=\"javascript:void(0);\">\r\n <ng-content></ng-content>\r\n</a>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'gloww-dummy',\n templateUrl: './dummy.component.html',\n styleUrls: ['./dummy.component.scss']\n})\r\nexport class DummyComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p>dummy works!</p>\r\n","import { Component, OnInit, Input, AfterViewInit, Inject } from '@angular/core';\r\nimport { ControlValueAccessor, UntypedFormBuilder, UntypedFormGroup, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { GlowwService } from '../../Services/gloww.service';\r\nimport { CodeEditorComponent } from '../code-editor/code-editor.component';\nimport { MatFormField } from '@angular/material/input';\nimport { MatSelect, MatOption } from '@angular/material/select';\r\n\r\n@Component({\n selector: 'gloww-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: SelectComponent\n }\n ],\n imports: [FormsModule, ReactiveFormsModule, MatFormField, MatSelect, MatOption]\n})\r\nexport class SelectComponent implements ControlValueAccessor, AfterViewInit {\r\n @Input('value') _value: any = null;\r\n @Input('objectName') objectName: any = null;\r\n @Input('returnField') returnField: any = null;\r\n @Input('displayField') displayField: any = null;\r\n @Input('displayFct') displayFct: any = null;\r\n @Input('placeHolder') placeHolder: any = null;\r\n @Input('data') data: any = null;\r\n @Input('compareField') compareField: any = null\r\n @Input() compareWith: (o1: any, o2: any) => boolean;\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n public items: any[] = [];\r\n public error: string;\r\n\r\n @Input() searchRequest: (obj?: any) => Observable<[]>;\r\n\r\n public form: UntypedFormGroup;\r\n glowwService: any;\r\n\r\n constructor(@Inject('glowwService') glowwService: any, private formBuilder: UntypedFormBuilder) {\r\n this.glowwService = glowwService;\r\n this.form = this.formBuilder.group({\r\n select: [null, null]\r\n });\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.error = null;\r\n if (!this.searchRequest) {\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n let queryParams: any = {};\r\n if (this.data) {\r\n Object.keys(this.data).forEach(name => {\r\n queryParams[name] = this.data[name];\r\n });\r\n }\r\n\r\n //debugger;\r\n this.searchRequest.call(this.glowwService, queryParams).subscribe(items => this.items = items,\r\n error => {\r\n this.error = error;\r\n });\r\n\r\n if (!this.compareWith && this.compareField) {\r\n this.compareWith = (o1, o2) => o1[this.compareField] == o2[this.compareField];\r\n }\r\n }\r\n ngAfterContentInit(): void {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n writeValue(val: any): void {\r\n val && this.form.setValue({ select: val }, { emitEvent: false });\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n this.form.valueChanges.subscribe(data => {\r\n if (this.returnField) {\r\n this.onChange(this.form.value.select[this.returnField]);\r\n } else {\r\n this.onChange(this.form.value.select);\r\n }\r\n });\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n propagateChange = (_: any) => { };\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n const status = isDisabled ? 'disable' : 'enable';\r\n //TODO\r\n }\r\n\r\n displayObj(item) {\r\n if (this.displayField) {\r\n return item[this.displayField];\r\n } else if (this.displayFct) {\r\n return this.displayFct(item);\r\n }\r\n }\r\n\r\n}\r\n\r\n","<form [formGroup]=\"form\">\n @if (error) {\n <div style=\"color:red\">{{error}}</div>\n }\n <mat-form-field>\n <mat-select [placeholder]=\"placeHolder\" formControlName=\"select\" [compareWith]=\"compareWith\">\n @for (item of items; track item) {\n <mat-option [value]=\"item\">{{displayObj(item)}}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n</form>","import { catchError, debounceTime, distinctUntilChanged, filter, map, switchMap, tap } from 'rxjs/operators';\r\nimport { Component, OnInit, Input, AfterViewInit, Inject, ChangeDetectorRef, forwardRef, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\nimport { TranslateDefaultParser } from '@ngx-translate/core';\nimport { MatFormField, MatInput } from '@angular/material/input';\nimport { MatAutocompleteTrigger, MatAutocomplete } from '@angular/material/autocomplete';\nimport { MatOption } from '@angular/material/select';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'gloww-auto-complete',\n templateUrl: './auto-complete.component.html',\n styleUrls: ['./auto-complete.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }\n ],\n imports: [FormsModule, ReactiveFormsModule, MatFormField, MatInput, MatAutocompleteTrigger, MatAutocomplete, MatOption, SafeHtmlPipe]\n})\r\nexport class AutoCompleteComponent implements ControlValueAccessor, OnInit, AfterViewInit {\r\n @Input('value') _value: any = null;\r\n @Input('objectName') objectName: any = null;\r\n @Input('searchField') searchField: any = null;\r\n @Input('returnField') returnField: any = null;\r\n @Input('displayField') displayField: any = null;\r\n @Input('displayExpr') displayExpr: any = null;\r\n @Input('displayFct') displayFct: any = null;\r\n @Input('placeHolder') placeHolder: any = null;\r\n @Input('data') data: any = null;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n public items: any[] = [];\r\n public error: string;\r\n\r\n @Input() searchRequest: (obj?: any) => Observable<[]>;\r\n\r\n public form: UntypedFormGroup;\r\n glowwService: any;\r\n resultCtrl: UntypedFormControl;\r\n public parser = new TranslateDefaultParser();\r\n\r\n constructor(@Inject('glowwService') glowwService: any, private formBuilder: UntypedFormBuilder, private ref: ChangeDetectorRef) {\r\n this.glowwService = glowwService;\r\n this.resultCtrl = new UntypedFormControl();\r\n this.form = this.formBuilder.group({\r\n __result: this.resultCtrl\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n public options: any[] = [];//Observable<unknown>;\r\n ngOnInit(): void {\r\n //debugger;\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n this.resultCtrl.valueChanges.pipe(\r\n filter(res => res != null && res.length > 2),\r\n distinctUntilChanged(),\r\n debounceTime(250),\r\n tap(() => { this.error = \"\"; this.options = []; }),\r\n switchMap(searchStr => {\r\n let searchObj = {};\r\n if (this.data) {\r\n Object.keys(this.data).forEach(k => {\r\n searchObj[k] = this.data[k];\r\n });\r\n }\r\n searchObj[this.searchField] = searchStr;\r\n return this.searchRequest.call(this.glowwService, searchObj).pipe(\r\n map(res => res),\r\n catchError(err => {\r\n this.error = err.message;\r\n this.ref.markForCheck();\r\n return of([])\r\n })\r\n )\r\n })\r\n ).subscribe(\r\n {\r\n next: (data: any[]) => {\r\n this.options = data;\r\n this.ref.markForCheck();\r\n },\r\n error: (error) => { this.error = error }\r\n }\r\n );\r\n }\r\n\r\n\r\n writeValue(val: any): void {\r\n val && this.form.setValue({ __result: val }, { emitEvent: false });\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n this.form.valueChanges.subscribe(data => {\r\n if (this.returnField) {\r\n this.onChange(this.form.value.__result[this.returnField]);\r\n } else {\r\n this.onChange(this.form.value.__result);\r\n }\r\n });\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n propagateChange = (_: any) => { };\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n const status = isDisabled ? 'disable' : 'enable';\r\n //TODO\r\n }\r\n\r\n displayObj(item) {\r\n if (!item) return null;\r\n console.log(\"displayOf\");\r\n if (this.displayField) {\r\n return item[this.displayField];\r\n } else if (this.displayExpr) {\r\n return this.parser.interpolate(this.displayExpr.replace(/\\\\\\{/g, \"{\").replace(/\\\\\\}/g, \"}\"), item);\r\n //return '?1' + this.parser.interpolate(\"{{Name}}\", { Name: \"test\" }) + '?2' + this.parser.interpolate(\"{{Name}}\", item)+'?3'+this.parser.interpolate(this.displayExpr.replace(/\\\\\\{/g,\"{\").replace(/\\\\\\}/g,\"}\"), item) +'?4'+ item;\r\n } else if (this.displayFct) {\r\n return this.displayFct(item);\r\n }\r\n }\r\n}\r\n\r\n","<div [formGroup]=\"form\" style=\"width:100%\" class=\"mainDiv\">\n <div style=\"color:red\">{{error}}</div>\n <mat-form-field style=\"width:100%\" class=\"autocff\">\n <input type=\"text\" matInput formControlName=\"__result\" [matAutocomplete]=\"auto\" [placeholder]=\"placeHolder\">\n </mat-form-field>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayObj.bind(this)\">\n @for (option of options; track option) {\n <mat-option [value]=\"option\" [innerHTML]=\"displayObj(option) | safeHtml\">\n </mat-option>\n }\n </mat-autocomplete>\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport moment from 'moment';\nimport { MatFormField, MatLabel, MatInput, MatSuffix } from '@angular/material/input';\nimport { MatDatepickerInput, MatDatepickerToggle, MatDatepicker } from '@angular/material/datepicker';\nimport { NgxMatDatetimePickerModule } from 'ngx-mat-datetime-picker-v2';\r\n\r\n@Component({\n selector: 'gloww-datetime',\n templateUrl: './datetime.component.html',\n styleUrls: ['./datetime.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: DatetimeComponent\n }\n ],\n imports: [MatFormField, MatLabel, MatInput, MatDatepickerInput, FormsModule, MatDatepickerToggle, MatSuffix, MatDatepicker, NgxMatDatetimePickerModule]\n})\r\nexport class DatetimeComponent implements ControlValueAccessor {\r\n @Input('value') _value: any = null;\r\n @Input('display') display: any = null;\r\n @Input('placeHolder') placeHolder: any = null;\r\n @Input('mode') mode: string = 'date';\r\n @Input() showSpinners: boolean = true;\r\n @Input() showSeconds: boolean = false;\r\n @Input() disableMinute: boolean = false;\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n constructor() { }\r\n\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n let dt = this._value;\r\n if (typeof (this._value) === 'string') {\r\n dt = (moment(this._value) as moment.Moment).toISOString();\r\n }\r\n this.onChange(dt);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n this.value = obj;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n}\r\n","<div style=\"width:100%\">\n @if (mode==='date') {\n <mat-form-field>\n <mat-label>{{display}}</mat-label>\n <input matInput [matDatepicker]=\"picker\" [placeholder]=\"placeHolder\" [(ngModel)]=\"value\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n }\n\n @if (mode==='datetime') {\n <mat-form-field>\n <mat-label>{{display}}</mat-label>\n <input matInput [ngxMatDatetimePicker]=\"pickerDT\" [placeholder]=\"placeHolder\" [(ngModel)]=\"value\">\n <mat-datepicker-toggle matSuffix [for]=\"$any(pickerDT)\"></mat-datepicker-toggle>\n <ngx-mat-datetime-picker #pickerDT [showSpinners]=\"showSpinners\" [showSeconds]=\"showSeconds\" [touchUi]=\"true\" [disableMinute]=\"disableMinute\">\n </ngx-mat-datetime-picker>\n </mat-form-field>\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[glowwCallback]',\n standalone: true\n})\nexport class CallbackDirective {\n\n constructor() { }\n\n}\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\n\r\nexport abstract class BaseCollectionComponent {\r\n\r\n filterform: FormGroup;\r\n constructor(private _formBuilder: FormBuilder) {\r\n this.filterform = this._formBuilder.group({\r\n filterData: [null, null],\r\n });\r\n }\r\n\r\n abstract GetDataSource(): MatTableDataSource<any>;\r\n\r\n Filter(args?) {\r\n const filterDictionary = new Map<string, string>();\r\n var jsonString = JSON.stringify(args ?? this.filterform.value.filterData);\r\n this.GetDataSource().filter = jsonString;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { IHasUnsavedData } from './ihas-unsaved-data';\r\n\r\n/*@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HasUnsavedDataGuard implements CanDeactivate<unknown> {\r\n canDeactivate(\r\n component: unknown,\r\n currentRoute: ActivatedRouteSnapshot,\r\n currentState: RouterStateSnapshot,\r\n nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n return true;\r\n }\r\n\r\n}*/\r\n\r\n@Injectable()\r\nexport class HasUnsavedDataGuard {\r\n canDeactivate(component: IHasUnsavedData): boolean {\r\n if (component.hasUnsavedData && component.hasUnsavedData()) {\r\n return confirm('You have some unsaved form data. Are you sure, you want to leave this page ? ');\r\n }\r\n return true;\r\n }\r\n}\r\n","import { FolderService } from './Services/folder.service';\r\nimport { VoiceRecognitionService } from './Services/voice-recognition.service';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { NavService } from './Services/nav.service';\r\nimport { SecureImgComponent } from './Components/secure-img/secure-img.component';\r\nimport { ConfirmationComponent } from './Components/confirmation/confirmation.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { VersionCheckService } from './Services/version-check.service';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { EnvironmentProviders, makeEnvironmentProviders, ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { UploadDocComponent } from './Components/upload-doc/upload-doc.component';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { \r\n NgxMatDatetimePickerModule, // Existe selon ta liste\r\n NgxMatTimepickerComponent, // Attention : ta liste dit \"NgxMatTimepickerComponent\"\r\n NgxMatNativeDateModule, // Existe selon ta liste\r\n} from 'ngx-mat-datetime-picker-v2';\r\n/*import { NgxMatMomentModule } from '@angular-material-components/moment-adapter';*/\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { SafeHtmlPipe } from './Pipes/safe-html.pipe';\r\nimport { DisplayObjectsComponent } from './Components/display-objects/display-objects.component';\r\nimport { HeaderComponent } from './Components/header/header.component';\r\nimport { ResultTableComponent } from './Components/result-table/result-table.component';\r\nimport { SearchFormComponent } from './Components/search-form/search-form.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { PromptComponent } from './Components/prompt/prompt.component';\r\nimport { SecurePipe } from './Pipes/secure.pipe';\r\nimport { MenuListItemComponent } from './Components/menu-list-item/menu-list-item.component';\r\nimport { CodeEditorComponent } from './Components/code-editor/code-editor.component';\r\nimport { HtmlEditorComponent } from './Components/html-editor/html-editor.component';\r\nimport { HtmlFormatPipe } from './Pipes/html-format.pipe';\r\nimport { UploadFileComponent } from './Components/upload-file/upload-file.component';\r\nimport { FileSinkDirective } from './Directives/file-sink.directive';\r\nimport { FileEditComponent } from './Components/folders/file-edit/file-edit.component';\r\nimport { FoldersComponent } from './Components/folders/folders/folders.component';\r\nimport { FolderServiceConfig } from './Services/folder-service-config';\r\nimport { DownloadProgressComponent } from './Components/download-progress/download-progress.component';\r\nimport { SecureAComponent } from './Components/secure-a/secure-a.component';\r\nimport { DummyComponent } from './Components/dummy/dummy.component';\r\nimport { SelectComponent } from './Components/select/select.component';\r\nimport { AutoCompleteComponent } from './Components/auto-complete/auto-complete.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { DatetimeComponent } from './Components/datetime/datetime.component';\r\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\nimport { AngularResizeEventModule } from 'angular-resize-event';\nimport { RouteDirective } from './Directives/route.directive';\nimport { CallbackDirective } from './Directives/callback.directive';\nimport { FilterFormComponent } from './Components/filter-form/filter-form.component';\nimport { BaseCollectionComponent } from './Components/base-collection/base-collection.component';\n\nexport const GLOWW_STANDALONE_DECLARATIONS = [\n UploadDocComponent,\n SafeHtmlPipe,\n DisplayObjectsComponent,\n HeaderComponent,\n ResultTableComponent,\n SearchFormComponent,\n ConfirmationComponent,\n PromptComponent,\n SecurePipe,\n SecureImgComponent,\n MenuListItemComponent,\n CodeEditorComponent,\n HtmlEditorComponent,\n HtmlFormatPipe,\n UploadFileComponent,\n FileSinkDirective,\n FileEditComponent,\n FoldersComponent,\n DownloadProgressComponent,\n SecureAComponent,\n DummyComponent,\n SelectComponent,\n AutoCompleteComponent,\n DatetimeComponent,\n RouteDirective,\n CallbackDirective,\n FilterFormComponent\n] as const;\n\nexport const GLOWW_MODULE_EXPORTS = [\n ...GLOWW_STANDALONE_DECLARATIONS,\n MatDatepickerModule,\n NgxMatDatetimePickerModule,\n NgxMatTimepickerComponent,\n NgxMatNativeDateModule\n] as const;\n\nfunction getGlowwProviders(folderServiceConfig?: FolderServiceConfig): Provider[] {\n return [\n VersionCheckService,\n NavService,\n VoiceRecognitionService,\n {\n provide: FolderServiceConfig,\n useValue: folderServiceConfig\n },\n { provide: MAT_DATE_LOCALE, useValue: 'fr' }\n ];\n}\n\nexport function provideGloww(folderServiceConfig?: FolderServiceConfig): EnvironmentProviders {\n return makeEnvironmentProviders(getGlowwProviders(folderServiceConfig));\n}\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MatTableModule,\n MatSelectModule,\n MatPaginatorModule,\n MatSortModule,\n MatProgressSpinnerModule,\n MatAutocompleteModule,\n CodemirrorModule,\n AngularEditorModule,\n MatDatepickerModule,\n NgxMatDatetimePickerModule, // Existe selon ta liste\n NgxMatTimepickerComponent, // Attention : ta liste dit \"NgxMatTimepickerComponent\"\n NgxMatNativeDateModule, // Existe selon ta liste\n //NgxMatMomentModule,\n DragDropModule,\n AngularResizeEventModule,\n ...GLOWW_STANDALONE_DECLARATIONS\n ],\n providers: [],\n exports: [...GLOWW_MODULE_EXPORTS]\n})\nexport class GlowwModule {\n public static forRoot(folderServiceConfig?: FolderServiceConfig): ModuleWithProviders<GlowwModule> {\n console.log(`forRoot ${folderServiceConfig}`);\n return {\n ngModule: GlowwModule,\n providers: getGlowwProviders(folderServiceConfig)\n };\n }\n}\n\r\nexport { VersionCheckService } from './Services/version-check.service';\r\nexport { FolderService } from './Services/folder.service'\r\nexport { DialogService } from './Services/dialog.service';\r\nexport { VoiceRecognitionService } from './Services/voice-recognition.service';\r\nexport { DisplayObjectsComponent } from './Components/display-objects/display-objects.component';\nexport { HeaderComponent } from './Components/header/header.component';\nexport { ResultTableComponent } from './Components/result-table/result-table.component';\nexport { SearchFormComponent } from './Components/search-form/search-form.component';\nexport { FilterFormComponent } from './Components/filter-form/filter-form.component';\nexport { BaseCollectionComponent } from './Components/base-collection/base-collection.component';\nexport { UploadDocComponent } from './Components/upload-doc/upload-doc.component';\nexport { UploadFileComponent } from './Components/upload-file/upload-file.component';\nexport { ConfirmationComponent } from './Components/confirmation/confirmation.component';\nexport { PromptComponent } from './Components/prompt/prompt.component';\nexport { SecureImgComponent } from './Components/secure-img/secure-img.component';\nexport { MenuListItemComponent } from './Components/menu-list-item/menu-list-item.component';\nexport { CodeEditorComponent } from './Components/code-editor/code-editor.component';\nexport { HtmlEditorComponent } from './Components/html-editor/html-editor.component';\nexport { FileEditComponent } from './Components/folders/file-edit/file-edit.component';\nexport { FoldersComponent } from './Components/folders/folders/folders.component';\nexport { DownloadProgressComponent } from './Components/download-progress/download-progress.component';\nexport { DummyComponent } from './Components/dummy/dummy.component'\nexport { SelectComponent } from './Components/select/select.component'\nexport { DatetimeComponent } from './Components/datetime/datetime.component'\nexport { AutoCompleteComponent } from './Components/auto-complete/auto-complete.component'\nexport { SecureAComponent } from './Components/secure-a/secure-a.component';\nexport { SafeHtmlPipe } from './Pipes/safe-html.pipe';\nexport { SecurePipe } from './Pipes/secure.pipe';\nexport { HtmlFormatPipe } from './Pipes/html-format.pipe';\nexport { FileSinkDirective } from './Directives/file-sink.directive';\nexport { RouteDirective } from './Directives/route.directive';\nexport { CallbackDirective } from './Directives/callback.directive';\nexport { HasUnsavedDataGuard } from './Guards/has-unsaved-data.guard'\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlowwSecurityService {\r\n\r\n constructor() { }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport class GlowwValidators {\r\n public static isObject(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (typeof control.value !== 'object') {\r\n return { 'isNotObject': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isEmail(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotEmail': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isInteger(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:^\\s*\\d*\\s*$)/\r\n if ((typeof control.value !== 'number') && (typeof control.value !== 'string' || !control.value.toString().match(re))) {\r\n return { 'isNotInteger': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isNumber(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:(?:^\\s*(?:\\d+(?:[\\.]\\d+)?)?\\s*$))/\r\n if ((typeof control.value !== 'number') && (typeof control.value !== 'string' || !control.value.toString().match(re))) {\r\n return { 'isNotNumber': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isUrl(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(((https?:(?:\\/\\/)?)?(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\/[\\+~%\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isIPv4(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n public static isIPv4Range(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/\\d{1,2}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isIPv6(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n public static isIPv6Range(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/\\d{1-3}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isMacAddr(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(?:[[:xdigit:]]{2}([-:]))(?:[[:xdigit:]]{2}\\1){4}[[:xdigit:]]{2}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isInternationalPhoneNr(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\\d{1,14}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isJson(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n if (typeof control.value === 'object') { return null; }\r\n if (typeof control.value !== 'string') {\r\n return { 'isNotJson': true };\r\n }\r\n try {\r\n const j = JSON.parse(control.value);\r\n } catch (ex) {\r\n return { 'invalidJson': true };\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of gloww\r\n */\r\n\r\nexport * from './lib/Services/gloww.service';\r\nexport * from './lib/Services/version-check.service';\r\nexport * from './lib/Services/dialog.service';\r\nexport * from './lib/Services/nav.service';\r\nexport * from './lib/gloww.module';\nexport * from './lib/Models/nav-item';\r\nexport * from './lib/Pipes/safe-html.pipe';\nexport * from './lib/Pipes/secure.pipe';\nexport * from './lib/Pipes/html-format.pipe';\nexport * from './lib/Directives/callback.directive';\nexport * from './lib/Directives/file-sink.directive';\nexport * from './lib/Directives/route.directive';\nexport * from './lib/Components/upload-doc/upload-doc.component';\nexport * from './lib/Components/upload-file/upload-file.component';\nexport * from './lib/Components/display-objects/display-objects.component';\nexport * from './lib/Components/confirmation/confirmation.component';\nexport * from './lib/Components/prompt/prompt.component';\nexport * from './lib/Components/secure-img/secure-img.component';\nexport * from './lib/Components/secure-a/secure-a.component';\nexport * from './lib/Components/header/header.component';\nexport * from './lib/Components/result-table/result-table.component';\nexport * from './lib/Components/search-form/search-form.component';\nexport * from './lib/Components/filter-form/filter-form.component';\nexport * from './lib/Components/dummy/dummy.component'\nexport * from './lib/Components/datetime/datetime.component'\nexport * from './lib/Components/select/select.component'\nexport * from './lib/Components/auto-complete/auto-complete.component'\nexport * from './lib/Components/menu-list-item/menu-list-item.component';\nexport * from './lib/Components/code-editor/code-editor.component';\nexport * from './lib/Components/html-editor/html-editor.component';\nexport * from './lib/Components/folders/file-edit/file-edit.component';\nexport * from './lib/Components/folders/folders/folders.component';\nexport * from './lib/Components/download-progress/download-progress.component';\nexport * from './lib/Guards/has-unsaved-data.guard'\nexport * from './lib/Guards/ihas-unsaved-data'\n\nexport * from './lib/gloww-security/Components/login/login.component';\nexport * from './lib/gloww-security/Components/change-password-dlg/change-password-dlg.component';\nexport * from './lib/gloww-security/Components/user-menu/user-menu.component';\nexport * from './lib/gloww-security/Components/social-network/social-network.component';\nexport * from './lib/gloww-security/Components/social-network-dlg/social-network-dlg.component';\nexport * from './lib/gloww-security/Services/gloww-security.service';\nexport * from './lib/gloww-security/gloww-security.module';\nexport * from './lib/gloww-security/Services/authentication-service-config';\nexport * from './lib/Services/folder.service';\nexport * from './lib/Services/folder-service-config';\nexport * from './lib/Helpers/gloww-validators';\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i2.AuthenticationServiceConfig","i4.AuthenticationService","i5","delay","delayOperator","i1.NavService","i1.SnippetsService","i2.GlowwService","i3","i1.AuthenticationService","i3.AuthenticationService","i4.AuthenticationServiceConfig","i2.AuthenticationService","i3.AuthenticationServiceConfig","i3.VoiceRecognitionService","i4","CodeEditorComponent_1","i1.FolderService"],"mappings":"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"}