mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
CST-12174 Updated delete services to mark for deletion
This commit is contained in:
@@ -10,7 +10,6 @@ import { FormsModule } from '@angular/forms';
|
||||
import { LdnItemfiltersService } from './ldn-services-data/ldn-itemfilters-data.service';
|
||||
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
@@ -26,4 +25,5 @@ import { LdnItemfiltersService } from './ldn-services-data/ldn-itemfilters-data.
|
||||
],
|
||||
providers: [LdnItemfiltersService]
|
||||
})
|
||||
export class AdminLdnServicesModule { }
|
||||
export class AdminLdnServicesModule {
|
||||
}
|
||||
|
@@ -84,8 +84,6 @@
|
||||
<ng-container [formGroupName]="i">
|
||||
|
||||
|
||||
|
||||
|
||||
<div [class.marked-for-deletion]="markedForDeletion.includes(i)" class="row mb-1">
|
||||
<div class="col">
|
||||
<select #inboundPattern formControlName="pattern" id="additionalInboundPattern{{i}}"
|
||||
@@ -107,7 +105,8 @@
|
||||
</div>
|
||||
|
||||
<div [style.visibility]="inboundPattern.value ? 'visible' : 'hidden'" class="col-sm1">
|
||||
<input formControlName="automatic" hidden id="automatic{{i}}" name="automatic{{i}}" type="checkbox">
|
||||
<input formControlName="automatic" hidden id="automatic{{i}}" name="automatic{{i}}"
|
||||
type="checkbox">
|
||||
<div (click)="toggleAutomatic(i)"
|
||||
[class.checked]="formModel.get('notifyServiceInboundPatterns.' + i + '.automatic').value"
|
||||
class="toggle-switch">
|
||||
@@ -117,10 +116,11 @@
|
||||
|
||||
|
||||
<div class="col-sm-1 btn-group">
|
||||
<button type="button" (click)="markForDeletion(i)" class="btn btn-outline-dark trash-button">
|
||||
<button (click)="markForDeletion(i)" class="btn btn-outline-dark trash-button" type="button">
|
||||
<i class="fas fa-trash"></i>
|
||||
</button>
|
||||
<button *ngIf="markedForDeletion.includes(i)" type="button" (click)="unmarkForDeletion(i)" class="btn btn-outline-dark undo-button">
|
||||
<button (click)="unmarkForDeletion(i)" *ngIf="markedForDeletion.includes(i)" class="btn btn-outline-dark undo-button"
|
||||
type="button">
|
||||
<i class="fas fa-undo"></i>
|
||||
</button>
|
||||
</div>
|
||||
@@ -186,7 +186,8 @@
|
||||
</div>
|
||||
|
||||
<div class="col-sm-1">
|
||||
<button type="button" (click)="removeOutboundPattern(i)" class="btn btn-outline-dark trash-button">
|
||||
<button (click)="removeOutboundPattern(i)" class="btn btn-outline-dark trash-button"
|
||||
type="button">
|
||||
<i class="fas fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
@@ -202,12 +203,12 @@
|
||||
<div class="mb-5">
|
||||
|
||||
</div>
|
||||
<div class="submission-form-footer mt-1 mb-1 position-sticky" role="group" aria-label="Basic example">
|
||||
<div aria-label="Basic example" class="submission-form-footer mt-1 mb-1 position-sticky" role="group">
|
||||
<button class="btn btn-primary" type="submit">
|
||||
<span><i class="fas fa-save"></i> {{ 'ldn-new-service.form.label.submit' | translate }}</span>
|
||||
</button>
|
||||
<div class="d-flex">
|
||||
<button type="button" class="btn btn-danger" (click)="this.openResetFormModal(this.resetFormModal)">
|
||||
<button (click)="this.openResetFormModal(this.resetFormModal)" class="btn btn-danger" type="button">
|
||||
<span><i class="fas fa-trash"></i> {{ 'submission.general.discard.submit' | translate }}</span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -264,7 +265,8 @@
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<button (click)="resetFormAndLeave()"
|
||||
class="btn btn-primary mr-2 custom-btn" id="reset-confirm">{{ 'service.overview.reset-form.reset-return' | translate }}</button>
|
||||
class="btn btn-primary mr-2 custom-btn"
|
||||
id="reset-confirm">{{ 'service.overview.reset-form.reset-return' | translate }}</button>
|
||||
<button (click)="closeModal()" class="btn btn-danger"
|
||||
id="reset-delete">{{ 'service.overview.reset-form.reset-confirm' | translate }}
|
||||
</button>
|
||||
|
@@ -32,6 +32,7 @@ textarea {
|
||||
cursor: pointer;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.remove-pattern-link {
|
||||
color: #e34949;
|
||||
cursor: pointer;
|
||||
@@ -75,7 +76,6 @@ textarea {
|
||||
}
|
||||
|
||||
|
||||
|
||||
.toggle-switch .slider {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
|
@@ -56,15 +56,14 @@ export class LdnServiceFormEditComponent implements OnInit {
|
||||
@Input() public constraint: string;
|
||||
@Input() public automatic: boolean;
|
||||
@Input() public headerKey: string;
|
||||
markedForDeletion: number[] = [];
|
||||
protected serviceId: string;
|
||||
private originalInboundPatterns: any[] = [];
|
||||
private originalOutboundPatterns: any[] = [];
|
||||
private deletedInboundPatterns: number[] = [];
|
||||
private deletedOutboundPatterns: number[] = [];
|
||||
private modalRef: any;
|
||||
private service: LdnService;
|
||||
protected serviceId: string;
|
||||
markedForDeletion: number[] = [];
|
||||
|
||||
|
||||
constructor(
|
||||
protected ldnServicesService: LdnServicesService,
|
||||
@@ -111,8 +110,6 @@ export class LdnServiceFormEditComponent implements OnInit {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
fetchServiceData(serviceId: string): void {
|
||||
this.ldnServicesService.findById(serviceId).pipe(
|
||||
getFirstCompletedRemoteData()
|
||||
@@ -275,15 +272,43 @@ export class LdnServiceFormEditComponent implements OnInit {
|
||||
this.sendBack();
|
||||
this.notificationService.success(this.translateService.get('admin.registries.services-formats.modify.success.head'),
|
||||
this.translateService.get('admin.registries.services-formats.modify.success.content'));
|
||||
},
|
||||
(error) => {
|
||||
this.notificationService.error(this.translateService.get('admin.registries.services-formats.modify.failure.head'),
|
||||
this.translateService.get('admin.registries.services-formats.modify.failure.content'));
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
resetFormAndLeave() {
|
||||
this.sendBack();
|
||||
this.closeModal();
|
||||
}
|
||||
|
||||
markForDeletion(index: number) {
|
||||
if (!this.markedForDeletion.includes(index)) {
|
||||
this.markedForDeletion.push(index);
|
||||
}
|
||||
}
|
||||
|
||||
unmarkForDeletion(index: number) {
|
||||
const i = this.markedForDeletion.indexOf(index);
|
||||
if (i !== -1) {
|
||||
this.markedForDeletion.splice(i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
deleteMarkedPatterns() {
|
||||
this.markedForDeletion.sort((a, b) => b - a);
|
||||
const patternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray;
|
||||
|
||||
for (const index of this.markedForDeletion) {
|
||||
if (index >= 0 && index < patternsArray.length) {
|
||||
this.deletedInboundPatterns.push(index);
|
||||
patternsArray.removeAt(index);
|
||||
}
|
||||
}
|
||||
|
||||
this.markedForDeletion = [];
|
||||
}
|
||||
|
||||
private createReplaceOperation(patchOperations: any[], formControlName: string, path: string): void {
|
||||
if (this.formModel.get(formControlName).dirty) {
|
||||
patchOperations.push({
|
||||
@@ -326,11 +351,6 @@ export class LdnServiceFormEditComponent implements OnInit {
|
||||
this.router.navigateByUrl('admin/ldn/services');
|
||||
}
|
||||
|
||||
resetFormAndLeave() {
|
||||
this.sendBack();
|
||||
this.closeModal();
|
||||
}
|
||||
|
||||
private createOutboundPatternFormGroup(): FormGroup {
|
||||
return this.formBuilder.group({
|
||||
pattern: '',
|
||||
@@ -362,30 +382,4 @@ export class LdnServiceFormEditComponent implements OnInit {
|
||||
automatic: '',
|
||||
});
|
||||
}
|
||||
markForDeletion(index: number) {
|
||||
if (!this.markedForDeletion.includes(index)) {
|
||||
this.markedForDeletion.push(index);
|
||||
}
|
||||
}
|
||||
|
||||
unmarkForDeletion(index: number) {
|
||||
const i = this.markedForDeletion.indexOf(index);
|
||||
if (i !== -1) {
|
||||
this.markedForDeletion.splice(i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
deleteMarkedPatterns() {
|
||||
this.markedForDeletion.sort((a, b) => b - a);
|
||||
const patternsArray = this.formModel.get('notifyServiceInboundPatterns') as FormArray;
|
||||
|
||||
for (const index of this.markedForDeletion) {
|
||||
if (index >= 0 && index < patternsArray.length) {
|
||||
this.deletedInboundPatterns.push(index);
|
||||
patternsArray.removeAt(index);
|
||||
}
|
||||
}
|
||||
|
||||
this.markedForDeletion = [];
|
||||
}
|
||||
}
|
||||
|
@@ -44,7 +44,8 @@
|
||||
<div class="mb-2">
|
||||
<label for="ldnUrl">{{ 'ldn-new-service.form.label.ldnUrl' | translate }}</label>
|
||||
<input [class.invalid-field]="formModel.get('ldnUrl').invalid && formModel.get('ldnUrl').touched"
|
||||
[placeholder]="'ldn-new-service.form.placeholder.ldnUrl' | translate" formControlName="ldnUrl" id="ldnUrl"
|
||||
[placeholder]="'ldn-new-service.form.placeholder.ldnUrl' | translate" formControlName="ldnUrl"
|
||||
id="ldnUrl"
|
||||
name="ldnUrl"
|
||||
type="text">
|
||||
</div>
|
||||
@@ -96,7 +97,8 @@
|
||||
</div>
|
||||
|
||||
<div [style.visibility]="inboundPattern.value ? 'visible' : 'hidden'" class="col-sm-1">
|
||||
<input formControlName="automatic" hidden id="automatic{{i}}" name="automatic{{i}}" type="checkbox">
|
||||
<input formControlName="automatic" hidden id="automatic{{i}}" name="automatic{{i}}"
|
||||
type="checkbox">
|
||||
<div (click)="toggleAutomatic(i)"
|
||||
[class.checked]="formModel.get('notifyServiceInboundPatterns.' + i + '.automatic').value"
|
||||
class="toggle-switch">
|
||||
@@ -186,12 +188,12 @@
|
||||
|
||||
</div>
|
||||
|
||||
<div class="submission-form-footer mt-1 mb-1 position-sticky" role="group" aria-label="Basic example">
|
||||
<div aria-label="Basic example" class="submission-form-footer mt-1 mb-1 position-sticky" role="group">
|
||||
<button class="btn btn-primary" type="submit">
|
||||
<span><i class="fas fa-save"></i> {{ 'ldn-new-service.form.label.submit' | translate }}</span>
|
||||
</button>
|
||||
<div class="d-flex">
|
||||
<button type="button" class="btn btn-danger" (click)="this.openResetFormModal(this.resetFormModal)">
|
||||
<button (click)="this.openResetFormModal(this.resetFormModal)" class="btn btn-danger" type="button">
|
||||
<span><i class="fas fa-trash"></i> {{ 'submission.general.discard.submit' | translate }}</span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -250,7 +252,8 @@
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<button (click)="resetFormAndLeave()"
|
||||
class="btn btn-primary mr-2 custom-btn" id="reset-confirm">{{ 'service.overview.reset-form.reset-return' | translate }}
|
||||
class="btn btn-primary mr-2 custom-btn"
|
||||
id="reset-confirm">{{ 'service.overview.reset-form.reset-return' | translate }}
|
||||
</button>
|
||||
<button (click)="closeModal()" class="btn btn-danger"
|
||||
id="reset-delete">{{ 'service.overview.reset-form.reset-confirm' | translate }}
|
||||
|
@@ -32,6 +32,7 @@ textarea {
|
||||
cursor: pointer;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.remove-pattern-link {
|
||||
color: #e34949;
|
||||
cursor: pointer;
|
||||
@@ -75,7 +76,6 @@ textarea {
|
||||
}
|
||||
|
||||
|
||||
|
||||
.toggle-switch .slider {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
@@ -113,7 +113,7 @@ textarea {
|
||||
|
||||
form button.btn.btn-primary[type="submit"] {
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
bottom: 0;
|
||||
right: -10px;
|
||||
}
|
||||
|
||||
|
@@ -43,11 +43,8 @@ import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
||||
})
|
||||
export class LdnServiceFormComponent implements OnInit {
|
||||
formModel: FormGroup;
|
||||
private modalRef: any;
|
||||
@ViewChild('confirmModal', {static: true}) confirmModal: TemplateRef<any>;
|
||||
@ViewChild('resetFormModal', {static: true}) resetFormModal: TemplateRef<any>;
|
||||
|
||||
|
||||
public inboundPatterns: object[] = notifyPatterns;
|
||||
public outboundPatterns: object[] = notifyPatterns;
|
||||
itemfiltersRD$: Observable<RemoteData<PaginatedList<Itemfilter>>>;
|
||||
@@ -58,9 +55,6 @@ export class LdnServiceFormComponent implements OnInit {
|
||||
id: 'po',
|
||||
pageSize: 20
|
||||
});
|
||||
|
||||
|
||||
|
||||
@Input() public name: string;
|
||||
@Input() public description: string;
|
||||
@Input() public url: string;
|
||||
@@ -69,10 +63,10 @@ export class LdnServiceFormComponent implements OnInit {
|
||||
@Input() public outboundPattern: string;
|
||||
@Input() public constraint: string;
|
||||
@Input() public automatic: boolean;
|
||||
|
||||
@Input() public headerKey: string;
|
||||
@Output() submitForm: EventEmitter<any> = new EventEmitter();
|
||||
@Output() cancelForm: EventEmitter<any> = new EventEmitter();
|
||||
private modalRef: any;
|
||||
|
||||
constructor(
|
||||
private ldnServicesService: LdnServicesService,
|
||||
@@ -83,7 +77,6 @@ export class LdnServiceFormComponent implements OnInit {
|
||||
private translateService: TranslateService,
|
||||
private cdRef: ChangeDetectorRef,
|
||||
protected modalService: NgbModal,
|
||||
|
||||
) {
|
||||
|
||||
this.formModel = this.formBuilder.group({
|
||||
@@ -106,13 +99,10 @@ export class LdnServiceFormComponent implements OnInit {
|
||||
this.setItemfilters();
|
||||
|
||||
}
|
||||
|
||||
setItemfilters() {
|
||||
this.itemfiltersRD$ = this.ldnItemfiltersService.findAll().pipe(
|
||||
getFirstCompletedRemoteData());
|
||||
this.itemfiltersRD$.subscribe((rd: RemoteData<PaginatedList<Itemfilter>>) => {
|
||||
if (rd.hasSucceeded) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onSubmit() {
|
||||
@@ -126,6 +116,7 @@ export class LdnServiceFormComponent implements OnInit {
|
||||
openResetFormModal(content) {
|
||||
this.modalRef = this.modalService.open(content);
|
||||
}
|
||||
|
||||
createService() {
|
||||
this.formModel.get('name').markAsTouched();
|
||||
this.formModel.get('url').markAsTouched();
|
||||
@@ -212,7 +203,6 @@ export class LdnServiceFormComponent implements OnInit {
|
||||
}
|
||||
|
||||
|
||||
|
||||
private createOutboundPatternFormGroup(): FormGroup {
|
||||
return this.formBuilder.group({
|
||||
pattern: [''],
|
||||
|
@@ -4,7 +4,6 @@ import { LdnService } from "../ldn-services-model/ldn-services.model";
|
||||
import { ActivatedRoute } from "@angular/router";
|
||||
import { ProcessDataService } from "../../../core/data/processes/process-data.service";
|
||||
import { LinkService } from "../../../core/cache/builders/link.service";
|
||||
import { getFirstSucceededRemoteDataPayload } from "../../../core/shared/operators";
|
||||
|
||||
@Component({
|
||||
selector: 'ds-ldn-service-new',
|
||||
|
@@ -37,8 +37,6 @@ export const mockLdnService: LdnService = {
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
const mockLdnServices = {
|
||||
payload: {
|
||||
elementsPerPage: 20,
|
||||
@@ -67,7 +65,5 @@ const mockLdnServices = {
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// Create a mock ldnServicesRD$ observable
|
||||
export const mockLdnServicesRD$: Observable<RemoteData<PaginatedList<LdnService>>> = of((mockLdnServices as unknown) as RemoteData<PaginatedList<LdnService>>);
|
||||
|
@@ -17,7 +17,6 @@ import { Itemfilter } from '../ldn-services-model/ldn-service-itemfilters';
|
||||
import { PaginatedList } from '../../../core/data/paginated-list.model';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* A service responsible for fetching/sending data from/to the REST API on the itemfilters endpoint
|
||||
*/
|
||||
|
@@ -106,6 +106,14 @@ export class LdnServicesService extends IdentifiableDataService<LdnService> impl
|
||||
return this.rdbService.buildFromRequestUUID<LdnService>(requestId);
|
||||
}
|
||||
|
||||
public ldnServiceWithNameExistsAndCanExecute(scriptName: string): Observable<boolean> {
|
||||
return this.findById(scriptName).pipe(
|
||||
getFirstCompletedRemoteData(),
|
||||
map((rd: RemoteData<LdnService>) => {
|
||||
return hasValue(rd.payload);
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
private getInvocationFormData(constrain: ldnServiceConstrain[], files: File[]): FormData {
|
||||
const form: FormData = new FormData();
|
||||
@@ -115,13 +123,4 @@ export class LdnServicesService extends IdentifiableDataService<LdnService> impl
|
||||
});
|
||||
return form;
|
||||
}
|
||||
|
||||
public ldnServiceWithNameExistsAndCanExecute(scriptName: string): Observable<boolean> {
|
||||
return this.findById(scriptName).pipe(
|
||||
getFirstCompletedRemoteData(),
|
||||
map((rd: RemoteData<LdnService>) => {
|
||||
return hasValue(rd.payload);
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -27,9 +27,9 @@
|
||||
<td>{{ ldnService.name }}</td>
|
||||
<td>{{ ldnService.description }}</td>
|
||||
<td>
|
||||
<span [ngClass]="{ 'status-enabled': ldnService.enabled, 'status-disabled': !ldnService.enabled }"
|
||||
class="status-indicator" (click)="toggleStatus(ldnService, ldnServicesService)"
|
||||
[title]="ldnService.enabled ? ('ldn-service.overview.table.clickToDisable' | translate) : ('ldn-service.overview.table.clickToEnable' | translate)">
|
||||
<span (click)="toggleStatus(ldnService, ldnServicesService)"
|
||||
[ngClass]="{ 'status-enabled': ldnService.enabled, 'status-disabled': !ldnService.enabled }" [title]="ldnService.enabled ? ('ldn-service.overview.table.clickToDisable' | translate) : ('ldn-service.overview.table.clickToEnable' | translate)"
|
||||
class="status-indicator">
|
||||
{{ ldnService.enabled ? ('ldn-service.overview.table.enabled' | translate) : ('ldn-service.overview.table.disabled' | translate) }}
|
||||
</span>
|
||||
</td>
|
||||
@@ -72,7 +72,8 @@
|
||||
<div class="mt-4">
|
||||
<button (click)="closeModal()"
|
||||
class="btn btn-primary mr-2">{{ 'service.detail.delete.cancel' | translate }}</button>
|
||||
<button (click)="deleteSelected(this.selectedServiceId.toString(), ldnServicesService)" class="btn btn-danger"
|
||||
<button (click)="deleteSelected(this.selectedServiceId.toString(), ldnServicesService)"
|
||||
class="btn btn-danger"
|
||||
id="delete-confirm">{{ 'service.overview.delete' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
@@ -1,4 +1,12 @@
|
||||
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';
|
||||
import {
|
||||
ChangeDetectionStrategy,
|
||||
ChangeDetectorRef,
|
||||
Component,
|
||||
OnDestroy,
|
||||
OnInit,
|
||||
TemplateRef,
|
||||
ViewChild
|
||||
} from '@angular/core';
|
||||
import { Observable, Subscription } from 'rxjs';
|
||||
import { RemoteData } from '../../../core/data/remote-data';
|
||||
import { PaginatedList } from '../../../core/data/paginated-list.model';
|
||||
@@ -109,8 +117,6 @@ export class LdnServicesOverviewComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
toggleStatus(ldnService: any, ldnServicesService: LdnServicesService): void {
|
||||
const newStatus = !ldnService.enabled;
|
||||
const originalStatus = ldnService.enabled;
|
||||
|
@@ -11,7 +11,9 @@ export class LdnServicesGuard implements CanActivate {
|
||||
constructor(
|
||||
//private notifyInfoService: NotifyInfoService,
|
||||
private router: Router
|
||||
) {}
|
||||
) {
|
||||
}
|
||||
|
||||
canActivate(
|
||||
route: ActivatedRouteSnapshot,
|
||||
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
||||
|
@@ -1,7 +1,6 @@
|
||||
import { autoserialize, inheritSerialization, deserialize } from 'cerialize';
|
||||
import { autoserialize, deserialize, inheritSerialization } from 'cerialize';
|
||||
import { LDN_SERVICE_CONSTRAINT_FILTER } from './ldn-service.resource-type';
|
||||
import { CacheableObject } from '../../../core/cache/cacheable-object.model';
|
||||
import { HALLink } from '../../../core/shared/hal-link.model';
|
||||
import { typedObject } from '../../../core/cache/builders/build-decorators';
|
||||
import { excludeFromEquals } from '../../../core/utilities/equals.decorators';
|
||||
import { ResourceType } from '../../../core/shared/resource-type';
|
||||
|
@@ -7,7 +7,6 @@ import { typedObject } from '../../../core/cache/builders/build-decorators';
|
||||
import { NotifyServicePattern } from './ldn-service-patterns.model';
|
||||
|
||||
|
||||
|
||||
/** An LdnService and its properties. */
|
||||
@typedObject
|
||||
@inheritSerialization(CacheableObject)
|
||||
|
@@ -11,7 +11,9 @@ export class LdnDirectoryService {
|
||||
|
||||
|
||||
constructor(private http: HttpClient,
|
||||
private ldnServicesService: LdnServicesService) {}
|
||||
private ldnServicesService: LdnServicesService) {
|
||||
}
|
||||
|
||||
public getItemFilters(): Observable<any> {
|
||||
|
||||
return this.ldnServicesService.findAll().pipe(
|
||||
|
Reference in New Issue
Block a user