Merge branch 'feature/BETERAN-BACKEND-APP-BROWSER-init' of https://gitlab.loafle.net/bet/beteran-backend-app-browser into feature/BETERAN-BACKEND-APP-BROWSER-init
This commit is contained in:
		
						commit
						ed64495059
					
				@ -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