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'
|
'app/modules/admin/settings/indexing/indexing.module'
|
||||||
).then((m: any) => m.IndexingModule),
|
).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',
|
icon: 'heroicons_outline:cog',
|
||||||
link: '/settings/indexing',
|
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 { GameSettingMockApi } from './apps/settings/game/api';
|
||||||
import { LadderSettingMockApi } from './apps/settings/ladder/api';
|
import { LadderSettingMockApi } from './apps/settings/ladder/api';
|
||||||
import { IndexingSettingMockApi } from './apps/settings/indexing/api';
|
import { IndexingSettingMockApi } from './apps/settings/indexing/api';
|
||||||
|
import { DomainSettingMockApi } from './apps/settings/domain/api';
|
||||||
import { ReportDailyMockApi } from './apps/report/daily/api';
|
import { ReportDailyMockApi } from './apps/report/daily/api';
|
||||||
import { ReportMonthlyMockApi } from './apps/report/monthly/api';
|
import { ReportMonthlyMockApi } from './apps/report/monthly/api';
|
||||||
import { ReportDailyPartnerMockApi } from './apps/report/daily-partner/api';
|
import { ReportDailyPartnerMockApi } from './apps/report/daily-partner/api';
|
||||||
|
@ -122,6 +123,7 @@ export const mockApiServices = [
|
||||||
GameSettingMockApi,
|
GameSettingMockApi,
|
||||||
LadderSettingMockApi,
|
LadderSettingMockApi,
|
||||||
IndexingSettingMockApi,
|
IndexingSettingMockApi,
|
||||||
|
DomainSettingMockApi,
|
||||||
ReportDailyMockApi,
|
ReportDailyMockApi,
|
||||||
ReportMonthlyMockApi,
|
ReportMonthlyMockApi,
|
||||||
ReportDailyPartnerMockApi,
|
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",
|
"Evolution": "Evolution",
|
||||||
"Slot": "Slot",
|
"Slot": "Slot",
|
||||||
"Current User": "Current User",
|
"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",
|
"Daily": "Daily",
|
||||||
"Monthly": "Monthly",
|
"Monthly": "Monthly",
|
||||||
"Daily Partner": "Daily Partner",
|
"Daily Partner": "Daily Partner",
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
"Evo-Setting": "에볼류션/보타 금액설정",
|
"Evo-Setting": "에볼류션/보타 금액설정",
|
||||||
"Branch-Setting": "대본벌 계좌 설정",
|
"Branch-Setting": "대본벌 계좌 설정",
|
||||||
"Indexing-Setting": "서버 인덱싱",
|
"Indexing-Setting": "서버 인덱싱",
|
||||||
|
"Domain-Setting": "도메인 설정",
|
||||||
"Daily": "일일현황",
|
"Daily": "일일현황",
|
||||||
"Monthly": "월 현황",
|
"Monthly": "월 현황",
|
||||||
"report-management": "보고서관리",
|
"report-management": "보고서관리",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user