Merge remote-tracking branch 'origin/feature/CST-9636' into feature/CST-9636

This commit is contained in:
Enea Jahollari
2023-05-10 16:28:00 +02:00
6 changed files with 32 additions and 18 deletions

View File

@@ -1,17 +1,17 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
import { ObjectCacheService } from '../cache/object-cache.service'; import { ObjectCacheService } from '../cache/object-cache.service';
import { HALEndpointService } from '../shared/hal-endpoint.service'; import { HALEndpointService } from '../shared/hal-endpoint.service';
import { RemoteData } from '../data/remote-data';
import { RequestService } from '../data/request.service'; import { RequestService } from '../data/request.service';
import { BulkAccessConditionOptions } from './models/bulk-access-condition-options.model';
import { ConfigDataService } from './config-data.service'; import { ConfigDataService } from './config-data.service';
import { dataService } from '../data/base/data-service.decorator';
import { BULK_ACCESS_CONDITION_OPTIONS } from './models/config-type';
@Injectable({ providedIn: 'root' })
/** /**
* Data Service responsible for retrieving Bulk Access Condition Options from the REST API * Data Service responsible for retrieving Bulk Access Condition Options from the REST API
*/ */
@Injectable({ providedIn: 'root' })
@dataService(BULK_ACCESS_CONDITION_OPTIONS)
export class BulkAccessConfigDataService extends ConfigDataService { export class BulkAccessConfigDataService extends ConfigDataService {
constructor( constructor(
@@ -23,7 +23,4 @@ export class BulkAccessConfigDataService extends ConfigDataService {
super('bulkaccessconditionoptions', requestService, rdbService, objectCache, halService); super('bulkaccessconditionoptions', requestService, rdbService, objectCache, halService);
} }
findByPropertyName(name: string): Observable<RemoteData<BulkAccessConditionOptions>> {
return this.findById(name) as Observable<RemoteData<BulkAccessConditionOptions>>;
}
} }

View File

@@ -1,9 +1,10 @@
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { ConfigObject } from './models/config.model'; import { ConfigObject } from './models/config.model';
import { RemoteData } from '../data/remote-data'; import { RemoteData } from '../data/remote-data';
import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model';
import { getFirstCompletedRemoteData } from '../shared/operators'; import { getFirstCompletedRemoteData } from '../shared/operators';
import { map } from 'rxjs/operators';
import { IdentifiableDataService } from '../data/base/identifiable-data.service'; import { IdentifiableDataService } from '../data/base/identifiable-data.service';
/** /**
@@ -38,7 +39,20 @@ export abstract class ConfigDataService extends IdentifiableDataService<ConfigOb
); );
} }
findByName(name: string, useCachedVersionIfAvailable = true, reRequestOnStale = true, ...linksToFollow: FollowLinkConfig<ConfigObject>[]): Observable<RemoteData<ConfigObject>> { /**
* Returns a config object by given name
*
* Throws an error if a configuration object cannot be retrieved.
*
* @param name The name of configuration to retrieve
* @param useCachedVersionIfAvailable If this is true, the request will only be sent if there's
* no valid cached version. Defaults to true
* @param reRequestOnStale Whether or not the request should automatically be re-
* requested after the response becomes stale
* @param linksToFollow List of {@link FollowLinkConfig} that indicate which
* {@link HALLink}s should be automatically resolved
*/
public findByName(name: string, useCachedVersionIfAvailable = true, reRequestOnStale = true, ...linksToFollow: FollowLinkConfig<ConfigObject>[]): Observable<RemoteData<ConfigObject>> {
return super.findById(name, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow); return super.findById(name, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow);
} }
} }

View File

@@ -1,17 +1,17 @@
import { autoserialize, autoserializeAs, deserialize } from 'cerialize'; import { autoserialize, autoserializeAs, inheritSerialization } from 'cerialize';
import { typedObject } from '../../cache/builders/build-decorators'; import { typedObject } from '../../cache/builders/build-decorators';
import { excludeFromEquals } from '../../utilities/equals.decorators'; import { excludeFromEquals } from '../../utilities/equals.decorators';
import { ResourceType } from '../../shared/resource-type'; import { ResourceType } from '../../shared/resource-type';
import { HALLink } from '../../shared/hal-link.model'; import { HALLink } from '../../shared/hal-link.model';
import { ConfigObject } from './config.model'; import { ConfigObject } from './config.model';
import { AccessesConditionOption } from './config-accesses-conditions-options.model'; import { AccessesConditionOption } from './config-accesses-conditions-options.model';
import { BULK_ACCESS_CONDITION_OPTIONS } from './config-type';
export const BULK_ACCESS_CONDITION_OPTIONS = new ResourceType('bulkAccessConditionOptions');
/** /**
* Model class for a bulk access condition options * Model class for a bulk access condition options
*/ */
@typedObject @typedObject
@inheritSerialization(ConfigObject)
export class BulkAccessConditionOptions extends ConfigObject { export class BulkAccessConditionOptions extends ConfigObject {
static type = BULK_ACCESS_CONDITION_OPTIONS; static type = BULK_ACCESS_CONDITION_OPTIONS;
@@ -28,10 +28,10 @@ export class BulkAccessConditionOptions extends ConfigObject {
@autoserialize @autoserialize
id: string; id: string;
@deserialize @autoserialize
itemAccessConditionOptions: AccessesConditionOption[]; itemAccessConditionOptions: AccessesConditionOption[];
@deserialize @autoserialize
bitstreamAccessConditionOptions: AccessesConditionOption[]; bitstreamAccessConditionOptions: AccessesConditionOption[];
_links: { self: HALLink }; _links: { self: HALLink };

View File

@@ -17,3 +17,5 @@ export const SUBMISSION_UPLOADS_TYPE = new ResourceType('submissionuploads');
export const SUBMISSION_UPLOAD_TYPE = new ResourceType('submissionupload'); export const SUBMISSION_UPLOAD_TYPE = new ResourceType('submissionupload');
export const SUBMISSION_ACCESSES_TYPE = new ResourceType('submissionaccessoption'); export const SUBMISSION_ACCESSES_TYPE = new ResourceType('submissionaccessoption');
export const BULK_ACCESS_CONDITION_OPTIONS = new ResourceType('bulkaccessconditionoption');

View File

@@ -177,6 +177,7 @@ import { IdentifierData } from '../shared/object-list/identifier-data/identifier
import { Subscription } from '../shared/subscriptions/models/subscription.model'; import { Subscription } from '../shared/subscriptions/models/subscription.model';
import { SupervisionOrderDataService } from './supervision-order/supervision-order-data.service'; import { SupervisionOrderDataService } from './supervision-order/supervision-order-data.service';
import { ItemRequest } from './shared/item-request.model'; import { ItemRequest } from './shared/item-request.model';
import { BulkAccessConditionOptions } from './config/models/bulk-access-condition-options.model';
/** /**
* When not in production, endpoint responses can be mocked for testing purposes * When not in production, endpoint responses can be mocked for testing purposes
@@ -371,6 +372,7 @@ export const models =
IdentifierData, IdentifierData,
Subscription, Subscription,
ItemRequest, ItemRequest,
BulkAccessConditionOptions
]; ];
@NgModule({ @NgModule({

View File

@@ -9,7 +9,7 @@ import {
import { BulkAccessControlService } from './bulk-access-control.service'; import { BulkAccessControlService } from './bulk-access-control.service';
import { SelectableListService } from '../object-list/selectable-list/selectable-list.service'; import { SelectableListService } from '../object-list/selectable-list/selectable-list.service';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { map, take, tap } from 'rxjs/operators'; import { map, take } from 'rxjs/operators';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { ListableObject } from '../object-collection/shared/listable-object.model'; import { ListableObject } from '../object-collection/shared/listable-object.model';
import { SharedModule } from '../shared.module'; import { SharedModule } from '../shared.module';
@@ -62,11 +62,10 @@ export class AccessControlFormContainerComponent<T extends DSpaceObject> impleme
state = initialState; state = initialState;
dropdownData$: Observable<BulkAccessConditionOptions> = this.bulkAccessConfigService.findByPropertyName('default').pipe( dropdownData$: Observable<BulkAccessConditionOptions> = this.bulkAccessConfigService.findByName('default').pipe(
getFirstCompletedRemoteData(), getFirstCompletedRemoteData(),
map((configRD: RemoteData<BulkAccessConditionOptions>) => configRD.hasSucceeded ? configRD.payload : null), map((configRD: RemoteData<BulkAccessConditionOptions>) => configRD.hasSucceeded ? configRD.payload : null),
shareReplay(1), shareReplay(1)
tap(x => console.log('options', x))
); );
/** /**