도메인 설정 page 추가
This commit is contained in:
		
							parent
							
								
									6fab831ef5
								
							
						
					
					
						commit
						8f57de6952
					
				| @ -354,6 +354,13 @@ export const appRoutes: Route[] = [ | ||||
|                 'app/modules/admin/settings/indexing/indexing.module' | ||||
|               ).then((m: any) => m.IndexingModule), | ||||
|           }, | ||||
|           { | ||||
|             path: 'domain', | ||||
|             loadChildren: () => | ||||
|               import('app/modules/admin/settings/domain/domain.module').then( | ||||
|                 (m: any) => m.DomainModule | ||||
|               ), | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       { | ||||
|  | ||||
							
								
								
									
										73
									
								
								src/app/mock-api/apps/settings/domain/api.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								src/app/mock-api/apps/settings/domain/api.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,73 @@ | ||||
| import { Injectable } from '@angular/core'; | ||||
| import { assign, cloneDeep } from 'lodash-es'; | ||||
| import { FuseMockApiService, FuseMockApiUtils } from '@fuse/lib/mock-api'; | ||||
| import { domainSetting as domainSettingData } from './data'; | ||||
| 
 | ||||
| @Injectable({ | ||||
|   providedIn: 'root', | ||||
| }) | ||||
| export class DomainSettingMockApi { | ||||
|   private _domainSetting: any = domainSettingData; | ||||
| 
 | ||||
|   /** | ||||
|    * Constructor | ||||
|    */ | ||||
|   constructor(private _fuseMockApiService: FuseMockApiService) { | ||||
|     // Register Mock API handlers
 | ||||
|     this.registerHandlers(); | ||||
|   } | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Public methods
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * Register Mock API handlers | ||||
|    */ | ||||
|   registerHandlers(): void { | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     // @ BasicSetting - GET
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     this._fuseMockApiService | ||||
|       .onGet('api/apps/settings/domain', 300) | ||||
|       .reply(({ request }) => { | ||||
|         // Clone the deposits
 | ||||
|         let domainSetting: any | null = cloneDeep(this._domainSetting); | ||||
| 
 | ||||
|         // Return the response
 | ||||
|         return [ | ||||
|           200, | ||||
|           { | ||||
|             domainSetting, | ||||
|           }, | ||||
|         ]; | ||||
|       }); | ||||
| 
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     // @ BasicSetting - PATCH
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     this._fuseMockApiService | ||||
|       .onPatch('api/apps/settings/domain') | ||||
|       .reply(({ request }) => { | ||||
|         // Get the id and deposit
 | ||||
|         const domainSetting = cloneDeep(request.body.domainSetting); | ||||
| 
 | ||||
|         // Prepare the updated basicSetting
 | ||||
|         let updatedBasicSetting = null; | ||||
| 
 | ||||
|         // Find the deposit and update it
 | ||||
|         // this._basicSetting.forEach((item, index, bs) => {
 | ||||
|         //   if (item.id === id) {
 | ||||
|         //     // Update the deposit
 | ||||
|         //     basicSetting[index] = assign({}, basicSetting[index], deposit);
 | ||||
| 
 | ||||
|         //     // Store the updated deposit
 | ||||
|         //     updatedDeposit = deposits[index];
 | ||||
|         //   }
 | ||||
|         // });
 | ||||
| 
 | ||||
|         // Return the response
 | ||||
|         return [200, domainSetting]; | ||||
|       }); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										52
									
								
								src/app/mock-api/apps/settings/domain/data.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								src/app/mock-api/apps/settings/domain/data.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | ||||
| /* eslint-disable */ | ||||
| 
 | ||||
| export const domainSetting = { | ||||
|   domain: [ | ||||
|     { | ||||
|       idx: '4', | ||||
|       domain: 'nsky-8989.com', | ||||
|       designFolder: 'NEW-SKY', | ||||
|       siteName: '뉴스카이', | ||||
|       expiryDate: '2023-06-29', | ||||
|       periodOfUse: '328일', | ||||
|       memo: '', | ||||
|     }, | ||||
|     { | ||||
|       idx: '3', | ||||
|       domain: 'nsky-3040', | ||||
|       designFolder: 'NEW-SKY', | ||||
|       siteName: '뉴스카이', | ||||
|       expiryDate: '2023-05-05', | ||||
|       periodOfUse: '273일', | ||||
|       memo: '미사용', | ||||
|     }, | ||||
|     { | ||||
|       idx: '2', | ||||
|       domain: 'nsky-5858.com', | ||||
|       designFolder: 'NEW-SKY', | ||||
|       siteName: '뉴스카이', | ||||
|       expiryDate: '2023-05-05', | ||||
|       periodOfUse: '273일', | ||||
|       memo: '조치원라인', | ||||
|     }, | ||||
|     { | ||||
|       idx: '1', | ||||
|       domain: 'nsky-9988.com', | ||||
|       designFolder: 'NEW-SKY', | ||||
|       siteName: '뉴스카이', | ||||
|       expiryDate: '2023-05-04', | ||||
|       periodOfUse: '272일', | ||||
|       memo: '', | ||||
|     }, | ||||
|   ], | ||||
|   bota: [ | ||||
|     { | ||||
|       domain: '.', | ||||
|       designFolder: '.', | ||||
|       siteName: '.', | ||||
|       expiryDate: '.', | ||||
|       periodOfUse: '.', | ||||
|       memo: '.', | ||||
|     }, | ||||
|   ], | ||||
| }; | ||||
| @ -453,6 +453,13 @@ export const defaultNavigation: FuseNavigationItem[] = [ | ||||
|         icon: 'heroicons_outline:cog', | ||||
|         link: '/settings/indexing', | ||||
|       }, | ||||
|       { | ||||
|         id: 'settings.domain', | ||||
|         title: 'Domain-Setting', | ||||
|         type: 'basic', | ||||
|         icon: 'heroicons_outline:cog', | ||||
|         link: '/settings/domain', | ||||
|       }, | ||||
|     ], | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| @ -49,6 +49,7 @@ import { EvoSettingMockApi } from './apps/settings/evo/api'; | ||||
| import { GameSettingMockApi } from './apps/settings/game/api'; | ||||
| import { LadderSettingMockApi } from './apps/settings/ladder/api'; | ||||
| import { IndexingSettingMockApi } from './apps/settings/indexing/api'; | ||||
| import { DomainSettingMockApi } from './apps/settings/domain/api'; | ||||
| import { ReportDailyMockApi } from './apps/report/daily/api'; | ||||
| import { ReportMonthlyMockApi } from './apps/report/monthly/api'; | ||||
| import { ReportDailyPartnerMockApi } from './apps/report/daily-partner/api'; | ||||
| @ -122,6 +123,7 @@ export const mockApiServices = [ | ||||
|   GameSettingMockApi, | ||||
|   LadderSettingMockApi, | ||||
|   IndexingSettingMockApi, | ||||
|   DomainSettingMockApi, | ||||
|   ReportDailyMockApi, | ||||
|   ReportMonthlyMockApi, | ||||
|   ReportDailyPartnerMockApi, | ||||
|  | ||||
| @ -0,0 +1,3 @@ | ||||
| import { ListComponent } from './list.component'; | ||||
| 
 | ||||
| export const COMPONENTS = [ListComponent]; | ||||
| @ -0,0 +1,169 @@ | ||||
| <div class="flex flex-col flex-auto min-w-0"> | ||||
|   <div class="flex-auto border-t -mt-px pt-4 sm:pt-6"> | ||||
|     <div class="w-full max-w-screen-xl mx-auto"> | ||||
|       <div class="grid grid-cols-1 sm:grid-cols-6 gap-6 w-full min-w-0"> | ||||
|         <!-- Budget distribution --> | ||||
|         <div | ||||
|           class="sm:col-span-6 flex flex-col flex-auto p-6 bg-card shadow rounded-2xl overflow-hidden" | ||||
|         > | ||||
|           <div class="text-lg font-medium tracking-tight leading-6 truncate"> | ||||
|             도메인 관리 | ||||
|           </div> | ||||
|           <div class="flex flex-col flex-auto mt-2 overflow-x-auto"> | ||||
|             <table | ||||
|               class="min-w-240 overflow-y-visible" | ||||
|               mat-table | ||||
|               [dataSource]="domainSettingDataSource" | ||||
|             > | ||||
|               <!-- Index --> | ||||
|               <ng-container matColumnDef="idx"> | ||||
|                 <th mat-header-cell *matHeaderCellDef>번호</th> | ||||
|                 <td mat-cell *matCellDef="let info"> | ||||
|                   <span class="font-medium text-right"> | ||||
|                     {{ info.idx }} | ||||
|                   </span> | ||||
|                 </td> | ||||
|               </ng-container> | ||||
| 
 | ||||
|               <!-- Domain --> | ||||
|               <ng-container matColumnDef="domain"> | ||||
|                 <th mat-header-cell *matHeaderCellDef>도메인</th> | ||||
|                 <td mat-cell *matCellDef="let info"> | ||||
|                   <span class="font-medium text-right"> | ||||
|                     {{ info.domain }} | ||||
|                   </span> | ||||
|                 </td> | ||||
|               </ng-container> | ||||
| 
 | ||||
|               <!-- Design folder --> | ||||
|               <ng-container matColumnDef="designFolder"> | ||||
|                 <th mat-header-cell *matHeaderCellDef>디자인 폴더</th> | ||||
|                 <td mat-cell *matCellDef="let info"> | ||||
|                   <span class="font-medium text-right"> | ||||
|                     {{ info.designFolder }} | ||||
|                   </span> | ||||
|                 </td> | ||||
|               </ng-container> | ||||
| 
 | ||||
|               <!-- Site name --> | ||||
|               <ng-container matColumnDef="siteName"> | ||||
|                 <th mat-header-cell *matHeaderCellDef>사이트명</th> | ||||
|                 <td mat-cell *matCellDef="let info"> | ||||
|                   <span class="font-medium text-right"> | ||||
|                     {{ info.siteName }} | ||||
|                   </span> | ||||
|                 </td> | ||||
|               </ng-container> | ||||
| 
 | ||||
|               <!-- Expiry date --> | ||||
|               <ng-container matColumnDef="expiryDate"> | ||||
|                 <th mat-header-cell *matHeaderCellDef>만료일</th> | ||||
|                 <td mat-cell *matCellDef="let info"> | ||||
|                   <span class="font-medium text-right"> | ||||
|                     {{ info.expiryDate }} | ||||
|                   </span> | ||||
|                 </td> | ||||
|               </ng-container> | ||||
| 
 | ||||
|               <!-- Period of use --> | ||||
|               <ng-container matColumnDef="periodOfUse"> | ||||
|                 <th mat-header-cell *matHeaderCellDef>남은 기간</th> | ||||
|                 <td mat-cell *matCellDef="let info"> | ||||
|                   <span class="font-medium text-right"> | ||||
|                     {{ info.periodOfUse }} | ||||
|                   </span> | ||||
|                 </td> | ||||
|               </ng-container> | ||||
| 
 | ||||
|               <!-- Memo --> | ||||
|               <ng-container matColumnDef="memo"> | ||||
|                 <th mat-header-cell *matHeaderCellDef>메모</th> | ||||
|                 <td mat-cell *matCellDef="let info"> | ||||
|                   <mat-form-field class=""> | ||||
|                     <input id="memo" matInput value="{{ info.memo }}" /> | ||||
|                   </mat-form-field> | ||||
|                   <button mat-flat-button [color]="'primary'">수정</button> | ||||
|                 </td> | ||||
|               </ng-container> | ||||
| 
 | ||||
|               <!-- Delete button --> | ||||
|               <ng-container matColumnDef="deleteBtn"> | ||||
|                 <th mat-header-cell *matHeaderCellDef>도메인 삭제</th> | ||||
|                 <td mat-cell *matCellDef="let basicSetting"> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     <button mat-flat-button [color]="'primary'"> | ||||
|                       도메인삭제 | ||||
|                     </button> | ||||
|                   </div> | ||||
|                 </td> | ||||
|               </ng-container> | ||||
| 
 | ||||
|               <tr | ||||
|                 mat-header-row | ||||
|                 *matHeaderRowDef="domainSettingTableColumns" | ||||
|               ></tr> | ||||
|               <tr | ||||
|                 mat-row | ||||
|                 *matRowDef="let row; columns: domainSettingTableColumns" | ||||
|               ></tr> | ||||
|             </table> | ||||
|           </div> | ||||
|         </div> | ||||
|         <!-- Budget details --> | ||||
|         <div | ||||
|           class="sm:col-span-6 flex flex-col flex-auto p-6 bg-card shadow rounded-2xl overflow-hidden" | ||||
|         > | ||||
|           <div class="text-lg font-medium tracking-tight leading-6 truncate"> | ||||
|             도메인 등록 | ||||
|           </div> | ||||
|           <div> | ||||
|             <table class="min-w-240 overflow-y-visible"> | ||||
|               <tr> | ||||
|                 <th>도메인(필수)</th> | ||||
|                 <th>디자인 폴더(옵션)</th> | ||||
|                 <th>사이트명(옵션)</th> | ||||
|                 <th>만료일(옵션)</th> | ||||
|                 <th>메모(옵션)</th> | ||||
|                 <th>도메인 등록</th> | ||||
|               </tr> | ||||
|               <tr> | ||||
|                 <td> | ||||
|                   <mat-form-field> | ||||
|                     <input id="domain" matInput | ||||
|                   /></mat-form-field> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                   <mat-form-field> | ||||
|                     <input id="designFolder" matInput | ||||
|                   /></mat-form-field> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                   <mat-form-field> | ||||
|                     <input id="siteName" matInput /> | ||||
|                   </mat-form-field> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                   <mat-form-field> | ||||
|                     <input id="expiryDate" matInput /> | ||||
|                   </mat-form-field> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                   <mat-form-field> | ||||
|                     <input id="memo" matInput /> | ||||
|                   </mat-form-field> | ||||
|                 </td> | ||||
|                 <td> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     <button mat-flat-button [color]="'primary'"> | ||||
|                       도메인등록 | ||||
|                     </button> | ||||
|                   </div> | ||||
|                 </td> | ||||
|               </tr> | ||||
|             </table> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| @ -0,0 +1,164 @@ | ||||
| import { | ||||
|   AfterViewInit, | ||||
|   ChangeDetectionStrategy, | ||||
|   ChangeDetectorRef, | ||||
|   Component, | ||||
|   OnDestroy, | ||||
|   OnInit, | ||||
|   ViewChild, | ||||
|   ViewEncapsulation, | ||||
| } from '@angular/core'; | ||||
| import { | ||||
|   FormBuilder, | ||||
|   FormControl, | ||||
|   FormGroup, | ||||
|   Validators, | ||||
| } from '@angular/forms'; | ||||
| 
 | ||||
| import { MatTableDataSource } from '@angular/material/table'; | ||||
| import { MatPaginator } from '@angular/material/paginator'; | ||||
| import { MatSort } from '@angular/material/sort'; | ||||
| import { | ||||
|   debounceTime, | ||||
|   map, | ||||
|   merge, | ||||
|   Observable, | ||||
|   Subject, | ||||
|   switchMap, | ||||
|   takeUntil, | ||||
| } from 'rxjs'; | ||||
| import { fuseAnimations } from '@fuse/animations'; | ||||
| import { FuseConfirmationService } from '@fuse/services/confirmation'; | ||||
| import { DomainService } from '../services/domain.service'; | ||||
| import { MatSelectChange } from '@angular/material/select'; | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'settings-domain-list', | ||||
|   templateUrl: './list.component.html', | ||||
|   styles: [ | ||||
|     /* language=SCSS */ | ||||
|     ` | ||||
|       .settings-domain-grid { | ||||
|         grid-template-columns: 60px auto 40px; | ||||
| 
 | ||||
|         @screen sm { | ||||
|           grid-template-columns: 60px auto 60px 72px; | ||||
|         } | ||||
| 
 | ||||
|         @screen md { | ||||
|           grid-template-columns: 60px 60px auto 112px 72px; | ||||
|         } | ||||
| 
 | ||||
|         @screen lg { | ||||
|           grid-template-columns: 60px 60px auto 112px 96px 96px 72px; | ||||
|         } | ||||
|       } | ||||
|     `,
 | ||||
|   ], | ||||
|   encapsulation: ViewEncapsulation.None, | ||||
|   changeDetection: ChangeDetectionStrategy.OnPush, | ||||
|   animations: fuseAnimations, | ||||
| }) | ||||
| export class ListComponent implements OnInit, AfterViewInit, OnDestroy { | ||||
|   @ViewChild(MatPaginator) private _paginator!: MatPaginator; | ||||
|   @ViewChild(MatSort) private _sort!: MatSort; | ||||
| 
 | ||||
|   domainSettingTableColumns: string[] = [ | ||||
|     'idx', | ||||
|     'domain', | ||||
|     'designFolder', | ||||
|     'siteName', | ||||
|     'expiryDate', | ||||
|     'periodOfUse', | ||||
|     'memo', | ||||
|     'deleteBtn', | ||||
|   ]; | ||||
| 
 | ||||
|   domainRegistrationTableColumns: string[] = [ | ||||
|     'domain', | ||||
|     'designFolder', | ||||
|     'siteName', | ||||
|     'expiryDate', | ||||
|     'memo', | ||||
|     'updateBtn', | ||||
|   ]; | ||||
| 
 | ||||
|   domainSettingDataSource: MatTableDataSource<any> = new MatTableDataSource(); | ||||
|   domainRegistrationDataSource: MatTableDataSource<any> = | ||||
|     new MatTableDataSource(); | ||||
| 
 | ||||
|   private _unsubscribeAll: Subject<any> = new Subject<any>(); | ||||
| 
 | ||||
|   /** | ||||
|    * Constructor | ||||
|    */ | ||||
|   constructor( | ||||
|     private _changeDetectorRef: ChangeDetectorRef, | ||||
|     private _fuseConfirmationService: FuseConfirmationService, | ||||
|     private _formBuilder: FormBuilder, | ||||
|     private _domainService: DomainService | ||||
|   ) {} | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Lifecycle hooks
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * On init | ||||
|    */ | ||||
|   ngOnInit(): void { | ||||
|     // Get the products
 | ||||
|     this._domainService.domainSetting$ | ||||
|       .pipe(takeUntil(this._unsubscribeAll)) | ||||
|       .subscribe((domainSetting: any | undefined) => { | ||||
|         this.domainSettingDataSource = domainSetting.domain; | ||||
|         this.domainRegistrationDataSource = domainSetting.bota; | ||||
|         // Mark for check
 | ||||
|         this._changeDetectorRef.markForCheck(); | ||||
|       }); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * After view init | ||||
|    */ | ||||
|   ngAfterViewInit(): void {} | ||||
| 
 | ||||
|   /** | ||||
|    * On destroy | ||||
|    */ | ||||
|   ngOnDestroy(): void { | ||||
|     // Unsubscribe from all subscriptions
 | ||||
|     this._unsubscribeAll.next(null); | ||||
|     this._unsubscribeAll.complete(); | ||||
|   } | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Public methods
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Private methods
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * Create product | ||||
|    */ | ||||
|   __createProduct(): void {} | ||||
| 
 | ||||
|   /** | ||||
|    * Toggle product details | ||||
|    * | ||||
|    * @param productId | ||||
|    */ | ||||
|   __toggleDetails(productId: string): void {} | ||||
| 
 | ||||
|   /** | ||||
|    * Track by function for ngFor loops | ||||
|    * | ||||
|    * @param index | ||||
|    * @param item | ||||
|    */ | ||||
|   __trackByFn(index: number, item: any): any { | ||||
|     return item.id || index; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										44
									
								
								src/app/modules/admin/settings/domain/domain.module.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/app/modules/admin/settings/domain/domain.module.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | ||||
| import { NgModule } from '@angular/core'; | ||||
| import { RouterModule } from '@angular/router'; | ||||
| 
 | ||||
| import { MatButtonModule } from '@angular/material/button'; | ||||
| import { MatFormFieldModule } from '@angular/material/form-field'; | ||||
| import { MatIconModule } from '@angular/material/icon'; | ||||
| import { MatInputModule } from '@angular/material/input'; | ||||
| import { MatPaginatorModule } from '@angular/material/paginator'; | ||||
| import { MatProgressBarModule } from '@angular/material/progress-bar'; | ||||
| import { MatRippleModule } from '@angular/material/core'; | ||||
| import { MatSortModule } from '@angular/material/sort'; | ||||
| import { MatSelectModule } from '@angular/material/select'; | ||||
| import { MatTooltipModule } from '@angular/material/tooltip'; | ||||
| import { MatTableModule } from '@angular/material/table'; | ||||
| 
 | ||||
| import { TranslocoModule } from '@ngneat/transloco'; | ||||
| 
 | ||||
| import { SharedModule } from 'app/shared/shared.module'; | ||||
| 
 | ||||
| import { COMPONENTS } from './components'; | ||||
| 
 | ||||
| import { domainRoutes } from './domain.routing'; | ||||
| 
 | ||||
| @NgModule({ | ||||
|   declarations: [COMPONENTS], | ||||
|   imports: [ | ||||
|     TranslocoModule, | ||||
|     SharedModule, | ||||
|     RouterModule.forChild(domainRoutes), | ||||
| 
 | ||||
|     MatButtonModule, | ||||
|     MatFormFieldModule, | ||||
|     MatIconModule, | ||||
|     MatInputModule, | ||||
|     MatPaginatorModule, | ||||
|     MatProgressBarModule, | ||||
|     MatRippleModule, | ||||
|     MatSortModule, | ||||
|     MatSelectModule, | ||||
|     MatTooltipModule, | ||||
|     MatTableModule, | ||||
|   ], | ||||
| }) | ||||
| export class DomainModule {} | ||||
							
								
								
									
										15
									
								
								src/app/modules/admin/settings/domain/domain.routing.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/app/modules/admin/settings/domain/domain.routing.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| import { Route } from '@angular/router'; | ||||
| 
 | ||||
| import { ListComponent } from './components/list.component'; | ||||
| 
 | ||||
| import { DomainResolver } from './resolvers/domain.resolver'; | ||||
| 
 | ||||
| export const domainRoutes: Route[] = [ | ||||
|   { | ||||
|     path: '', | ||||
|     component: ListComponent, | ||||
|     resolve: { | ||||
|       domain: DomainResolver, | ||||
|     }, | ||||
|   }, | ||||
| ]; | ||||
| @ -0,0 +1,39 @@ | ||||
| import { Injectable } from '@angular/core'; | ||||
| import { | ||||
|   ActivatedRouteSnapshot, | ||||
|   Resolve, | ||||
|   Router, | ||||
|   RouterStateSnapshot, | ||||
| } from '@angular/router'; | ||||
| import { catchError, Observable, throwError } from 'rxjs'; | ||||
| 
 | ||||
| import { DomainService } from '../services/domain.service'; | ||||
| 
 | ||||
| @Injectable({ | ||||
|   providedIn: 'root', | ||||
| }) | ||||
| export class DomainResolver implements Resolve<any> { | ||||
|   /** | ||||
|    * Constructor | ||||
|    */ | ||||
|   constructor(private _domainService: DomainService) {} | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Public methods
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * Resolver | ||||
|    * | ||||
|    * @param route | ||||
|    * @param state | ||||
|    */ | ||||
|   resolve( | ||||
|     route: ActivatedRouteSnapshot, | ||||
|     state: RouterStateSnapshot | ||||
|   ): Observable<{ | ||||
|     domainSetting: any; | ||||
|   }> { | ||||
|     return this._domainService.getDomainSetting(); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,58 @@ | ||||
| import { Injectable } from '@angular/core'; | ||||
| import { HttpClient } from '@angular/common/http'; | ||||
| import { | ||||
|   BehaviorSubject, | ||||
|   filter, | ||||
|   map, | ||||
|   Observable, | ||||
|   of, | ||||
|   switchMap, | ||||
|   take, | ||||
|   tap, | ||||
|   throwError, | ||||
| } from 'rxjs'; | ||||
| 
 | ||||
| @Injectable({ | ||||
|   providedIn: 'root', | ||||
| }) | ||||
| export class DomainService { | ||||
|   // Private
 | ||||
|   private __domainSetting = new BehaviorSubject<any | undefined>(undefined); | ||||
| 
 | ||||
|   /** | ||||
|    * Constructor | ||||
|    */ | ||||
|   constructor(private _httpClient: HttpClient) {} | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Accessors
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * Getter for game | ||||
|    */ | ||||
|   get domainSetting$(): Observable<any | undefined> { | ||||
|     return this.__domainSetting.asObservable(); | ||||
|   } | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Public methods
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * Get powerballs | ||||
|    * | ||||
|    * | ||||
|    */ | ||||
|   getDomainSetting(): Observable<{ | ||||
|     domainSetting: any; | ||||
|   }> { | ||||
|     return this._httpClient | ||||
|       .get<{ domainSetting: any }>('api/apps/settings/domain') | ||||
|       .pipe( | ||||
|         tap((response) => { | ||||
|           this.__domainSetting.next(response.domainSetting); | ||||
|         }) | ||||
|       ); | ||||
|   } | ||||
| } | ||||
| @ -28,6 +28,13 @@ | ||||
|   "Evolution": "Evolution", | ||||
|   "Slot": "Slot", | ||||
|   "Current User": "Current User", | ||||
|   "Basic-Setting": "Basic-Setting", | ||||
|   "Ladder-Setting": "Ladder-Setting", | ||||
|   "Game-Setting": "Game-Setting", | ||||
|   "Evo-Setting": "Evo-Setting", | ||||
|   "Branch-Setting": "Branch-Setting", | ||||
|   "Indexing-Setting": "Indexing-Setting", | ||||
|   "Domain-Setting": "Domain-Setting", | ||||
|   "Daily": "Daily", | ||||
|   "Monthly": "Monthly", | ||||
|   "Daily Partner": "Daily Partner", | ||||
|  | ||||
| @ -34,6 +34,7 @@ | ||||
|   "Evo-Setting": "에볼류션/보타 금액설정", | ||||
|   "Branch-Setting": "대본벌 계좌 설정", | ||||
|   "Indexing-Setting": "서버 인덱싱", | ||||
|   "Domain-Setting": "도메인 설정", | ||||
|   "Daily": "일일현황", | ||||
|   "Monthly": "월 현황", | ||||
|   "report-management": "보고서관리", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user