mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-15 05:53:03 +00:00
Made JsonPatchOperationsService an abstract class
This commit is contained in:
@@ -66,7 +66,6 @@ import { RegistryMetadataschemasResponseParsingService } from './data/registry-m
|
|||||||
import { MetadataschemaParsingService } from './data/metadataschema-parsing.service';
|
import { MetadataschemaParsingService } from './data/metadataschema-parsing.service';
|
||||||
import { RegistryMetadatafieldsResponseParsingService } from './data/registry-metadatafields-response-parsing.service';
|
import { RegistryMetadatafieldsResponseParsingService } from './data/registry-metadatafields-response-parsing.service';
|
||||||
import { RegistryBitstreamformatsResponseParsingService } from './data/registry-bitstreamformats-response-parsing.service';
|
import { RegistryBitstreamformatsResponseParsingService } from './data/registry-bitstreamformats-response-parsing.service';
|
||||||
import { JsonPatchOperationsService } from './json-patch/json-patch-operations.service';
|
|
||||||
import { WorkflowitemDataService } from './submission/workflowitem-data.service';
|
import { WorkflowitemDataService } from './submission/workflowitem-data.service';
|
||||||
import { NotificationsService } from '../shared/notifications/notifications.service';
|
import { NotificationsService } from '../shared/notifications/notifications.service';
|
||||||
import { UploaderService } from '../shared/uploader/uploader.service';
|
import { UploaderService } from '../shared/uploader/uploader.service';
|
||||||
@@ -76,6 +75,7 @@ import { BrowseItemsResponseParsingService } from './data/browse-items-response-
|
|||||||
import { DSpaceObjectDataService } from './data/dspace-object-data.service';
|
import { DSpaceObjectDataService } from './data/dspace-object-data.service';
|
||||||
import { CSSVariableService } from '../shared/sass-helper/sass-helper.service';
|
import { CSSVariableService } from '../shared/sass-helper/sass-helper.service';
|
||||||
import { MenuService } from '../shared/menu/menu.service';
|
import { MenuService } from '../shared/menu/menu.service';
|
||||||
|
import { SubmissionJsonPatchOperationsService } from './submission/submission-json-patch-operations.service';
|
||||||
|
|
||||||
const IMPORTS = [
|
const IMPORTS = [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
@@ -140,8 +140,8 @@ const PROVIDERS = [
|
|||||||
SubmissionRestService,
|
SubmissionRestService,
|
||||||
SubmissionSectionsConfigService,
|
SubmissionSectionsConfigService,
|
||||||
SubmissionResponseParsingService,
|
SubmissionResponseParsingService,
|
||||||
|
SubmissionJsonPatchOperationsService,
|
||||||
JsonPatchOperationsBuilder,
|
JsonPatchOperationsBuilder,
|
||||||
JsonPatchOperationsService,
|
|
||||||
AuthorityService,
|
AuthorityService,
|
||||||
IntegrationResponseParsingService,
|
IntegrationResponseParsingService,
|
||||||
UploaderService,
|
UploaderService,
|
||||||
|
@@ -1,22 +1,15 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { merge as observableMerge, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';
|
||||||
|
|
||||||
import { Observable, of as observableOf, throwError as observableThrowError, merge as observableMerge } from 'rxjs';
|
|
||||||
import { distinctUntilChanged, filter, flatMap, map, mergeMap, partition, take, tap } from 'rxjs/operators';
|
import { distinctUntilChanged, filter, flatMap, map, mergeMap, partition, take, tap } from 'rxjs/operators';
|
||||||
|
import { Store } from '@ngrx/store';
|
||||||
|
|
||||||
import { hasValue, isEmpty, isNotEmpty, isNotUndefined, isUndefined } from '../../shared/empty.util';
|
import { hasValue, isEmpty, isNotEmpty, isNotUndefined, isUndefined } from '../../shared/empty.util';
|
||||||
import {
|
import { ErrorResponse, PostPatchSuccessResponse, RestResponse } from '../cache/response-cache.models';
|
||||||
ConfigSuccessResponse,
|
|
||||||
ErrorResponse,
|
|
||||||
PostPatchSuccessResponse,
|
|
||||||
RestResponse
|
|
||||||
} from '../cache/response-cache.models';
|
|
||||||
import { ResponseCacheEntry } from '../cache/response-cache.reducer';
|
import { ResponseCacheEntry } from '../cache/response-cache.reducer';
|
||||||
import { ResponseCacheService } from '../cache/response-cache.service';
|
import { ResponseCacheService } from '../cache/response-cache.service';
|
||||||
import { PatchRequest, RestRequest, SubmissionPatchRequest } from '../data/request.models';
|
import { PatchRequest, RestRequest } from '../data/request.models';
|
||||||
import { RequestService } from '../data/request.service';
|
import { RequestService } from '../data/request.service';
|
||||||
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||||
import { CoreState } from '../core.reducers';
|
import { CoreState } from '../core.reducers';
|
||||||
import { Store } from '@ngrx/store';
|
|
||||||
import { jsonPatchOperationsByResourceType } from './selectors';
|
import { jsonPatchOperationsByResourceType } from './selectors';
|
||||||
import { JsonPatchOperationsResourceEntry } from './json-patch-operations.reducer';
|
import { JsonPatchOperationsResourceEntry } from './json-patch-operations.reducer';
|
||||||
import {
|
import {
|
||||||
@@ -26,15 +19,13 @@ import {
|
|||||||
} from './json-patch-operations.actions';
|
} from './json-patch-operations.actions';
|
||||||
import { JsonPatchOperationModel } from './json-patch.model';
|
import { JsonPatchOperationModel } from './json-patch.model';
|
||||||
|
|
||||||
@Injectable()
|
export abstract class JsonPatchOperationsService<ResponseDefinitionDomain, PatchRequestDefinition extends PatchRequest> {
|
||||||
export class JsonPatchOperationsService<ResponseDefinitionDomain> {
|
protected abstract responseCache: ResponseCacheService;
|
||||||
protected linkPath;
|
protected abstract requestService: RequestService;
|
||||||
|
protected abstract store: Store<CoreState>;
|
||||||
constructor(protected responseCache: ResponseCacheService,
|
protected abstract linkPath: string;
|
||||||
protected requestService: RequestService,
|
protected abstract halService: HALEndpointService;
|
||||||
protected store: Store<CoreState>,
|
protected abstract patchRequestConstructor: any;
|
||||||
protected halService: HALEndpointService) {
|
|
||||||
}
|
|
||||||
|
|
||||||
protected submitData(request: RestRequest): Observable<ResponseDefinitionDomain> {
|
protected submitData(request: RestRequest): Observable<ResponseDefinitionDomain> {
|
||||||
const responses = this.responseCache.get(request.href).pipe(map((entry: ResponseCacheEntry) => entry.response));
|
const responses = this.responseCache.get(request.href).pipe(map((entry: ResponseCacheEntry) => entry.response));
|
||||||
@@ -49,9 +40,9 @@ export class JsonPatchOperationsService<ResponseDefinitionDomain> {
|
|||||||
return observableMerge(errorResponses, successResponses);
|
return observableMerge(errorResponses, successResponses);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected submitJsonPatchOperations(hrefObs: Observable<string>, resourceType: string, resourceId?: string) {
|
protected submitJsonPatchOperations(hrefObs: Observable<string>, resourceType: string, resourceId?: string): Observable<ResponseDefinitionDomain> {
|
||||||
let startTransactionTime = null;
|
let startTransactionTime = null;
|
||||||
const [patchRequest$, emptyRequest$] = partition((request: PatchRequest) => isNotEmpty(request.body))(hrefObs.pipe(
|
const [patchRequest$, emptyRequest$] = partition((request: PatchRequestDefinition) => isNotEmpty(request.body))(hrefObs.pipe(
|
||||||
flatMap((endpointURL: string) => {
|
flatMap((endpointURL: string) => {
|
||||||
return this.store.select(jsonPatchOperationsByResourceType(resourceType)).pipe(
|
return this.store.select(jsonPatchOperationsByResourceType(resourceType)).pipe(
|
||||||
take(1),
|
take(1),
|
||||||
@@ -78,20 +69,20 @@ export class JsonPatchOperationsService<ResponseDefinitionDomain> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new SubmissionPatchRequest(this.requestService.generateRequestId(), endpointURL, body);
|
return this.getRequestInstance(this.requestService.generateRequestId(), endpointURL, body);
|
||||||
}));
|
}));
|
||||||
})));
|
})));
|
||||||
|
|
||||||
return observableMerge(
|
return observableMerge(
|
||||||
emptyRequest$.pipe(
|
emptyRequest$.pipe(
|
||||||
filter((request: PatchRequest) => isEmpty(request.body)),
|
filter((request: PatchRequestDefinition) => isEmpty(request.body)),
|
||||||
tap(() => startTransactionTime = null),
|
tap(() => startTransactionTime = null),
|
||||||
map(() => null)),
|
map(() => null)),
|
||||||
patchRequest$.pipe(
|
patchRequest$.pipe(
|
||||||
filter((request: PatchRequest) => isNotEmpty(request.body)),
|
filter((request: PatchRequestDefinition) => isNotEmpty(request.body)),
|
||||||
tap(() => this.store.dispatch(new StartTransactionPatchOperationsAction(resourceType, resourceId, startTransactionTime))),
|
tap(() => this.store.dispatch(new StartTransactionPatchOperationsAction(resourceType, resourceId, startTransactionTime))),
|
||||||
tap((request: PatchRequest) => this.requestService.configure(request, true)),
|
tap((request: PatchRequestDefinition) => this.requestService.configure(request, true)),
|
||||||
flatMap((request: PatchRequest) => {
|
flatMap((request: PatchRequestDefinition) => {
|
||||||
const [successResponse$, errorResponse$] = partition((response: RestResponse) => response.isSuccessful)(this.responseCache.get(request.href).pipe(
|
const [successResponse$, errorResponse$] = partition((response: RestResponse) => response.isSuccessful)(this.responseCache.get(request.href).pipe(
|
||||||
filter((entry: ResponseCacheEntry) => startTransactionTime < entry.timeAdded),
|
filter((entry: ResponseCacheEntry) => startTransactionTime < entry.timeAdded),
|
||||||
take(1),
|
take(1),
|
||||||
@@ -110,11 +101,15 @@ export class JsonPatchOperationsService<ResponseDefinitionDomain> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected getRequestInstance(uuid: string, href: string, body?: any): PatchRequestDefinition {
|
||||||
|
return new this.patchRequestConstructor(uuid, href, body);
|
||||||
|
}
|
||||||
|
|
||||||
protected getEndpointByIDHref(endpoint, resourceID): string {
|
protected getEndpointByIDHref(endpoint, resourceID): string {
|
||||||
return isNotEmpty(resourceID) ? `${endpoint}/${resourceID}` : `${endpoint}`;
|
return isNotEmpty(resourceID) ? `${endpoint}/${resourceID}` : `${endpoint}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
public jsonPatchByResourceType(linkName: string, scopeId: string, resourceType: string,) {
|
public jsonPatchByResourceType(linkName: string, scopeId: string, resourceType: string): Observable<ResponseDefinitionDomain> {
|
||||||
const href$ = this.halService.getEndpoint(linkName).pipe(
|
const href$ = this.halService.getEndpoint(linkName).pipe(
|
||||||
filter((href: string) => isNotEmpty(href)),
|
filter((href: string) => isNotEmpty(href)),
|
||||||
distinctUntilChanged(),
|
distinctUntilChanged(),
|
||||||
@@ -123,7 +118,7 @@ export class JsonPatchOperationsService<ResponseDefinitionDomain> {
|
|||||||
return this.submitJsonPatchOperations(href$, resourceType);
|
return this.submitJsonPatchOperations(href$, resourceType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public jsonPatchByResourceID(linkName: string, scopeId: string, resourceType: string, resourceId: string) {
|
public jsonPatchByResourceID(linkName: string, scopeId: string, resourceType: string, resourceId: string): Observable<ResponseDefinitionDomain> {
|
||||||
const hrefObs = this.halService.getEndpoint(linkName).pipe(
|
const hrefObs = this.halService.getEndpoint(linkName).pipe(
|
||||||
filter((href: string) => isNotEmpty(href)),
|
filter((href: string) => isNotEmpty(href)),
|
||||||
distinctUntilChanged(),
|
distinctUntilChanged(),
|
||||||
|
@@ -1,11 +1,5 @@
|
|||||||
import { autoserialize } from 'cerialize';
|
import { ConfigObject } from '../config/models/config.model';
|
||||||
|
import { SubmissionObject } from '../submission/models/submission-object.model';
|
||||||
|
|
||||||
export class SubmitDataResponseDefinitionObject {
|
export type SubmitDataResponseDefinitionObject
|
||||||
|
= Array<SubmissionObject | ConfigObject | string>;
|
||||||
@autoserialize
|
|
||||||
public name: string;
|
|
||||||
|
|
||||||
@autoserialize
|
|
||||||
public type: string;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
@@ -0,0 +1,27 @@
|
|||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
|
||||||
|
import { Store } from '@ngrx/store';
|
||||||
|
|
||||||
|
import { ResponseCacheService } from '../cache/response-cache.service';
|
||||||
|
import { RequestService } from '../data/request.service';
|
||||||
|
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||||
|
import { JsonPatchOperationsService } from '../json-patch/json-patch-operations.service';
|
||||||
|
import { SubmitDataResponseDefinitionObject } from '../shared/submit-data-response-definition.model';
|
||||||
|
import { SubmissionPatchRequest } from '../data/request.models';
|
||||||
|
import { CoreState } from '../core.reducers';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class SubmissionJsonPatchOperationsService extends JsonPatchOperationsService<SubmitDataResponseDefinitionObject, SubmissionPatchRequest> {
|
||||||
|
protected linkPath = '';
|
||||||
|
protected patchRequestConstructor = SubmissionPatchRequest;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
protected responseCache: ResponseCacheService,
|
||||||
|
protected requestService: RequestService,
|
||||||
|
protected store: Store<CoreState>,
|
||||||
|
protected halService: HALEndpointService) {
|
||||||
|
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -10,22 +10,8 @@ import {
|
|||||||
SimpleChanges
|
SimpleChanges
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { FormControl } from '@angular/forms';
|
import { FormControl } from '@angular/forms';
|
||||||
import { combineLatest, Observable, Subscription } from 'rxjs';
|
|
||||||
|
|
||||||
import { isNullOrUndefined } from 'util';
|
import { combineLatest, Observable, Subscription } from 'rxjs';
|
||||||
import { Collection } from '../../../core/shared/collection.model';
|
|
||||||
import { CommunityDataService } from '../../../core/data/community-data.service';
|
|
||||||
import { Community } from '../../../core/shared/community.model';
|
|
||||||
import { hasValue, isNotEmpty } from '../../../shared/empty.util';
|
|
||||||
import { RemoteData } from '../../../core/data/remote-data';
|
|
||||||
import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder/json-patch-operation-path-combiner';
|
|
||||||
import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/json-patch-operations-builder';
|
|
||||||
import { Workspaceitem } from '../../../core/submission/models/workspaceitem.model';
|
|
||||||
import { PaginatedList } from '../../../core/data/paginated-list';
|
|
||||||
import { JsonPatchOperationsService } from '../../../core/json-patch/json-patch-operations.service';
|
|
||||||
import { SubmitDataResponseDefinitionObject } from '../../../core/shared/submit-data-response-definition.model';
|
|
||||||
import { SubmissionService } from '../../submission.service';
|
|
||||||
import { SubmissionObject } from '../../../core/submission/models/submission-object.model';
|
|
||||||
import {
|
import {
|
||||||
debounceTime,
|
debounceTime,
|
||||||
distinctUntilChanged,
|
distinctUntilChanged,
|
||||||
@@ -39,6 +25,20 @@ import {
|
|||||||
tap
|
tap
|
||||||
} from 'rxjs/operators';
|
} from 'rxjs/operators';
|
||||||
|
|
||||||
|
import { isNullOrUndefined } from 'util';
|
||||||
|
import { Collection } from '../../../core/shared/collection.model';
|
||||||
|
import { CommunityDataService } from '../../../core/data/community-data.service';
|
||||||
|
import { Community } from '../../../core/shared/community.model';
|
||||||
|
import { hasValue, isNotEmpty } from '../../../shared/empty.util';
|
||||||
|
import { RemoteData } from '../../../core/data/remote-data';
|
||||||
|
import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder/json-patch-operation-path-combiner';
|
||||||
|
import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/json-patch-operations-builder';
|
||||||
|
import { Workspaceitem } from '../../../core/submission/models/workspaceitem.model';
|
||||||
|
import { PaginatedList } from '../../../core/data/paginated-list';
|
||||||
|
import { SubmissionService } from '../../submission.service';
|
||||||
|
import { SubmissionObject } from '../../../core/submission/models/submission-object.model';
|
||||||
|
import { SubmissionJsonPatchOperationsService } from '../../../core/submission/submission-json-patch-operations.service';
|
||||||
|
|
||||||
interface CollectionListEntryItem {
|
interface CollectionListEntryItem {
|
||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
@@ -82,7 +82,7 @@ export class SubmissionFormCollectionComponent implements OnChanges, OnInit {
|
|||||||
constructor(protected cdr: ChangeDetectorRef,
|
constructor(protected cdr: ChangeDetectorRef,
|
||||||
private communityDataService: CommunityDataService,
|
private communityDataService: CommunityDataService,
|
||||||
private operationsBuilder: JsonPatchOperationsBuilder,
|
private operationsBuilder: JsonPatchOperationsBuilder,
|
||||||
private operationsService: JsonPatchOperationsService<SubmitDataResponseDefinitionObject>,
|
private operationsService: SubmissionJsonPatchOperationsService,
|
||||||
private submissionService: SubmissionService) {
|
private submissionService: SubmissionService) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -8,12 +8,11 @@ import { SectionsService } from '../../sections/sections.service';
|
|||||||
import { hasValue, isEmpty, isNotEmpty } from '../../../shared/empty.util';
|
import { hasValue, isEmpty, isNotEmpty } from '../../../shared/empty.util';
|
||||||
import { Workspaceitem } from '../../../core/submission/models/workspaceitem.model';
|
import { Workspaceitem } from '../../../core/submission/models/workspaceitem.model';
|
||||||
import { normalizeSectionData } from '../../../core/submission/models/workspaceitem-sections.model';
|
import { normalizeSectionData } from '../../../core/submission/models/workspaceitem-sections.model';
|
||||||
import { JsonPatchOperationsService } from '../../../core/json-patch/json-patch-operations.service';
|
|
||||||
import { SubmitDataResponseDefinitionObject } from '../../../core/shared/submit-data-response-definition.model';
|
|
||||||
import { SubmissionService } from '../../submission.service';
|
import { SubmissionService } from '../../submission.service';
|
||||||
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
||||||
import { UploaderOptions } from '../../../shared/uploader/uploader-options.model';
|
import { UploaderOptions } from '../../../shared/uploader/uploader-options.model';
|
||||||
import parseSectionErrors from '../../utils/parseSectionErrors';
|
import parseSectionErrors from '../../utils/parseSectionErrors';
|
||||||
|
import { SubmissionJsonPatchOperationsService } from '../../../core/submission/submission-json-patch-operations.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-submission-upload-files',
|
selector: 'ds-submission-upload-files',
|
||||||
@@ -42,7 +41,7 @@ export class SubmissionUploadFilesComponent implements OnChanges {
|
|||||||
};
|
};
|
||||||
|
|
||||||
constructor(private notificationsService: NotificationsService,
|
constructor(private notificationsService: NotificationsService,
|
||||||
private operationsService: JsonPatchOperationsService<SubmitDataResponseDefinitionObject>,
|
private operationsService: SubmissionJsonPatchOperationsService,
|
||||||
private sectionService: SectionsService,
|
private sectionService: SectionsService,
|
||||||
private submissionService: SubmissionService,
|
private submissionService: SubmissionService,
|
||||||
private translate: TranslateService) {
|
private translate: TranslateService) {
|
||||||
|
@@ -31,8 +31,6 @@ import {
|
|||||||
import { SectionsService } from '../sections/sections.service';
|
import { SectionsService } from '../sections/sections.service';
|
||||||
import { isEmpty, isNotEmpty, isNotUndefined } from '../../shared/empty.util';
|
import { isEmpty, isNotEmpty, isNotUndefined } from '../../shared/empty.util';
|
||||||
import { Workspaceitem } from '../../core/submission/models/workspaceitem.model';
|
import { Workspaceitem } from '../../core/submission/models/workspaceitem.model';
|
||||||
import { JsonPatchOperationsService } from '../../core/json-patch/json-patch-operations.service';
|
|
||||||
import { SubmitDataResponseDefinitionObject } from '../../core/shared/submit-data-response-definition.model';
|
|
||||||
import { SubmissionService } from '../submission.service';
|
import { SubmissionService } from '../submission.service';
|
||||||
import { Workflowitem } from '../../core/submission/models/workflowitem.model';
|
import { Workflowitem } from '../../core/submission/models/workflowitem.model';
|
||||||
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
||||||
@@ -45,6 +43,7 @@ import parseSectionErrors from '../utils/parseSectionErrors';
|
|||||||
import { WorkspaceitemSectionsObject } from '../../core/submission/models/workspaceitem-sections.model';
|
import { WorkspaceitemSectionsObject } from '../../core/submission/models/workspaceitem-sections.model';
|
||||||
import { WorkspaceitemSectionUploadObject } from '../../core/submission/models/workspaceitem-section-upload.model';
|
import { WorkspaceitemSectionUploadObject } from '../../core/submission/models/workspaceitem-section-upload.model';
|
||||||
import { SectionsType } from '../sections/sections-type';
|
import { SectionsType } from '../sections/sections-type';
|
||||||
|
import { SubmissionJsonPatchOperationsService } from '../../core/submission/submission-json-patch-operations.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SubmissionObjectEffects {
|
export class SubmissionObjectEffects {
|
||||||
@@ -199,7 +198,7 @@ export class SubmissionObjectEffects {
|
|||||||
|
|
||||||
constructor(private actions$: Actions,
|
constructor(private actions$: Actions,
|
||||||
private notificationsService: NotificationsService,
|
private notificationsService: NotificationsService,
|
||||||
private operationsService: JsonPatchOperationsService<SubmitDataResponseDefinitionObject>,
|
private operationsService: SubmissionJsonPatchOperationsService,
|
||||||
private sectionService: SectionsService,
|
private sectionService: SectionsService,
|
||||||
private store$: Store<any>,
|
private store$: Store<any>,
|
||||||
private submissionService: SubmissionService,
|
private submissionService: SubmissionService,
|
||||||
|
@@ -1,23 +1,24 @@
|
|||||||
import { ChangeDetectorRef, Component, Input, OnChanges, OnInit } from '@angular/core';
|
import { ChangeDetectorRef, Component, Input, OnChanges, OnInit } from '@angular/core';
|
||||||
|
|
||||||
|
import { filter, first } from 'rxjs/operators';
|
||||||
|
import { DynamicFormControlModel, } from '@ng-dynamic-forms/core';
|
||||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
||||||
|
|
||||||
import { SectionUploadService } from '../section-upload.service';
|
import { SectionUploadService } from '../section-upload.service';
|
||||||
import { isNotEmpty, isNotNull, isNotUndefined } from '../../../../shared/empty.util';
|
import { isNotEmpty, isNotNull, isNotUndefined } from '../../../../shared/empty.util';
|
||||||
import { DynamicFormControlModel, } from '@ng-dynamic-forms/core';
|
|
||||||
|
|
||||||
import { FormService } from '../../../../shared/form/form.service';
|
import { FormService } from '../../../../shared/form/form.service';
|
||||||
import { JsonPatchOperationsBuilder } from '../../../../core/json-patch/builder/json-patch-operations-builder';
|
import { JsonPatchOperationsBuilder } from '../../../../core/json-patch/builder/json-patch-operations-builder';
|
||||||
import { JsonPatchOperationPathCombiner } from '../../../../core/json-patch/builder/json-patch-operation-path-combiner';
|
import { JsonPatchOperationPathCombiner } from '../../../../core/json-patch/builder/json-patch-operation-path-combiner';
|
||||||
|
|
||||||
import { WorkspaceitemSectionUploadFileObject } from '../../../../core/submission/models/workspaceitem-section-upload-file.model';
|
import { WorkspaceitemSectionUploadFileObject } from '../../../../core/submission/models/workspaceitem-section-upload-file.model';
|
||||||
import { SubmissionFormsModel } from '../../../../core/config/models/config-submission-forms.model';
|
import { SubmissionFormsModel } from '../../../../core/config/models/config-submission-forms.model';
|
||||||
import { deleteProperty } from '../../../../shared/object.util';
|
import { deleteProperty } from '../../../../shared/object.util';
|
||||||
import { dateToGMTString } from '../../../../shared/date.util';
|
import { dateToGMTString } from '../../../../shared/date.util';
|
||||||
import { JsonPatchOperationsService } from '../../../../core/json-patch/json-patch-operations.service';
|
|
||||||
import { SubmitDataResponseDefinitionObject } from '../../../../core/shared/submit-data-response-definition.model';
|
|
||||||
import { SubmissionService } from '../../../submission.service';
|
import { SubmissionService } from '../../../submission.service';
|
||||||
import { FileService } from '../../../../core/shared/file.service';
|
import { FileService } from '../../../../core/shared/file.service';
|
||||||
import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service';
|
import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service';
|
||||||
import { filter, first } from 'rxjs/operators';
|
import { SubmissionJsonPatchOperationsService } from '../../../../core/submission/submission-json-patch-operations.service';
|
||||||
|
import { SubmissionObject } from '../../../../core/submission/models/submission-object.model';
|
||||||
|
import { WorkspaceitemSectionUploadObject } from '../../../../core/submission/models/workspaceitem-section-upload.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-submission-upload-section-file',
|
selector: 'ds-submission-upload-section-file',
|
||||||
@@ -52,7 +53,7 @@ export class UploadSectionFileComponent implements OnChanges, OnInit {
|
|||||||
private halService: HALEndpointService,
|
private halService: HALEndpointService,
|
||||||
private modalService: NgbModal,
|
private modalService: NgbModal,
|
||||||
private operationsBuilder: JsonPatchOperationsBuilder,
|
private operationsBuilder: JsonPatchOperationsBuilder,
|
||||||
private operationsService: JsonPatchOperationsService<SubmitDataResponseDefinitionObject>,
|
private operationsService: SubmissionJsonPatchOperationsService,
|
||||||
private submissionService: SubmissionService,
|
private submissionService: SubmissionService,
|
||||||
private uploadService: SectionUploadService) {
|
private uploadService: SectionUploadService) {
|
||||||
this.readMode = true;
|
this.readMode = true;
|
||||||
@@ -166,14 +167,14 @@ export class UploadSectionFileComponent implements OnChanges, OnInit {
|
|||||||
this.submissionId,
|
this.submissionId,
|
||||||
this.pathCombiner.rootElement,
|
this.pathCombiner.rootElement,
|
||||||
this.pathCombiner.subRootElement)
|
this.pathCombiner.subRootElement)
|
||||||
.subscribe((result) => {
|
.subscribe((result: SubmissionObject[]) => {
|
||||||
Object.keys(result[0].sections.upload.files)
|
Object.keys((result[0].sections.upload as WorkspaceitemSectionUploadObject).files )
|
||||||
.filter((key) => result[0].sections.upload.files[key].uuid === this.fileId)
|
.filter((key) => (result[0].sections.upload as WorkspaceitemSectionUploadObject).files[key].uuid === this.fileId)
|
||||||
.forEach((key) => this.uploadService.updateFileData(
|
.forEach((key) => this.uploadService.updateFileData(
|
||||||
this.submissionId,
|
this.submissionId,
|
||||||
this.sectionId,
|
this.sectionId,
|
||||||
this.fileId,
|
this.fileId,
|
||||||
result[0].sections.upload.files[key]));
|
(result[0].sections.upload as WorkspaceitemSectionUploadObject).files[key]));
|
||||||
this.switchMode();
|
this.switchMode();
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user