diff --git a/src/app/admin/admin-reports/filtered-collections/filtered-collections.component.ts b/src/app/admin/admin-reports/filtered-collections/filtered-collections.component.ts index 3d0c52d47e..411e362d29 100644 --- a/src/app/admin/admin-reports/filtered-collections/filtered-collections.component.ts +++ b/src/app/admin/admin-reports/filtered-collections/filtered-collections.component.ts @@ -40,7 +40,7 @@ export class FilteredCollectionsComponent { submit() { this - .postFilteredCollections() + .getFilteredCollections() .subscribe( response => { this.results.deserialize(response.payload); @@ -49,10 +49,42 @@ export class FilteredCollectionsComponent { ); } - postFilteredCollections(): Observable { + getFilteredCollections(): Observable { + let params = this.toQueryString(); + if (params.length > 0) { + params = "?" + params; + } + let scheme = environment.rest.ssl ? 'https' : 'http'; + let urlRestApp = `${scheme}://${environment.rest.host}:${environment.rest.port}${environment.rest.nameSpace}`; + return this.restService.request(RestRequestMethod.GET, `${urlRestApp}/api/contentreport/filteredcollections${params}`); + } + + private toQueryString() : string { + let params = FiltersComponent.toQueryString(this.queryForm.value['filters']); + return params; + } + + /* + downloadCsv() { + this + .postDownloadCsv() + .subscribe( + response => { + // TODO: Ne fonctionne pas, le restService de DSpace attend un document JSON. + const csv: any = response.payload; + const blob = new Blob([csv], { type: 'text/csv' }); + const url = window.URL.createObjectURL(blob); + window.open(url); + } + ); + } + + postDownloadCsv(): Observable { let form = this.queryForm.value; let scheme = environment.rest.ssl ? 'https' : 'http'; let urlRestApp = `${scheme}://${environment.rest.host}:${environment.rest.port}${environment.rest.nameSpace}`; - return this.restService.request(RestRequestMethod.POST, `${urlRestApp}/api/contentreport/filteredcollections`, form); + return this.restService.request(RestRequestMethod.POST, `${urlRestApp}/api/contentreport/filteredcollections/csv`, form); } +*/ + } diff --git a/src/app/admin/admin-reports/filtered-items/filtered-items.component.ts b/src/app/admin/admin-reports/filtered-items/filtered-items.component.ts index 0aaa56b1a0..3d1db452fd 100644 --- a/src/app/admin/admin-reports/filtered-items/filtered-items.component.ts +++ b/src/app/admin/admin-reports/filtered-items/filtered-items.component.ts @@ -280,7 +280,7 @@ export class FilteredItemsComponent { resubmit() { this.results$ = this - .postFilteredItems() + .getFilteredItems() .pipe( map(response => { let offset = this.currentPage * this.pageSize(); @@ -290,12 +290,46 @@ export class FilteredItemsComponent { ); } - postFilteredItems(): Observable { - let form = this.queryForm.value; + getFilteredItems(): Observable { + let params = this.toQueryString(); + if (params.length > 0) { + params = "?" + params; + } let scheme = environment.rest.ssl ? 'https' : 'http'; let urlRestApp = `${scheme}://${environment.rest.host}:${environment.rest.port}${environment.rest.nameSpace}`; - let urlRequest = `${urlRestApp}/api/contentreport/filtereditems?page=${this.currentPage}&size=${this.pageSize()}`; - return this.restService.request(RestRequestMethod.POST, urlRequest, form); + return this.restService.request(RestRequestMethod.GET, `${urlRestApp}/api/contentreport/filtereditems${params}`); + } + + private toQueryString() : string { + let params = `page=${this.currentPage}&size=${this.pageSize()}`; + + let colls = this.queryForm.value['collections']; + for (const coll in colls) { + params += `&collections=${colls[coll]}`; + } + + let preds = this.queryForm.value['queryPredicates']; + for (const pred in preds) { + const field = preds[pred].field; + const op = preds[pred].operator; + const value = preds[pred].value; + params += `&queryPredicates=${field}:${op}`; + if (value) { + params += `:${value}`; + } + } + + let filters = FiltersComponent.toQueryString(this.queryForm.value['filters']); + if (filters.length > 0) { + params += `&${filters}`; + } + + let addFlds = this.queryForm.value['additionalFields']; + for (const fld in addFlds) { + params += `&additionalFields=${addFlds[fld]}`; + } + + return params; } } diff --git a/src/app/admin/admin-reports/filters-section/filters-section.component.ts b/src/app/admin/admin-reports/filters-section/filters-section.component.ts index e6a7f683dd..2c3af281c0 100644 --- a/src/app/admin/admin-reports/filters-section/filters-section.component.ts +++ b/src/app/admin/admin-reports/filters-section/filters-section.component.ts @@ -126,4 +126,20 @@ export class FiltersComponent { this.setAllFilters(false); } + static toQueryString(filters: Object): string { + let params = ''; + let first = true; + for (const key in filters) { + if (filters[key]) { + if (first) { + first = false; + } else { + params += '&'; + } + params += `filters=${key}`; + } + } + return params; + } + }