diff --git a/src/app/access-control/bulk-access/browse/bulk-access-browse.component.ts b/src/app/access-control/bulk-access/browse/bulk-access-browse.component.ts index a91cdf35df..e6dba0cafe 100644 --- a/src/app/access-control/bulk-access/browse/bulk-access-browse.component.ts +++ b/src/app/access-control/bulk-access/browse/bulk-access-browse.component.ts @@ -16,7 +16,56 @@ import { PaginationComponentOptions } from '../../../shared/pagination/paginatio @Component({ selector: 'ds-bulk-access-browse', - templateUrl: './bulk-access-browse.component.html', + template: ` + + + +
+ +
+
+ + +
+
+
+
+ + +
+
+
+
+ `, styleUrls: ['./bulk-access-browse.component.scss'], providers: [ { @@ -44,8 +93,7 @@ export class BulkAccessBrowseComponent implements OnInit { paginationOptions: PaginationComponentOptions; private subs: Subscription[] = []; - constructor(private selectableListService: SelectableListService) { - } + constructor(private selectableListService: SelectableListService) {} ngOnInit(): void { this.paginationOptions = Object.assign(new PaginationComponentOptions(), { diff --git a/src/app/item-page/edit-item-page/item-access-control/item-access-control.component.ts b/src/app/item-page/edit-item-page/item-access-control/item-access-control.component.ts index 096c66577a..874b624494 100644 --- a/src/app/item-page/edit-item-page/item-access-control/item-access-control.component.ts +++ b/src/app/item-page/edit-item-page/item-access-control/item-access-control.component.ts @@ -1,13 +1,10 @@ import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; -import { ItemAccessControlService } from './item-access-control.service'; -import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { map } from 'rxjs/operators'; import { getFirstSucceededRemoteData } from '../../../core/shared/operators'; import { RemoteData } from '../../../core/data/remote-data'; import { Item } from '../../../core/shared/item.model'; import { ActivatedRoute } from '@angular/router'; -import { SelectableListService } from '../../../shared/object-list/selectable-list/selectable-list.service'; @Component({ selector: 'ds-item-access-control', diff --git a/src/app/shared/access-control-form-container/access-control-form-container.component.html b/src/app/shared/access-control-form-container/access-control-form-container.component.html index bcf385f0d4..71175ce588 100644 --- a/src/app/shared/access-control-form-container/access-control-form-container.component.html +++ b/src/app/shared/access-control-form-container/access-control-form-container.component.html @@ -3,10 +3,6 @@
- - - -
@@ -95,7 +91,8 @@ @@ -148,9 +145,9 @@
-
+
-
+
diff --git a/src/app/shared/access-control-form-container/access-control-form-container.component.ts b/src/app/shared/access-control-form-container/access-control-form-container.component.ts index 00030f8474..a2e9cb08ab 100644 --- a/src/app/shared/access-control-form-container/access-control-form-container.component.ts +++ b/src/app/shared/access-control-form-container/access-control-form-container.component.ts @@ -6,9 +6,7 @@ import { AccessControlArrayFormComponent, AccessControlArrayFormModule } from '../access-control-array-form/access-control-array-form.component'; -import { - ItemAccessControlService -} from '../../item-page/edit-item-page/item-access-control/item-access-control.service'; +import { BulkAccessControlService } from './bulk-access-control.service'; import { SelectableListService } from '../object-list/selectable-list/selectable-list.service'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { take } from 'rxjs/operators'; @@ -26,18 +24,21 @@ import { @Component({ selector: 'ds-access-control-form-container', templateUrl: './access-control-form-container.component.html', - styleUrls: ['./access-control-form-container.component.scss'] + styleUrls: [ './access-control-form-container.component.scss' ], + exportAs: 'dsAccessControlForm' }) export class AccessControlFormContainerComponent { @Input() showLimitToSpecificBitstreams = false; @Input() itemRD: RemoteData; + @Input() hideSubmit = false; + @ViewChild('bitstreamAccessCmp', { static: true }) bitstreamAccessCmp: AccessControlArrayFormComponent; @ViewChild('itemAccessCmp', { static: true }) itemAccessCmp: AccessControlArrayFormComponent; constructor( - private itemAccessControlService: ItemAccessControlService, + private bulkAccessControlService: BulkAccessControlService, private selectableListService: SelectableListService, protected modalService: NgbModal, private cdr: ChangeDetectorRef @@ -45,10 +46,18 @@ export class AccessControlFormContainerComponent { state = initialState; - dropdownData$ = this.itemAccessControlService.dropdownData$.pipe( + dropdownData$ = this.bulkAccessControlService.dropdownData$.pipe( shareReplay(1) ); + getFormValue() { + return { + bitstream: this.bitstreamAccessCmp.getValue(), + item: this.itemAccessCmp.getValue(), + state: this.state + }; + } + reset() { this.bitstreamAccessCmp.reset(); this.itemAccessCmp.reset(); @@ -59,11 +68,18 @@ export class AccessControlFormContainerComponent { const bitstreamAccess = this.bitstreamAccessCmp.getValue(); const itemAccess = this.itemAccessCmp.getValue(); - this.itemAccessControlService.execute({ + const { file } = this.bulkAccessControlService.createPayloadFile({ bitstreamAccess, itemAccess, state: this.state }); + + this.bulkAccessControlService.executeScript( + [ this.itemRD.payload.uuid ], + file + ).pipe(take(1)).subscribe((res) => { + console.log('success', res); + }); } handleStatusChange(type: 'item' | 'bitstream', active: boolean) { @@ -110,9 +126,18 @@ const initialState = { @NgModule({ - imports: [ CommonModule, AccessControlArrayFormModule, SharedModule, TranslateModule, UiSwitchModule ], - exports: [AccessControlFormContainerComponent], - declarations: [ AccessControlFormContainerComponent, ItemAccessControlSelectBitstreamsModalComponent ], + imports: [ + CommonModule, + AccessControlArrayFormModule, + SharedModule, + TranslateModule, + UiSwitchModule + ], + declarations: [ + AccessControlFormContainerComponent, + ItemAccessControlSelectBitstreamsModalComponent + ], + exports: [ AccessControlFormContainerComponent ], }) export class AccessControlFormContainerModule {} diff --git a/src/app/item-page/edit-item-page/item-access-control/item-access-control.service.ts b/src/app/shared/access-control-form-container/bulk-access-control.service.ts similarity index 66% rename from src/app/item-page/edit-item-page/item-access-control/item-access-control.service.ts rename to src/app/shared/access-control-form-container/bulk-access-control.service.ts index 6bdc523aa8..85ec05cd60 100644 --- a/src/app/item-page/edit-item-page/item-access-control/item-access-control.service.ts +++ b/src/app/shared/access-control-form-container/bulk-access-control.service.ts @@ -1,6 +1,8 @@ import { Injectable } from '@angular/core'; import { Observable, of } from 'rxjs'; -import { AccessControlItem } from '../../../core/shared/bulk-access-condition-options.model'; +import { AccessControlItem } from '../../core/shared/bulk-access-condition-options.model'; +import { ScriptDataService } from '../../core/data/processes/script-data.service'; +import { ProcessParameter } from '../../process-page/processes/process-parameter.model'; export interface AccessControlDropdownDataResponse { id: string; @@ -9,11 +11,12 @@ export interface AccessControlDropdownDataResponse { } @Injectable({ providedIn: 'root' }) -export class ItemAccessControlService { +export class BulkAccessControlService { + constructor(private scriptService: ScriptDataService) {} + dropdownData$: Observable = of(accessControlDropdownData); - - execute(payload: any) { + createPayloadFile(payload: any) { console.log('execute', payload); const blob = new Blob([JSON.stringify(payload, null, 2)], { @@ -25,7 +28,19 @@ export class ItemAccessControlService { }); const url = URL.createObjectURL(file); - window.open(url, '_blank'); + window.open(url, '_blank'); // remove this later + + return { url, file }; + } + + executeScript(uuids: string[], file: File) { + console.log('execute', { uuids, file }); + + const params: ProcessParameter[] = [ + { name: 'uuid', value: uuids.join(',') }, + ]; + + return this.scriptService.invoke('bulk-access-control', params, [file]); } }