working trash screen
This commit is contained in:
parent
8f22539cfe
commit
e1bfef2562
@ -25,19 +25,12 @@
|
|||||||
</span>
|
</span>
|
||||||
|
|
||||||
<redaction-circle-button
|
<redaction-circle-button
|
||||||
|
(action)="bulkDelete()"
|
||||||
*ngIf="areSomeEntitiesSelected"
|
*ngIf="areSomeEntitiesSelected"
|
||||||
icon="red:trash"
|
icon="red:trash"
|
||||||
[tooltip]="'trash.bulk.delete' | translate"
|
[tooltip]="'trash.bulk.delete' | translate"
|
||||||
type="dark-bg"
|
type="dark-bg"
|
||||||
></redaction-circle-button>
|
></redaction-circle-button>
|
||||||
|
|
||||||
<!-- <div class="actions flex-1">-->
|
|
||||||
<!-- <redaction-input-with-action-->
|
|
||||||
<!-- [form]="searchForm"-->
|
|
||||||
<!-- [placeholder]="'trash.search' | translate"-->
|
|
||||||
<!-- type="search"-->
|
|
||||||
<!-- ></redaction-input-with-action>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@ -141,7 +134,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="small-label">
|
<div class="small-label">
|
||||||
{{ entity.softDeletedTime | date: 'd MMM. yyyy' }}
|
{{ entity.softDeletedTime | date: 'd MMM. yyyy hh:mm' }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@ -20,14 +20,15 @@ redaction-table-col-name::ng-deep {
|
|||||||
> div:not(.scrollbar-placeholder) {
|
> div:not(.scrollbar-placeholder) {
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
|
|
||||||
.stats-subtitle {
|
|
||||||
margin-top: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-item-title {
|
.table-item-title {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
> div {
|
||||||
|
height: 90px;
|
||||||
|
padding: 0 24px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { Component, Injector, OnInit } from '@angular/core';
|
import { ChangeDetectionStrategy, Component, Injector, OnInit } from '@angular/core';
|
||||||
import { AppStateService } from '@state/app-state.service';
|
import { AppStateService } from '@state/app-state.service';
|
||||||
import { PermissionsService } from '@services/permissions.service';
|
import { PermissionsService } from '@services/permissions.service';
|
||||||
import { Dossier, DossierTemplateModel } from '@redaction/red-ui-http';
|
import { Dossier, DossierTemplateModel } from '@redaction/red-ui-http';
|
||||||
@ -15,6 +15,7 @@ import { DossiersService } from '../../../dossier/services/dossiers.service';
|
|||||||
@Component({
|
@Component({
|
||||||
templateUrl: './trash-screen.component.html',
|
templateUrl: './trash-screen.component.html',
|
||||||
styleUrls: ['./trash-screen.component.scss'],
|
styleUrls: ['./trash-screen.component.scss'],
|
||||||
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
providers: [FilterService, SearchService, ScreenStateService, SortingService, DossiersService]
|
providers: [FilterService, SearchService, ScreenStateService, SortingService, DossiersService]
|
||||||
})
|
})
|
||||||
export class TrashScreenComponent extends NewBaseListingComponent<Dossier> implements OnInit {
|
export class TrashScreenComponent extends NewBaseListingComponent<Dossier> implements OnInit {
|
||||||
@ -33,7 +34,6 @@ export class TrashScreenComponent extends NewBaseListingComponent<Dossier> imple
|
|||||||
) {
|
) {
|
||||||
super(_injector);
|
super(_injector);
|
||||||
this._sortingService.setScreenName(ScreenNames.DOSSIER_LISTING);
|
this._sortingService.setScreenName(ScreenNames.DOSSIER_LISTING);
|
||||||
this._searchService.setSearchKey('dossierName');
|
|
||||||
this._screenStateService.setIdKey('dossierId');
|
this._screenStateService.setIdKey('dossierId');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,6 +66,15 @@ export class TrashScreenComponent extends NewBaseListingComponent<Dossier> imple
|
|||||||
this._loadingService.loadWhile(this._hardDelete(dossierId));
|
this._loadingService.loadWhile(this._hardDelete(dossierId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async bulkDelete() {
|
||||||
|
this._loadingService.start();
|
||||||
|
|
||||||
|
const dossierIds = this._screenStateService.selectedEntitiesIds;
|
||||||
|
for (const dossierId of dossierIds) await this._hardDelete(dossierId);
|
||||||
|
|
||||||
|
this._loadingService.stop();
|
||||||
|
}
|
||||||
|
|
||||||
trackById(index: number, dossier: Dossier): string {
|
trackById(index: number, dossier: Dossier): string {
|
||||||
return dossier.dossierId;
|
return dossier.dossierId;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
<div *ngIf="pageLabel" class="breadcrumb">{{ pageLabel }}</div>
|
<div *ngIf="pageLabel" class="breadcrumb">{{ pageLabel }}</div>
|
||||||
|
|
||||||
<div class="filters" *ngIf="filters$ | async as filters">
|
<div class="filters" *ngIf="filters$ | async as filters">
|
||||||
<div translate="filters.filter-by"></div>
|
<div translate="filters.filter-by" *ngIf="filters.length"></div>
|
||||||
|
|
||||||
<ng-container *ngFor="let config of filters; trackBy: trackByLabel">
|
<ng-container *ngFor="let config of filters; trackBy: trackByLabel">
|
||||||
<redaction-popup-filter
|
<redaction-popup-filter
|
||||||
@ -16,6 +16,7 @@
|
|||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<redaction-input-with-action
|
<redaction-input-with-action
|
||||||
|
*ngIf="searchService.isSearchNeeded"
|
||||||
[form]="searchService.searchForm"
|
[form]="searchService.searchForm"
|
||||||
[placeholder]="searchPlaceholder"
|
[placeholder]="searchPlaceholder"
|
||||||
type="search"
|
type="search"
|
||||||
@ -39,7 +40,7 @@
|
|||||||
></redaction-icon-button>
|
></redaction-icon-button>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<div class="actions" *ngIf="actionConfigs">
|
<div class="actions" *ngIf="showCloseButton || actionConfigs">
|
||||||
<ng-container *ngFor="let config of actionConfigs; trackBy: trackByLabel">
|
<ng-container *ngFor="let config of actionConfigs; trackBy: trackByLabel">
|
||||||
<redaction-circle-button
|
<redaction-circle-button
|
||||||
(action)="config.action($event)"
|
(action)="config.action($event)"
|
||||||
|
|||||||
@ -26,11 +26,18 @@ export class SearchService<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
executeSearchImmediately(): void {
|
executeSearchImmediately(): void {
|
||||||
const displayed = (
|
const displayed =
|
||||||
this._screenStateService.filteredEntities || this._screenStateService.entities
|
this._screenStateService.filteredEntities || this._screenStateService.entities;
|
||||||
).filter(entity => this._searchField(entity).toLowerCase().includes(this._searchValue));
|
|
||||||
|
|
||||||
this._screenStateService.setDisplayedEntities(displayed);
|
if (!this._searchKey) {
|
||||||
|
return this._screenStateService.setDisplayedEntities(displayed);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._screenStateService.setDisplayedEntities(
|
||||||
|
displayed.filter(entity =>
|
||||||
|
this._searchField(entity).toLowerCase().includes(this._searchValue)
|
||||||
|
)
|
||||||
|
);
|
||||||
this._screenStateService.updateSelection();
|
this._screenStateService.updateSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,6 +45,10 @@ export class SearchService<T> {
|
|||||||
this._searchKey = value;
|
this._searchKey = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get isSearchNeeded(): boolean {
|
||||||
|
return !!this._searchKey;
|
||||||
|
}
|
||||||
|
|
||||||
get searchValue(): string {
|
get searchValue(): string {
|
||||||
return this.searchForm.get('query').value;
|
return this.searchForm.get('query').value;
|
||||||
}
|
}
|
||||||
@ -46,13 +57,7 @@ export class SearchService<T> {
|
|||||||
this.searchForm.reset({ query: '' });
|
this.searchForm.reset({ query: '' });
|
||||||
}
|
}
|
||||||
|
|
||||||
private get _getSearchKey(): string {
|
|
||||||
if (!this._searchKey) throw new Error('Not implemented');
|
|
||||||
|
|
||||||
return this._searchKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected _searchField(entity: T): string {
|
protected _searchField(entity: T): string {
|
||||||
return entity[this._getSearchKey];
|
return entity[this._searchKey];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user