Switched to GET requests for Content Reports

This commit is contained in:
Jean-François Morin
2024-02-23 16:34:29 -05:00
parent 04979919f7
commit e2bf9d2bcf
3 changed files with 90 additions and 8 deletions

View File

@@ -40,7 +40,7 @@ export class FilteredCollectionsComponent {
submit() { submit() {
this this
.postFilteredCollections() .getFilteredCollections()
.subscribe( .subscribe(
response => { response => {
this.results.deserialize(response.payload); this.results.deserialize(response.payload);
@@ -49,10 +49,42 @@ export class FilteredCollectionsComponent {
); );
} }
postFilteredCollections(): Observable<RawRestResponse> { getFilteredCollections(): Observable<RawRestResponse> {
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<RawRestResponse> {
let form = this.queryForm.value; let form = this.queryForm.value;
let scheme = environment.rest.ssl ? 'https' : 'http'; let scheme = environment.rest.ssl ? 'https' : 'http';
let urlRestApp = `${scheme}://${environment.rest.host}:${environment.rest.port}${environment.rest.nameSpace}`; 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);
} }
*/
} }

View File

@@ -280,7 +280,7 @@ export class FilteredItemsComponent {
resubmit() { resubmit() {
this.results$ = this this.results$ = this
.postFilteredItems() .getFilteredItems()
.pipe( .pipe(
map(response => { map(response => {
let offset = this.currentPage * this.pageSize(); let offset = this.currentPage * this.pageSize();
@@ -290,12 +290,46 @@ export class FilteredItemsComponent {
); );
} }
postFilteredItems(): Observable<RawRestResponse> { getFilteredItems(): Observable<RawRestResponse> {
let form = this.queryForm.value; let params = this.toQueryString();
if (params.length > 0) {
params = "?" + params;
}
let scheme = environment.rest.ssl ? 'https' : 'http'; let scheme = environment.rest.ssl ? 'https' : 'http';
let urlRestApp = `${scheme}://${environment.rest.host}:${environment.rest.port}${environment.rest.nameSpace}`; 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.GET, `${urlRestApp}/api/contentreport/filtereditems${params}`);
return this.restService.request(RestRequestMethod.POST, urlRequest, form); }
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;
} }
} }

View File

@@ -126,4 +126,20 @@ export class FiltersComponent {
this.setAllFilters(false); 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;
}
} }