{"version":3,"file":"502.cafe2138b3453a6d.js","mappings":"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","names":["i0","$event","_r4","ctx_r3","changeSelection","ctx_r5","uploadHandler","ctx_r6","deleteImage","ctx_r0","form","t_r1","imageTypeList","_c3","_c2","_c1","routes","path","component","ImageUploadComponent","constructor","store","router","adminService","confirmationService","notificationService","translocoService","this","destroy$","Subject","screen","group","CONSTANTS","SCREEN_GROUP","route","url","translate","key","params","lang","ngOnInit","dispatch","AdminActions","selectTranslation","pipe","takeUntil","subscribe","initializeStaticDropdownLists","FormGroup","type","FormControl","imageDeleted$","imageUploaded$","fileUpload","clear","ngOnDestroy","next","unsubscribe","ngAfterViewInit","get","value","currentImageWrapper","document","querySelector","currentImage","currentImageDelete","style","opacity","src","getImage","take","response","status","reader","FileReader","readAsDataURL","body","addEventListener","result","toString","event","file","slice","call","files","readerEvent","includes","target","readyState","DONE","image","Image","formData","FormData","append","name","error","title","message","sticky","column1","column2","confirm","icon","acceptLabel","rejectLabel","defaultFocus","accept","imageType","acceptButtonStyleClass","rejectButtonStyleClass","static","t","i1","i2","i3","i4","i5","core","Xpm","selectors","viewQuery","rf","ctx","ImageUploadComponent_ng_container_0_Template","data","breadcrumb","requiredPermissions","PERMISSIONS","canActivate","AuthGuard","PermissionGuard","runGuardsAndResolvers","ImageUploadRoutingModule","oAB","cJS","RouterModule","forChild","ImageUploadModule","CommonModule","SharedModule","ComponentsModule"],"sourceRoot":"webpack:///","sources":["./client/app/admin/image-upload/image-upload.component.html","./client/app/admin/image-upload/image-upload-routing.module.ts","./client/app/admin/image-upload/image-upload.component.ts","./client/app/admin/image-upload/image-upload.module.ts"],"sourcesContent":["\n \n \n
\n \n \n
\n\n
\n\n
\n
{{ t('admin.image_upload.current_image.label') }}:
\n
![]()
\n
\n\n
\n
\n \n\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { PERMISSIONS } from '@auth/permissions';\nimport { AuthGuard, PermissionGuard } from '@auth/services';\n\nimport { ImageUploadComponent } from './image-upload.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: ImageUploadComponent,\n data: {\n breadcrumb: null,\n requiredPermissions: [PERMISSIONS.WSADMIN],\n },\n canActivate: [AuthGuard, PermissionGuard],\n runGuardsAndResolvers: 'always',\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ImageUploadRoutingModule {}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\n\nimport { Store } from '@ngrx/store';\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { TranslocoService } from '@ngneat/transloco';\n\nimport { FileUpload } from 'primeng/fileupload';\n\nimport { Screen } from '@core/interfaces';\nimport { DropDownList } from '@core/interfaces';\nimport { ConfirmationService, NotificationService } from '@core/services';\n\nimport { CONSTANTS } from '@admin/constants';\nimport { AdminService } from '@admin/services';\nimport { AdminActions } from '@admin/state';\n\n@Component({\n selector: 'z-image-upload',\n templateUrl: './image-upload.component.html',\n styleUrls: ['./image-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageUploadComponent implements OnInit, OnDestroy, AfterViewInit {\n destroy$ = new Subject();\n\n form: FormGroup;\n imageTypeList: DropDownList = [];\n\n screen: Screen = {\n group: CONSTANTS.SCREEN_GROUP,\n route: this.router.url,\n };\n\n translate = (key: string | string[], params?: Record, lang?: string) =>\n this.translocoService.translate(key, params, lang);\n\n @ViewChild('fileUpload') fileUpload: FileUpload;\n\n constructor(\n private store: Store,\n private router: Router,\n public adminService: AdminService,\n private confirmationService: ConfirmationService,\n private notificationService: NotificationService,\n private translocoService: TranslocoService\n ) {}\n\n ngOnInit() {\n this.store.dispatch(\n AdminActions.UploadImageInitialize({\n screen: this.screen,\n })\n );\n\n this.translocoService\n .selectTranslation()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.initializeStaticDropdownLists();\n });\n\n this.form = new FormGroup({\n type: new FormControl('login-background-light'),\n });\n\n this.adminService.imageDeleted$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.changeSelection();\n });\n\n this.adminService.imageUploaded$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.changeSelection();\n this.fileUpload.clear();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.unsubscribe();\n }\n\n ngAfterViewInit() {\n this.changeSelection('login-background-light');\n }\n\n changeSelection(type?: string) {\n type = type ?? this.form.get('type').value;\n\n const currentImageWrapper: HTMLElement = document.querySelector('.current-image');\n const currentImage: HTMLImageElement = document.querySelector('.current-image > img');\n const currentImageDelete: HTMLElement = document.querySelector('.current-image-delete');\n\n if (!type || type === '') {\n currentImageWrapper.style.opacity = '0';\n currentImage.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D'; // blank 1x1 image\n currentImageDelete.style.opacity = '0';\n return;\n }\n\n this.adminService\n .getImage(type)\n .pipe(take(1))\n .subscribe((response) => {\n if (response.status === 204 || response.status >= 400) {\n currentImageWrapper.style.opacity = '0';\n currentImage.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D'; // blank 1x1 image\n currentImageDelete.style.opacity = '0';\n return;\n }\n\n const reader = new FileReader();\n reader.readAsDataURL(response.body);\n\n reader.addEventListener('loadend', () => {\n currentImage.src = reader.result.toString();\n currentImageWrapper.style.opacity = '1.0';\n currentImageDelete.style.opacity = '1.0';\n });\n });\n }\n\n uploadHandler(event: any) {\n for (const file of [].slice.call(event.files)) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.addEventListener('load', (readerEvent) => {\n if (!file.type.includes('image')) {\n this.notificationService.error({\n title: 'Error',\n message: 'Invalid file type',\n sticky: true,\n });\n\n return;\n }\n\n if ((readerEvent.target as FileReader).readyState === FileReader.DONE) {\n const image = new Image();\n\n image.src = readerEvent?.target?.result?.toString();\n\n image.addEventListener('load', () => {\n const formData = new FormData();\n\n formData.append('file', file, file.name);\n formData.append('type', this.form.get('type').value);\n\n this.store.dispatch(AdminActions.UploadImageRequest({ formData }));\n });\n }\n });\n }\n }\n\n initializeStaticDropdownLists() {\n this.imageTypeList = [\n { column1: 'login-background-light', column2: this.translate('admin.image_upload.image_type.login_background_light') },\n { column1: 'login-background-dark', column2: this.translate('admin.image_upload.image_type.login_background_dark') },\n { column1: 'home-background-light', column2: this.translate('admin.image_upload.image_type.home_background_light') },\n { column1: 'home-background-dark', column2: this.translate('admin.image_upload.image_type.home_background_dark') },\n ];\n }\n\n deleteImage() {\n this.confirmationService.confirm({\n title: this.translate('admin.image_upload.delete_image.header'),\n message: this.translate('admin.image_upload.delete_image.message'),\n icon: 'fad fa-triangle-exclamation',\n acceptLabel: this.translate('admin.image_upload.delete_image.accept_button'),\n rejectLabel: this.translate('admin.image_upload.delete_image.reject_button'),\n defaultFocus: 'reject',\n accept: () => {\n this.store.dispatch(AdminActions.DeleteImageRequest({ imageType: this.form.get('type').value }));\n this.changeSelection();\n },\n acceptButtonStyleClass: 'p-button-warning',\n rejectButtonStyleClass: 'p-button-secondary',\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ComponentsModule } from '@core/components/components.module';\nimport { SharedModule } from '@core/shared.module';\n\nimport { ImageUploadComponent } from './image-upload.component';\n\nimport { ImageUploadRoutingModule } from './image-upload-routing.module';\n\n@NgModule({\n declarations: [ImageUploadComponent],\n imports: [CommonModule, SharedModule, ImageUploadRoutingModule, ComponentsModule],\n})\nexport class ImageUploadModule {}\n"],"x_google_ignoreList":[]}