|
|
@@ -1,9 +1,14 @@
|
|
|
import { Component } from '@angular/core';
|
|
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
|
-import { GetFacetList } from 'shared/generated-types';
|
|
|
+import { EMPTY } from 'rxjs';
|
|
|
+import { map, switchMap } from 'rxjs/operators';
|
|
|
+import { DeletionResult, GetFacetList } from 'shared/generated-types';
|
|
|
|
|
|
import { BaseListComponent } from '../../../common/base-list.component';
|
|
|
+import { _ } from '../../../core/providers/i18n/mark-for-extraction';
|
|
|
+import { NotificationService } from '../../../core/providers/notification/notification.service';
|
|
|
import { DataService } from '../../../data/providers/data.service';
|
|
|
+import { ModalService } from '../../../shared/providers/modal/modal.service';
|
|
|
|
|
|
@Component({
|
|
|
selector: 'vdr-facet-list',
|
|
|
@@ -11,8 +16,58 @@ import { DataService } from '../../../data/providers/data.service';
|
|
|
styleUrls: ['./facet-list.component.scss'],
|
|
|
})
|
|
|
export class FacetListComponent extends BaseListComponent<GetFacetList.Query, GetFacetList.Items> {
|
|
|
- constructor(private dataService: DataService, router: Router, route: ActivatedRoute) {
|
|
|
+ constructor(
|
|
|
+ private dataService: DataService,
|
|
|
+ private modalService: ModalService,
|
|
|
+ private notificationService: NotificationService,
|
|
|
+ router: Router,
|
|
|
+ route: ActivatedRoute,
|
|
|
+ ) {
|
|
|
super(router, route);
|
|
|
super.setQueryFn((...args: any[]) => this.dataService.facet.getFacets(...args), data => data.facets);
|
|
|
}
|
|
|
+
|
|
|
+ deleteFacet(facetValueId: string) {
|
|
|
+ this.showModalAndDelete(facetValueId)
|
|
|
+ .pipe(
|
|
|
+ switchMap(response => {
|
|
|
+ if (response.result === DeletionResult.DELETED) {
|
|
|
+ return [true];
|
|
|
+ } else {
|
|
|
+ return this.showModalAndDelete(facetValueId, response.message || '').pipe(
|
|
|
+ map(r => r.result === DeletionResult.DELETED),
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ )
|
|
|
+ .subscribe(
|
|
|
+ () => {
|
|
|
+ this.notificationService.success(_('common.notify-delete-success'), {
|
|
|
+ entity: 'FacetValue',
|
|
|
+ });
|
|
|
+ this.refresh();
|
|
|
+ },
|
|
|
+ err => {
|
|
|
+ this.notificationService.error(_('common.notify-delete-error'), {
|
|
|
+ entity: 'FacetValue',
|
|
|
+ });
|
|
|
+ },
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ private showModalAndDelete(facetId: string, message?: string) {
|
|
|
+ return this.modalService
|
|
|
+ .dialog({
|
|
|
+ title: _('catalog.confirm-delete-facet'),
|
|
|
+ body: message,
|
|
|
+ buttons: [
|
|
|
+ { type: 'seconday', label: _('common.cancel') },
|
|
|
+ { type: 'danger', label: _('common.delete'), returnValue: true },
|
|
|
+ ],
|
|
|
+ })
|
|
|
+ .pipe(
|
|
|
+ switchMap(res => (res ? this.dataService.facet.deleteFacet(facetId, !!message) : EMPTY)),
|
|
|
+ map(res => res.deleteFacet),
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|