From 480cbefd74c7ee95ecfdd94e17dfbb7ea202cb23 Mon Sep 17 00:00:00 2001 From: Supichai Pothong Date: Wed, 18 Oct 2023 18:25:42 +0700 Subject: [PATCH] [update] --- src/app/core/base/base-list.ts | 4 +++ .../core/service/common/promotion.service.ts | 2 +- .../container/banner/banner.container.html | 1 + .../container/banner/banner.container.ts | 16 +++++++-- .../banner/presenter/list/list.component.html | 34 +++++++++++-------- .../banner/presenter/list/list.component.ts | 28 ++++++++++++--- .../promotion/promotion.container.html | 1 + .../promotion/promotion.container.ts | 11 ++++-- .../presenter/list/list.component.html | 34 +++++++++++-------- .../presenter/list/list.component.ts | 16 +++++++++ src/styles/app.scss | 1 + 11 files changed, 110 insertions(+), 38 deletions(-) diff --git a/src/app/core/base/base-list.ts b/src/app/core/base/base-list.ts index f8aaaaf..000d179 100644 --- a/src/app/core/base/base-list.ts +++ b/src/app/core/base/base-list.ts @@ -74,4 +74,8 @@ export class BaseList { ) } + getIndex(i){ + return this.paginator.pageIndex * this.paginator.pageSize + i + 1 + } + } diff --git a/src/app/core/service/common/promotion.service.ts b/src/app/core/service/common/promotion.service.ts index b3792b2..add8f49 100644 --- a/src/app/core/service/common/promotion.service.ts +++ b/src/app/core/service/common/promotion.service.ts @@ -10,7 +10,7 @@ export class PromotionService extends BaseService{ constructor( public http: HttpClient ) { - super('/common/promotionwwwwwwwwwwww', http) + super('/common/promotion', http) } } diff --git a/src/app/pages/setting/banner/container/banner/banner.container.html b/src/app/pages/setting/banner/container/banner/banner.container.html index 74d1dd6..5272dd5 100644 --- a/src/app/pages/setting/banner/container/banner/banner.container.html +++ b/src/app/pages/setting/banner/container/banner/banner.container.html @@ -2,5 +2,6 @@ (add)="add()" (edit)="edit($event)" (delete)="delete($event)" + (search)="search($event)" [bannerList]="banner$ | async"> \ No newline at end of file diff --git a/src/app/pages/setting/banner/container/banner/banner.container.ts b/src/app/pages/setting/banner/container/banner/banner.container.ts index f18f36b..cfeb171 100644 --- a/src/app/pages/setting/banner/container/banner/banner.container.ts +++ b/src/app/pages/setting/banner/container/banner/banner.container.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { ChangeDetectorRef, Component } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { Observable, catchError, filter, of, switchMap, tap, throwError } from 'rxjs'; import { CDialogConfig, IDialogConfig } from 'src/app/@common/interface/Dialog'; @@ -18,7 +18,8 @@ export class BannerContainer { constructor( private bannerService: BannerService, private dialog: MatDialog, - private appService: AppService + private appService: AppService, + private cdr: ChangeDetectorRef ) { this.banner$ = this.bannerService.getAll(); } @@ -30,6 +31,7 @@ export class BannerContainer { switchMap((res) => { if(res === 'success'){ return this.banner$ = this.bannerService.getAll().pipe( + tap(() => this.cdr.detectChanges()), catchError((err) => { this.appService.message(EAction.ERROR, EText.ERROR); return throwError(() => err) @@ -51,7 +53,8 @@ export class BannerContainer { catchError((err) => { this.appService.message(EAction.ERROR, EText.ERROR); return throwError(() => err) - }) + }), + tap(() => this.cdr.detectChanges()) ) } }) @@ -59,6 +62,12 @@ export class BannerContainer { return edit$.subscribe(); } + search(value){ + return this.banner$ = this.bannerService.queryString(`name=${value}`).pipe( + tap(() => this.cdr.detectChanges()) + ) + } + delete(uid){ const delete$ = this.appService.confirm(EAction.DELETE).pipe( filter((res) => res.isConfirmed), @@ -66,6 +75,7 @@ export class BannerContainer { return this.bannerService.deleteData(uid).pipe( tap(() => this.appService.message(EAction.SUCCESS, EText.DELETE)), tap(() => this.banner$ = this.bannerService.getAll()), + tap(() => this.cdr.detectChanges()), catchError((err) => { this.appService.message(EAction.SUCCESS, EText.DELETE); return throwError(() => err) diff --git a/src/app/pages/setting/banner/presenter/list/list.component.html b/src/app/pages/setting/banner/presenter/list/list.component.html index f06adf7..bc8ba87 100644 --- a/src/app/pages/setting/banner/presenter/list/list.component.html +++ b/src/app/pages/setting/banner/presenter/list/list.component.html @@ -5,7 +5,7 @@
- +
@@ -22,10 +22,14 @@ - + + + - - + + @@ -42,7 +46,7 @@ - + @@ -52,23 +56,26 @@ - + - - + + - - +
ไม่มีข้อมูล
ลำดับ{{getIndex(i)}}ลำดับ + {{getIndex(i)}} + คำอธิบาย{{item.description}}{{item.description? item.description : '-'}} วันสิ้นสุด{{item.weight | date : 'dd/MM/YYYY'}}{{item.end_date | date : 'dd/MM/YYYY'}} สถานะ{{item.is_use === true? 'Open' : 'Close'}}สถานะ +
Open
+
Close
+
เครื่องมือ + เครื่องมือ
-
- +
+
-
+
@@ -77,7 +84,6 @@
- \ No newline at end of file diff --git a/src/app/pages/setting/banner/presenter/list/list.component.ts b/src/app/pages/setting/banner/presenter/list/list.component.ts index 9ebd16f..efe9d53 100644 --- a/src/app/pages/setting/banner/presenter/list/list.component.ts +++ b/src/app/pages/setting/banner/presenter/list/list.component.ts @@ -2,7 +2,7 @@ import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core import { DialogComponent } from '../dialog/dialog.component'; import { BaseList } from 'src/app/core/base/base-list'; import { EAction } from 'src/app/@config/app'; -import { filter, lastValueFrom, switchMap, tap } from 'rxjs'; +import { Subject, debounceTime, distinctUntilChanged, filter, lastValueFrom, switchMap, tap } from 'rxjs'; import { MatDialog } from '@angular/material/dialog'; @Component({ @@ -11,22 +11,42 @@ import { MatDialog } from '@angular/material/dialog'; styleUrls: ['./list.component.scss'] }) export class ListComponent extends BaseList implements OnChanges { + name: string; + filterKeyword: Subject = new Subject(); @Input() bannerList: any = []; @Output() add = new EventEmitter(); @Output() edit = new EventEmitter(); + @Output() delete = new EventEmitter(); + @Output() search = new EventEmitter(); constructor() { super() + this.filterKeyword.pipe( + debounceTime(1000), + distinctUntilChanged() + ).subscribe(() => this.onSearch()) } - ngOnChanges(){ - this.bannerList = this.updateMatTable(this.bannerList? this.bannerList : []) + ngOnChanges() { + this.bannerList = this.updateMatTable(this.bannerList ? this.bannerList : []) + } + + onSearch(){ + this.search.emit(this.name) } onAdd() { this.add.emit() } - onEdit(uid){ + onEdit(uid) { this.edit.emit(uid) } + + onDelete(uid) { + this.delete.emit(uid) + } + + onFilter($event) { + this.filterKeyword.next($event); + } } diff --git a/src/app/pages/setting/promotion/container/promotion/promotion.container.html b/src/app/pages/setting/promotion/container/promotion/promotion.container.html index 305fd32..0a77548 100644 --- a/src/app/pages/setting/promotion/container/promotion/promotion.container.html +++ b/src/app/pages/setting/promotion/container/promotion/promotion.container.html @@ -2,5 +2,6 @@ (add)="add()" (edit)="edit($event)" (delete)="delete($event)" + (search)="search($event)" [promotionList]="promotion$ | async"> \ No newline at end of file diff --git a/src/app/pages/setting/promotion/container/promotion/promotion.container.ts b/src/app/pages/setting/promotion/container/promotion/promotion.container.ts index af833cc..c899d4c 100644 --- a/src/app/pages/setting/promotion/container/promotion/promotion.container.ts +++ b/src/app/pages/setting/promotion/container/promotion/promotion.container.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { ChangeDetectorRef, Component } from '@angular/core'; import { Observable, catchError, filter, switchMap, tap, throwError } from 'rxjs'; import { IDialogConfig, CDialogConfig } from 'src/app/@common/interface/Dialog'; import { EAction, EText } from 'src/app/@config/app'; @@ -18,7 +18,8 @@ export class PromotionContainer { constructor( private promotionSerivce: PromotionService, private dialog: MatDialog, - private appService: AppService + private appService: AppService, + private cdr: ChangeDetectorRef ) { this.promotion$ = this.promotionSerivce.getAll(); } @@ -59,6 +60,12 @@ export class PromotionContainer { return edit$.subscribe() } + search(value){ + return this.promotion$ = this.promotionSerivce.queryString(`name=${value}`).pipe( + tap(() => this.cdr.detectChanges()) + ) + } + delete(uid){ const delete$ = this.appService.confirm(EAction.DELETE).pipe( filter((res) => res.isConfirmed), diff --git a/src/app/pages/setting/promotion/presenter/list/list.component.html b/src/app/pages/setting/promotion/presenter/list/list.component.html index bfe4aed..7315a3c 100644 --- a/src/app/pages/setting/promotion/presenter/list/list.component.html +++ b/src/app/pages/setting/promotion/presenter/list/list.component.html @@ -5,7 +5,7 @@
- +
@@ -22,10 +22,14 @@ - + + + - - + + @@ -42,7 +46,7 @@ - + @@ -52,23 +56,26 @@ - + - - + + - - +
ไม่มีข้อมูล
ลำดับ{{getIndex(i)}}ลำดับ + {{getIndex(i)}} + คำอธิบาย{{item.description}}{{item.description? item.description : '-'}} วันสิ้นสุด{{item.weight | date : 'dd/MM/YYYY'}}{{item.end_date | date : 'dd/MM/YYYY'}} สถานะ{{item.is_use === true? 'Open' : 'Close'}}สถานะ +
Open
+
Close
+
เครื่องมือ + เครื่องมือ
-
- +
+
-
+
@@ -77,7 +84,6 @@
- \ No newline at end of file diff --git a/src/app/pages/setting/promotion/presenter/list/list.component.ts b/src/app/pages/setting/promotion/presenter/list/list.component.ts index 5f0c6bf..fa88a6b 100644 --- a/src/app/pages/setting/promotion/presenter/list/list.component.ts +++ b/src/app/pages/setting/promotion/presenter/list/list.component.ts @@ -1,4 +1,5 @@ import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core'; +import { Subject, debounceTime, distinctUntilChanged } from 'rxjs'; import { BaseList } from 'src/app/core/base/base-list'; @Component({ @@ -7,18 +8,29 @@ import { BaseList } from 'src/app/core/base/base-list'; styleUrls: ['./list.component.scss'] }) export class ListComponent extends BaseList implements OnChanges { + name: string; + filterKeyword: Subject = new Subject(); @Input() promotionList: any = []; @Output() add = new EventEmitter(); @Output() edit = new EventEmitter(); @Output() delete = new EventEmitter(); + @Output() search = new EventEmitter(); constructor() { super() + this.filterKeyword.pipe( + debounceTime(1000), + distinctUntilChanged() + ).subscribe(() => this.onSearch()) } ngOnChanges(){ this.promotionList = this.updateMatTable(this.promotionList? this.promotionList : []) } + onSearch(){ + this.search.emit(this.name) + } + onAdd(){ this.add.emit() } @@ -30,4 +42,8 @@ export class ListComponent extends BaseList implements OnChanges { onDelete(uid){ this.delete.emit(uid) } + + onFilter($event) { + this.filterKeyword.next($event); + } } diff --git a/src/styles/app.scss b/src/styles/app.scss index 5d0c5e5..92d130f 100644 --- a/src/styles/app.scss +++ b/src/styles/app.scss @@ -236,6 +236,7 @@ mat-label{ min-height: 100px; text-align: center; padding-top: 40px; + font-family: $fontFamily; } .status {