mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-08 02:24:11 +00:00
ESLint: fix dangling commas
This commit is contained in:
@@ -7,10 +7,10 @@ import { GROUP_EDIT_PATH } from './access-control-routing-paths';
|
|||||||
import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver';
|
import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver';
|
||||||
import { GroupPageGuard } from './group-registry/group-page.guard';
|
import { GroupPageGuard } from './group-registry/group-page.guard';
|
||||||
import {
|
import {
|
||||||
GroupAdministratorGuard
|
GroupAdministratorGuard,
|
||||||
} from '../core/data/feature-authorization/feature-authorization-guard/group-administrator.guard';
|
} from '../core/data/feature-authorization/feature-authorization-guard/group-administrator.guard';
|
||||||
import {
|
import {
|
||||||
SiteAdministratorGuard
|
SiteAdministratorGuard,
|
||||||
} from '../core/data/feature-authorization/feature-authorization-guard/site-administrator.guard';
|
} from '../core/data/feature-authorization/feature-authorization-guard/site-administrator.guard';
|
||||||
import { BulkAccessComponent } from './bulk-access/bulk-access.component';
|
import { BulkAccessComponent } from './bulk-access/bulk-access.component';
|
||||||
|
|
||||||
@@ -21,49 +21,49 @@ import { BulkAccessComponent } from './bulk-access/bulk-access.component';
|
|||||||
path: 'epeople',
|
path: 'epeople',
|
||||||
component: EPeopleRegistryComponent,
|
component: EPeopleRegistryComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
breadcrumb: I18nBreadcrumbResolver
|
breadcrumb: I18nBreadcrumbResolver,
|
||||||
},
|
},
|
||||||
data: { title: 'admin.access-control.epeople.title', breadcrumbKey: 'admin.access-control.epeople' },
|
data: { title: 'admin.access-control.epeople.title', breadcrumbKey: 'admin.access-control.epeople' },
|
||||||
canActivate: [SiteAdministratorGuard]
|
canActivate: [SiteAdministratorGuard],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: GROUP_EDIT_PATH,
|
path: GROUP_EDIT_PATH,
|
||||||
component: GroupsRegistryComponent,
|
component: GroupsRegistryComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
breadcrumb: I18nBreadcrumbResolver
|
breadcrumb: I18nBreadcrumbResolver,
|
||||||
},
|
},
|
||||||
data: { title: 'admin.access-control.groups.title', breadcrumbKey: 'admin.access-control.groups' },
|
data: { title: 'admin.access-control.groups.title', breadcrumbKey: 'admin.access-control.groups' },
|
||||||
canActivate: [GroupAdministratorGuard]
|
canActivate: [GroupAdministratorGuard],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: `${GROUP_EDIT_PATH}/newGroup`,
|
path: `${GROUP_EDIT_PATH}/newGroup`,
|
||||||
component: GroupFormComponent,
|
component: GroupFormComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
breadcrumb: I18nBreadcrumbResolver
|
breadcrumb: I18nBreadcrumbResolver,
|
||||||
},
|
},
|
||||||
data: { title: 'admin.access-control.groups.title.addGroup', breadcrumbKey: 'admin.access-control.groups.addGroup' },
|
data: { title: 'admin.access-control.groups.title.addGroup', breadcrumbKey: 'admin.access-control.groups.addGroup' },
|
||||||
canActivate: [GroupAdministratorGuard]
|
canActivate: [GroupAdministratorGuard],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: `${GROUP_EDIT_PATH}/:groupId`,
|
path: `${GROUP_EDIT_PATH}/:groupId`,
|
||||||
component: GroupFormComponent,
|
component: GroupFormComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
breadcrumb: I18nBreadcrumbResolver
|
breadcrumb: I18nBreadcrumbResolver,
|
||||||
},
|
},
|
||||||
data: { title: 'admin.access-control.groups.title.singleGroup', breadcrumbKey: 'admin.access-control.groups.singleGroup' },
|
data: { title: 'admin.access-control.groups.title.singleGroup', breadcrumbKey: 'admin.access-control.groups.singleGroup' },
|
||||||
canActivate: [GroupPageGuard]
|
canActivate: [GroupPageGuard],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'bulk-access',
|
path: 'bulk-access',
|
||||||
component: BulkAccessComponent,
|
component: BulkAccessComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
breadcrumb: I18nBreadcrumbResolver
|
breadcrumb: I18nBreadcrumbResolver,
|
||||||
},
|
},
|
||||||
data: { title: 'admin.access-control.bulk-access.title', breadcrumbKey: 'admin.access-control.bulk-access' },
|
data: { title: 'admin.access-control.bulk-access.title', breadcrumbKey: 'admin.access-control.bulk-access' },
|
||||||
canActivate: [SiteAdministratorGuard]
|
canActivate: [SiteAdministratorGuard],
|
||||||
},
|
},
|
||||||
])
|
]),
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* Routing module for the AccessControl section of the admin sidebar
|
* Routing module for the AccessControl section of the admin sidebar
|
||||||
|
@@ -55,9 +55,9 @@ export const ValidateEmailErrorStateMatcher: DynamicErrorMessagesMatcher =
|
|||||||
providers: [
|
providers: [
|
||||||
{
|
{
|
||||||
provide: DYNAMIC_ERROR_MESSAGES_MATCHER,
|
provide: DYNAMIC_ERROR_MESSAGES_MATCHER,
|
||||||
useValue: ValidateEmailErrorStateMatcher
|
useValue: ValidateEmailErrorStateMatcher,
|
||||||
},
|
},
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* This module handles all components related to the access control pages
|
* This module handles all components related to the access control pages
|
||||||
|
@@ -31,13 +31,13 @@ describe('BulkAccessBrowseComponent', () => {
|
|||||||
imports: [
|
imports: [
|
||||||
NgbAccordionModule,
|
NgbAccordionModule,
|
||||||
NgbNavModule,
|
NgbNavModule,
|
||||||
TranslateModule.forRoot()
|
TranslateModule.forRoot(),
|
||||||
],
|
],
|
||||||
declarations: [BulkAccessBrowseComponent],
|
declarations: [BulkAccessBrowseComponent],
|
||||||
providers: [ { provide: SelectableListService, useValue: selectableListService }, ],
|
providers: [ { provide: SelectableListService, useValue: selectableListService } ],
|
||||||
schemas: [
|
schemas: [
|
||||||
NO_ERRORS_SCHEMA
|
NO_ERRORS_SCHEMA,
|
||||||
]
|
],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ describe('BulkAccessBrowseComponent', () => {
|
|||||||
'elementsPerPage': 5,
|
'elementsPerPage': 5,
|
||||||
'totalElements': 2,
|
'totalElements': 2,
|
||||||
'totalPages': 1,
|
'totalPages': 1,
|
||||||
'currentPage': 1
|
'currentPage': 1,
|
||||||
}), [selected1, selected2]) ;
|
}), [selected1, selected2]) ;
|
||||||
const rd = createSuccessfulRemoteDataObject(list);
|
const rd = createSuccessfulRemoteDataObject(list);
|
||||||
|
|
||||||
|
@@ -22,9 +22,9 @@ import { hasValue } from '../../../shared/empty.util';
|
|||||||
providers: [
|
providers: [
|
||||||
{
|
{
|
||||||
provide: SEARCH_CONFIG_SERVICE,
|
provide: SEARCH_CONFIG_SERVICE,
|
||||||
useClass: SearchConfigurationService
|
useClass: SearchConfigurationService,
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
export class BulkAccessBrowseComponent implements OnInit, OnDestroy {
|
export class BulkAccessBrowseComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ export class BulkAccessBrowseComponent implements OnInit, OnDestroy {
|
|||||||
paginationOptions$: BehaviorSubject<PaginationComponentOptions> = new BehaviorSubject<PaginationComponentOptions>(Object.assign(new PaginationComponentOptions(), {
|
paginationOptions$: BehaviorSubject<PaginationComponentOptions> = new BehaviorSubject<PaginationComponentOptions>(Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'bas',
|
id: 'bas',
|
||||||
pageSize: 5,
|
pageSize: 5,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,20 +67,20 @@ export class BulkAccessBrowseComponent implements OnInit, OnDestroy {
|
|||||||
this.subs.push(
|
this.subs.push(
|
||||||
this.selectableListService.getSelectableList(this.listId).pipe(
|
this.selectableListService.getSelectableList(this.listId).pipe(
|
||||||
distinctUntilChanged(),
|
distinctUntilChanged(),
|
||||||
map((list: SelectableListState) => this.generatePaginatedListBySelectedElements(list))
|
map((list: SelectableListState) => this.generatePaginatedListBySelectedElements(list)),
|
||||||
).subscribe(this.objectsSelected$)
|
).subscribe(this.objectsSelected$),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
pageNext() {
|
pageNext() {
|
||||||
this.paginationOptions$.next(Object.assign(new PaginationComponentOptions(), this.paginationOptions$.value, {
|
this.paginationOptions$.next(Object.assign(new PaginationComponentOptions(), this.paginationOptions$.value, {
|
||||||
currentPage: this.paginationOptions$.value.currentPage + 1
|
currentPage: this.paginationOptions$.value.currentPage + 1,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
pagePrev() {
|
pagePrev() {
|
||||||
this.paginationOptions$.next(Object.assign(new PaginationComponentOptions(), this.paginationOptions$.value, {
|
this.paginationOptions$.next(Object.assign(new PaginationComponentOptions(), this.paginationOptions$.value, {
|
||||||
currentPage: this.paginationOptions$.value.currentPage - 1
|
currentPage: this.paginationOptions$.value.currentPage - 1,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,12 +99,12 @@ export class BulkAccessBrowseComponent implements OnInit, OnDestroy {
|
|||||||
elementsPerPage: this.paginationOptions$.value.pageSize,
|
elementsPerPage: this.paginationOptions$.value.pageSize,
|
||||||
totalElements: list?.selection.length,
|
totalElements: list?.selection.length,
|
||||||
totalPages: this.calculatePageCount(this.paginationOptions$.value.pageSize, list?.selection.length),
|
totalPages: this.calculatePageCount(this.paginationOptions$.value.pageSize, list?.selection.length),
|
||||||
currentPage: this.paginationOptions$.value.currentPage
|
currentPage: this.paginationOptions$.value.currentPage,
|
||||||
});
|
});
|
||||||
if (pageInfo.currentPage > pageInfo.totalPages) {
|
if (pageInfo.currentPage > pageInfo.totalPages) {
|
||||||
pageInfo.currentPage = pageInfo.totalPages;
|
pageInfo.currentPage = pageInfo.totalPages;
|
||||||
this.paginationOptions$.next(Object.assign(new PaginationComponentOptions(), this.paginationOptions$.value, {
|
this.paginationOptions$.next(Object.assign(new PaginationComponentOptions(), this.paginationOptions$.value, {
|
||||||
currentPage: pageInfo.currentPage
|
currentPage: pageInfo.currentPage,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
return createSuccessfulRemoteDataObject(buildPaginatedList(pageInfo, list?.selection || []));
|
return createSuccessfulRemoteDataObject(buildPaginatedList(pageInfo, list?.selection || []));
|
||||||
|
@@ -31,35 +31,35 @@ describe('BulkAccessComponent', () => {
|
|||||||
'startDate': {
|
'startDate': {
|
||||||
'year': 2026,
|
'year': 2026,
|
||||||
'month': 5,
|
'month': 5,
|
||||||
'day': 31
|
'day': 31,
|
||||||
},
|
},
|
||||||
'endDate': null
|
'endDate': null,
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
'state': {
|
'state': {
|
||||||
'item': {
|
'item': {
|
||||||
'toggleStatus': true,
|
'toggleStatus': true,
|
||||||
'accessMode': 'replace'
|
'accessMode': 'replace',
|
||||||
},
|
},
|
||||||
'bitstream': {
|
'bitstream': {
|
||||||
'toggleStatus': false,
|
'toggleStatus': false,
|
||||||
'accessMode': '',
|
'accessMode': '',
|
||||||
'changesLimit': '',
|
'changesLimit': '',
|
||||||
'selectedBitstreams': []
|
'selectedBitstreams': [],
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const mockFile = {
|
const mockFile = {
|
||||||
'uuids': [
|
'uuids': [
|
||||||
'1234', '5678'
|
'1234', '5678',
|
||||||
],
|
],
|
||||||
'file': { }
|
'file': { },
|
||||||
};
|
};
|
||||||
|
|
||||||
const mockSettings: any = jasmine.createSpyObj('AccessControlFormContainerComponent', {
|
const mockSettings: any = jasmine.createSpyObj('AccessControlFormContainerComponent', {
|
||||||
getValue: jasmine.createSpy('getValue'),
|
getValue: jasmine.createSpy('getValue'),
|
||||||
reset: jasmine.createSpy('reset')
|
reset: jasmine.createSpy('reset'),
|
||||||
});
|
});
|
||||||
const selection: any[] = [{ indexableObject: { uuid: '1234' } }, { indexableObject: { uuid: '5678' } }];
|
const selection: any[] = [{ indexableObject: { uuid: '1234' } }, { indexableObject: { uuid: '5678' } }];
|
||||||
const selectableListState: SelectableListState = { id: 'test', selection };
|
const selectableListState: SelectableListState = { id: 'test', selection };
|
||||||
@@ -71,15 +71,15 @@ describe('BulkAccessComponent', () => {
|
|||||||
await TestBed.configureTestingModule({
|
await TestBed.configureTestingModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterTestingModule,
|
RouterTestingModule,
|
||||||
TranslateModule.forRoot()
|
TranslateModule.forRoot(),
|
||||||
],
|
],
|
||||||
declarations: [ BulkAccessComponent ],
|
declarations: [ BulkAccessComponent ],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: BulkAccessControlService, useValue: bulkAccessControlServiceMock },
|
{ provide: BulkAccessControlService, useValue: bulkAccessControlServiceMock },
|
||||||
{ provide: NotificationsService, useValue: NotificationsServiceStub },
|
{ provide: NotificationsService, useValue: NotificationsServiceStub },
|
||||||
{ provide: SelectableListService, useValue: selectableListServiceMock }
|
{ provide: SelectableListService, useValue: selectableListServiceMock },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
});
|
});
|
||||||
|
@@ -11,7 +11,7 @@ import { SelectableListService } from '../../shared/object-list/selectable-list/
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-bulk-access',
|
selector: 'ds-bulk-access',
|
||||||
templateUrl: './bulk-access.component.html',
|
templateUrl: './bulk-access.component.html',
|
||||||
styleUrls: ['./bulk-access.component.scss']
|
styleUrls: ['./bulk-access.component.scss'],
|
||||||
})
|
})
|
||||||
export class BulkAccessComponent implements OnInit {
|
export class BulkAccessComponent implements OnInit {
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ export class BulkAccessComponent implements OnInit {
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private bulkAccessControlService: BulkAccessControlService,
|
private bulkAccessControlService: BulkAccessControlService,
|
||||||
private selectableListService: SelectableListService
|
private selectableListService: SelectableListService,
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,8 +45,8 @@ export class BulkAccessComponent implements OnInit {
|
|||||||
this.subs.push(
|
this.subs.push(
|
||||||
this.selectableListService.getSelectableList(this.listId).pipe(
|
this.selectableListService.getSelectableList(this.listId).pipe(
|
||||||
distinctUntilChanged(),
|
distinctUntilChanged(),
|
||||||
map((list: SelectableListState) => this.generateIdListBySelectedElements(list))
|
map((list: SelectableListState) => this.generateIdListBySelectedElements(list)),
|
||||||
).subscribe(this.objectsSelected$)
|
).subscribe(this.objectsSelected$),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,12 +74,12 @@ export class BulkAccessComponent implements OnInit {
|
|||||||
const { file } = this.bulkAccessControlService.createPayloadFile({
|
const { file } = this.bulkAccessControlService.createPayloadFile({
|
||||||
bitstreamAccess,
|
bitstreamAccess,
|
||||||
itemAccess,
|
itemAccess,
|
||||||
state: settings.state
|
state: settings.state,
|
||||||
});
|
});
|
||||||
|
|
||||||
this.bulkAccessControlService.executeScript(
|
this.bulkAccessControlService.executeScript(
|
||||||
this.objectsSelected$.value || [],
|
this.objectsSelected$.value || [],
|
||||||
file
|
file,
|
||||||
).subscribe();
|
).subscribe();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,35 +15,35 @@ describe('BulkAccessSettingsComponent', () => {
|
|||||||
'startDate': {
|
'startDate': {
|
||||||
'year': 2026,
|
'year': 2026,
|
||||||
'month': 5,
|
'month': 5,
|
||||||
'day': 31
|
'day': 31,
|
||||||
},
|
},
|
||||||
'endDate': null
|
'endDate': null,
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
'state': {
|
'state': {
|
||||||
'item': {
|
'item': {
|
||||||
'toggleStatus': true,
|
'toggleStatus': true,
|
||||||
'accessMode': 'replace'
|
'accessMode': 'replace',
|
||||||
},
|
},
|
||||||
'bitstream': {
|
'bitstream': {
|
||||||
'toggleStatus': false,
|
'toggleStatus': false,
|
||||||
'accessMode': '',
|
'accessMode': '',
|
||||||
'changesLimit': '',
|
'changesLimit': '',
|
||||||
'selectedBitstreams': []
|
'selectedBitstreams': [],
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const mockControl: any = jasmine.createSpyObj('AccessControlFormContainerComponent', {
|
const mockControl: any = jasmine.createSpyObj('AccessControlFormContainerComponent', {
|
||||||
getFormValue: jasmine.createSpy('getFormValue'),
|
getFormValue: jasmine.createSpy('getFormValue'),
|
||||||
reset: jasmine.createSpy('reset')
|
reset: jasmine.createSpy('reset'),
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await TestBed.configureTestingModule({
|
await TestBed.configureTestingModule({
|
||||||
imports: [NgbAccordionModule, TranslateModule.forRoot()],
|
imports: [NgbAccordionModule, TranslateModule.forRoot()],
|
||||||
declarations: [BulkAccessSettingsComponent],
|
declarations: [BulkAccessSettingsComponent],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -1,13 +1,13 @@
|
|||||||
import { Component, ViewChild } from '@angular/core';
|
import { Component, ViewChild } from '@angular/core';
|
||||||
import {
|
import {
|
||||||
AccessControlFormContainerComponent
|
AccessControlFormContainerComponent,
|
||||||
} from '../../../shared/access-control-form-container/access-control-form-container.component';
|
} from '../../../shared/access-control-form-container/access-control-form-container.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-bulk-access-settings',
|
selector: 'ds-bulk-access-settings',
|
||||||
templateUrl: 'bulk-access-settings.component.html',
|
templateUrl: 'bulk-access-settings.component.html',
|
||||||
styleUrls: ['./bulk-access-settings.component.scss'],
|
styleUrls: ['./bulk-access-settings.component.scss'],
|
||||||
exportAs: 'dsBulkSettings'
|
exportAs: 'dsBulkSettings',
|
||||||
})
|
})
|
||||||
export class BulkAccessSettingsComponent {
|
export class BulkAccessSettingsComponent {
|
||||||
|
|
||||||
|
@@ -52,7 +52,7 @@ describe('EPeopleRegistryComponent', () => {
|
|||||||
elementsPerPage: this.allEpeople.length,
|
elementsPerPage: this.allEpeople.length,
|
||||||
totalElements: this.allEpeople.length,
|
totalElements: this.allEpeople.length,
|
||||||
totalPages: 1,
|
totalPages: 1,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), this.allEpeople));
|
}), this.allEpeople));
|
||||||
},
|
},
|
||||||
getActiveEPerson(): Observable<EPerson> {
|
getActiveEPerson(): Observable<EPerson> {
|
||||||
@@ -67,7 +67,7 @@ describe('EPeopleRegistryComponent', () => {
|
|||||||
elementsPerPage: [result].length,
|
elementsPerPage: [result].length,
|
||||||
totalElements: [result].length,
|
totalElements: [result].length,
|
||||||
totalPages: 1,
|
totalPages: 1,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), [result]));
|
}), [result]));
|
||||||
}
|
}
|
||||||
if (scope === 'metadata') {
|
if (scope === 'metadata') {
|
||||||
@@ -76,7 +76,7 @@ describe('EPeopleRegistryComponent', () => {
|
|||||||
elementsPerPage: this.allEpeople.length,
|
elementsPerPage: this.allEpeople.length,
|
||||||
totalElements: this.allEpeople.length,
|
totalElements: this.allEpeople.length,
|
||||||
totalPages: 1,
|
totalPages: 1,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), this.allEpeople));
|
}), this.allEpeople));
|
||||||
}
|
}
|
||||||
const result = this.allEpeople.find((ePerson: EPerson) => {
|
const result = this.allEpeople.find((ePerson: EPerson) => {
|
||||||
@@ -86,14 +86,14 @@ describe('EPeopleRegistryComponent', () => {
|
|||||||
elementsPerPage: [result].length,
|
elementsPerPage: [result].length,
|
||||||
totalElements: [result].length,
|
totalElements: [result].length,
|
||||||
totalPages: 1,
|
totalPages: 1,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), [result]));
|
}), [result]));
|
||||||
}
|
}
|
||||||
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo({
|
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo({
|
||||||
elementsPerPage: this.allEpeople.length,
|
elementsPerPage: this.allEpeople.length,
|
||||||
totalElements: this.allEpeople.length,
|
totalElements: this.allEpeople.length,
|
||||||
totalPages: 1,
|
totalPages: 1,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), this.allEpeople));
|
}), this.allEpeople));
|
||||||
},
|
},
|
||||||
deleteEPerson(ePerson: EPerson): Observable<boolean> {
|
deleteEPerson(ePerson: EPerson): Observable<boolean> {
|
||||||
@@ -113,10 +113,10 @@ describe('EPeopleRegistryComponent', () => {
|
|||||||
},
|
},
|
||||||
getEPeoplePageRouterLink(): string {
|
getEPeoplePageRouterLink(): string {
|
||||||
return '/access-control/epeople';
|
return '/access-control/epeople';
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
authorizationService = jasmine.createSpyObj('authorizationService', {
|
authorizationService = jasmine.createSpyObj('authorizationService', {
|
||||||
isAuthorized: observableOf(true)
|
isAuthorized: observableOf(true),
|
||||||
});
|
});
|
||||||
builderService = getMockFormBuilderService();
|
builderService = getMockFormBuilderService();
|
||||||
translateService = getMockTranslateService();
|
translateService = getMockTranslateService();
|
||||||
@@ -127,8 +127,8 @@ describe('EPeopleRegistryComponent', () => {
|
|||||||
TranslateModule.forRoot({
|
TranslateModule.forRoot({
|
||||||
loader: {
|
loader: {
|
||||||
provide: TranslateLoader,
|
provide: TranslateLoader,
|
||||||
useClass: TranslateLoaderMock
|
useClass: TranslateLoaderMock,
|
||||||
}
|
},
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
declarations: [EPeopleRegistryComponent],
|
declarations: [EPeopleRegistryComponent],
|
||||||
@@ -139,9 +139,9 @@ describe('EPeopleRegistryComponent', () => {
|
|||||||
{ provide: FormBuilderService, useValue: builderService },
|
{ provide: FormBuilderService, useValue: builderService },
|
||||||
{ provide: Router, useValue: new RouterStub() },
|
{ provide: Router, useValue: new RouterStub() },
|
||||||
{ provide: RequestService, useValue: jasmine.createSpyObj('requestService', ['removeByHrefSubstring']) },
|
{ provide: RequestService, useValue: jasmine.createSpyObj('requestService', ['removeByHrefSubstring']) },
|
||||||
{ provide: PaginationService, useValue: paginationService }
|
{ provide: PaginationService, useValue: paginationService },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -209,7 +209,7 @@ describe('EPeopleRegistryComponent', () => {
|
|||||||
const editButtons = fixture.debugElement.queryAll(By.css('.access-control-editEPersonButton'));
|
const editButtons = fixture.debugElement.queryAll(By.css('.access-control-editEPersonButton'));
|
||||||
editButtons[0].triggerEventHandler('click', {
|
editButtons[0].triggerEventHandler('click', {
|
||||||
preventDefault: () => {/**/
|
preventDefault: () => {/**/
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
tick();
|
tick();
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
@@ -242,7 +242,7 @@ describe('EPeopleRegistryComponent', () => {
|
|||||||
const deleteButtons = fixture.debugElement.queryAll(By.css('.access-control-deleteEPersonButton'));
|
const deleteButtons = fixture.debugElement.queryAll(By.css('.access-control-deleteEPersonButton'));
|
||||||
deleteButtons[0].triggerEventHandler('click', {
|
deleteButtons[0].triggerEventHandler('click', {
|
||||||
preventDefault: () => {/**/
|
preventDefault: () => {/**/
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
tick();
|
tick();
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
@@ -61,7 +61,7 @@ export class EPeopleRegistryComponent implements OnInit, OnDestroy {
|
|||||||
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'elp',
|
id: 'elp',
|
||||||
pageSize: 5,
|
pageSize: 5,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -131,7 +131,7 @@ export class EPeopleRegistryComponent implements OnInit, OnDestroy {
|
|||||||
epersonDtoModel.ableToDelete = authorized;
|
epersonDtoModel.ableToDelete = authorized;
|
||||||
epersonDtoModel.eperson = eperson;
|
epersonDtoModel.eperson = eperson;
|
||||||
return epersonDtoModel;
|
return epersonDtoModel;
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
})]).pipe(map((dtos: EpersonDtoModel[]) => {
|
})]).pipe(map((dtos: EpersonDtoModel[]) => {
|
||||||
return buildPaginatedList(epeople.pageInfo, dtos);
|
return buildPaginatedList(epeople.pageInfo, dtos);
|
||||||
@@ -161,14 +161,14 @@ export class EPeopleRegistryComponent implements OnInit, OnDestroy {
|
|||||||
const scope: string = data.scope;
|
const scope: string = data.scope;
|
||||||
if (query != null && this.currentSearchQuery !== query) {
|
if (query != null && this.currentSearchQuery !== query) {
|
||||||
this.router.navigate([this.epersonService.getEPeoplePageRouterLink()], {
|
this.router.navigate([this.epersonService.getEPeoplePageRouterLink()], {
|
||||||
queryParamsHandling: 'merge'
|
queryParamsHandling: 'merge',
|
||||||
});
|
});
|
||||||
this.currentSearchQuery = query;
|
this.currentSearchQuery = query;
|
||||||
this.paginationService.resetPage(this.config.id);
|
this.paginationService.resetPage(this.config.id);
|
||||||
}
|
}
|
||||||
if (scope != null && this.currentSearchScope !== scope) {
|
if (scope != null && this.currentSearchScope !== scope) {
|
||||||
this.router.navigate([this.epersonService.getEPeoplePageRouterLink()], {
|
this.router.navigate([this.epersonService.getEPeoplePageRouterLink()], {
|
||||||
queryParamsHandling: 'merge'
|
queryParamsHandling: 'merge',
|
||||||
});
|
});
|
||||||
this.currentSearchScope = scope;
|
this.currentSearchScope = scope;
|
||||||
this.paginationService.resetPage(this.config.id);
|
this.paginationService.resetPage(this.config.id);
|
||||||
@@ -176,15 +176,15 @@ export class EPeopleRegistryComponent implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
return this.epersonService.searchByScope(this.currentSearchScope, this.currentSearchQuery, {
|
return this.epersonService.searchByScope(this.currentSearchScope, this.currentSearchQuery, {
|
||||||
currentPage: findListOptions.currentPage,
|
currentPage: findListOptions.currentPage,
|
||||||
elementsPerPage: findListOptions.pageSize
|
elementsPerPage: findListOptions.pageSize,
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
),
|
),
|
||||||
getAllSucceededRemoteData(),
|
getAllSucceededRemoteData(),
|
||||||
).subscribe((peopleRD) => {
|
).subscribe((peopleRD) => {
|
||||||
this.ePeople$.next(peopleRD.payload);
|
this.ePeople$.next(peopleRD.payload);
|
||||||
this.pageInfoState$.next(peopleRD.payload.pageInfo);
|
this.pageInfoState$.next(peopleRD.payload.pageInfo);
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,7 +194,7 @@ export class EPeopleRegistryComponent implements OnInit, OnDestroy {
|
|||||||
*/
|
*/
|
||||||
isActive(eperson: EPerson): Observable<boolean> {
|
isActive(eperson: EPerson): Observable<boolean> {
|
||||||
return this.getActiveEPerson().pipe(
|
return this.getActiveEPerson().pipe(
|
||||||
map((activeEPerson) => eperson === activeEPerson)
|
map((activeEPerson) => eperson === activeEPerson),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -294,7 +294,7 @@ export class EPeopleRegistryComponent implements OnInit, OnDestroy {
|
|||||||
return this.requestService.setStaleByHrefSubstring(href).pipe(
|
return this.requestService.setStaleByHrefSubstring(href).pipe(
|
||||||
take(1),
|
take(1),
|
||||||
);
|
);
|
||||||
})
|
}),
|
||||||
).subscribe(()=>{
|
).subscribe(()=>{
|
||||||
this.epersonService.cancelEditEPerson();
|
this.epersonService.cancelEditEPerson();
|
||||||
this.isEPersonFormShown = false;
|
this.isEPersonFormShown = false;
|
||||||
|
@@ -2,7 +2,7 @@ import { EPerson } from '../../core/eperson/models/eperson.model';
|
|||||||
import {
|
import {
|
||||||
EPeopleRegistryAction,
|
EPeopleRegistryAction,
|
||||||
EPeopleRegistryActionTypes,
|
EPeopleRegistryActionTypes,
|
||||||
EPeopleRegistryEditEPersonAction
|
EPeopleRegistryEditEPersonAction,
|
||||||
} from './epeople-registry.actions';
|
} from './epeople-registry.actions';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,13 +30,13 @@ export function ePeopleRegistryReducer(state = initialState, action: EPeopleRegi
|
|||||||
|
|
||||||
case EPeopleRegistryActionTypes.EDIT_EPERSON: {
|
case EPeopleRegistryActionTypes.EDIT_EPERSON: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
editEPerson: (action as EPeopleRegistryEditEPersonAction).eperson
|
editEPerson: (action as EPeopleRegistryEditEPersonAction).eperson,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case EPeopleRegistryActionTypes.CANCEL_EDIT_EPERSON: {
|
case EPeopleRegistryActionTypes.CANCEL_EDIT_EPERSON: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
editEPerson: null
|
editEPerson: null,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -106,7 +106,7 @@ describe('EPersonFormComponent', () => {
|
|||||||
},
|
},
|
||||||
getEPersonByEmail(email): Observable<RemoteData<EPerson>> {
|
getEPersonByEmail(email): Observable<RemoteData<EPerson>> {
|
||||||
return createSuccessfulRemoteDataObject$(null);
|
return createSuccessfulRemoteDataObject$(null);
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
builderService = Object.assign(getMockFormBuilderService(),{
|
builderService = Object.assign(getMockFormBuilderService(),{
|
||||||
createFormGroup(formModel, options = null) {
|
createFormGroup(formModel, options = null) {
|
||||||
@@ -169,7 +169,7 @@ describe('EPersonFormComponent', () => {
|
|||||||
},
|
},
|
||||||
isObject(value) {
|
isObject(value) {
|
||||||
return typeof value === 'object' && value !== null;
|
return typeof value === 'object' && value !== null;
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
authService = new AuthServiceStub();
|
authService = new AuthServiceStub();
|
||||||
authorizationService = jasmine.createSpyObj('authorizationService', {
|
authorizationService = jasmine.createSpyObj('authorizationService', {
|
||||||
@@ -178,7 +178,7 @@ describe('EPersonFormComponent', () => {
|
|||||||
});
|
});
|
||||||
groupsDataService = jasmine.createSpyObj('groupsDataService', {
|
groupsDataService = jasmine.createSpyObj('groupsDataService', {
|
||||||
findListByHref: createSuccessfulRemoteDataObject$(createPaginatedList([])),
|
findListByHref: createSuccessfulRemoteDataObject$(createPaginatedList([])),
|
||||||
getGroupRegistryRouterLink: ''
|
getGroupRegistryRouterLink: '',
|
||||||
});
|
});
|
||||||
|
|
||||||
paginationService = new PaginationServiceStub();
|
paginationService = new PaginationServiceStub();
|
||||||
@@ -187,8 +187,8 @@ describe('EPersonFormComponent', () => {
|
|||||||
TranslateModule.forRoot({
|
TranslateModule.forRoot({
|
||||||
loader: {
|
loader: {
|
||||||
provide: TranslateLoader,
|
provide: TranslateLoader,
|
||||||
useClass: TranslateLoaderMock
|
useClass: TranslateLoaderMock,
|
||||||
}
|
},
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
declarations: [EPersonFormComponent],
|
declarations: [EPersonFormComponent],
|
||||||
@@ -202,14 +202,14 @@ describe('EPersonFormComponent', () => {
|
|||||||
{ provide: PaginationService, useValue: paginationService },
|
{ provide: PaginationService, useValue: paginationService },
|
||||||
{ provide: RequestService, useValue: jasmine.createSpyObj('requestService', ['removeByHrefSubstring'])},
|
{ provide: RequestService, useValue: jasmine.createSpyObj('requestService', ['removeByHrefSubstring'])},
|
||||||
{ provide: EpersonRegistrationService, useValue: epersonRegistrationService },
|
{ provide: EpersonRegistrationService, useValue: epersonRegistrationService },
|
||||||
EPeopleRegistryComponent
|
EPeopleRegistryComponent,
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
epersonRegistrationService = jasmine.createSpyObj('epersonRegistrationService', {
|
epersonRegistrationService = jasmine.createSpyObj('epersonRegistrationService', {
|
||||||
registerEmail: createSuccessfulRemoteDataObject$(null)
|
registerEmail: createSuccessfulRemoteDataObject$(null),
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@@ -241,12 +241,12 @@ describe('EPersonFormComponent', () => {
|
|||||||
metadata: {
|
metadata: {
|
||||||
'eperson.firstname': [
|
'eperson.firstname': [
|
||||||
{
|
{
|
||||||
value: firstName
|
value: firstName,
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
'eperson.lastname': [
|
'eperson.lastname': [
|
||||||
{
|
{
|
||||||
value: lastName
|
value: lastName,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -329,7 +329,7 @@ describe('EPersonFormComponent', () => {
|
|||||||
const ePersonServiceWithEperson = Object.assign(ePersonDataServiceStub,{
|
const ePersonServiceWithEperson = Object.assign(ePersonDataServiceStub,{
|
||||||
getEPersonByEmail(): Observable<RemoteData<EPerson>> {
|
getEPersonByEmail(): Observable<RemoteData<EPerson>> {
|
||||||
return createSuccessfulRemoteDataObject$(EPersonMock);
|
return createSuccessfulRemoteDataObject$(EPersonMock);
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
component.formGroup.controls.email.setValue('test@test.com');
|
component.formGroup.controls.email.setValue('test@test.com');
|
||||||
component.formGroup.controls.email.setAsyncValidators(ValidateEmailNotTaken.createValidator(ePersonServiceWithEperson));
|
component.formGroup.controls.email.setAsyncValidators(ValidateEmailNotTaken.createValidator(ePersonServiceWithEperson));
|
||||||
@@ -366,12 +366,12 @@ describe('EPersonFormComponent', () => {
|
|||||||
metadata: {
|
metadata: {
|
||||||
'eperson.firstname': [
|
'eperson.firstname': [
|
||||||
{
|
{
|
||||||
value: firstName
|
value: firstName,
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
'eperson.lastname': [
|
'eperson.lastname': [
|
||||||
{
|
{
|
||||||
value: lastName
|
value: lastName,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -409,19 +409,19 @@ describe('EPersonFormComponent', () => {
|
|||||||
metadata: {
|
metadata: {
|
||||||
'eperson.firstname': [
|
'eperson.firstname': [
|
||||||
{
|
{
|
||||||
value: firstName
|
value: firstName,
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
'eperson.lastname': [
|
'eperson.lastname': [
|
||||||
{
|
{
|
||||||
value: lastName
|
value: lastName,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
email: email,
|
email: email,
|
||||||
canLogIn: canLogIn,
|
canLogIn: canLogIn,
|
||||||
requireCertificate: requireCertificate,
|
requireCertificate: requireCertificate,
|
||||||
_links: undefined
|
_links: undefined,
|
||||||
});
|
});
|
||||||
spyOn(ePersonDataServiceStub, 'getActiveEPerson').and.returnValue(observableOf(expectedWithId));
|
spyOn(ePersonDataServiceStub, 'getActiveEPerson').and.returnValue(observableOf(expectedWithId));
|
||||||
component.onSubmit();
|
component.onSubmit();
|
||||||
@@ -443,7 +443,7 @@ describe('EPersonFormComponent', () => {
|
|||||||
spyOn(authService, 'impersonate').and.callThrough();
|
spyOn(authService, 'impersonate').and.callThrough();
|
||||||
ePersonId = 'testEPersonId';
|
ePersonId = 'testEPersonId';
|
||||||
component.epersonInitial = Object.assign(new EPerson(), {
|
component.epersonInitial = Object.assign(new EPerson(), {
|
||||||
id: ePersonId
|
id: ePersonId,
|
||||||
});
|
});
|
||||||
component.impersonate();
|
component.impersonate();
|
||||||
});
|
});
|
||||||
@@ -531,7 +531,7 @@ describe('EPersonFormComponent', () => {
|
|||||||
ePersonEmail = 'person.email@4science.it';
|
ePersonEmail = 'person.email@4science.it';
|
||||||
component.epersonInitial = Object.assign(new EPerson(), {
|
component.epersonInitial = Object.assign(new EPerson(), {
|
||||||
id: ePersonId,
|
id: ePersonId,
|
||||||
email: ePersonEmail
|
email: ePersonEmail,
|
||||||
});
|
});
|
||||||
component.resetPassword();
|
component.resetPassword();
|
||||||
});
|
});
|
||||||
|
@@ -4,7 +4,7 @@ import {
|
|||||||
DynamicCheckboxModel,
|
DynamicCheckboxModel,
|
||||||
DynamicFormControlModel,
|
DynamicFormControlModel,
|
||||||
DynamicFormLayout,
|
DynamicFormLayout,
|
||||||
DynamicInputModel
|
DynamicInputModel,
|
||||||
} from '@ng-dynamic-forms/core';
|
} from '@ng-dynamic-forms/core';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { combineLatest as observableCombineLatest, Observable, of as observableOf, Subscription } from 'rxjs';
|
import { combineLatest as observableCombineLatest, Observable, of as observableOf, Subscription } from 'rxjs';
|
||||||
@@ -18,7 +18,7 @@ import { Group } from '../../../core/eperson/models/group.model';
|
|||||||
import {
|
import {
|
||||||
getFirstCompletedRemoteData,
|
getFirstCompletedRemoteData,
|
||||||
getFirstSucceededRemoteData,
|
getFirstSucceededRemoteData,
|
||||||
getRemoteDataPayload
|
getRemoteDataPayload,
|
||||||
} from '../../../core/shared/operators';
|
} from '../../../core/shared/operators';
|
||||||
import { hasValue } from '../../../shared/empty.util';
|
import { hasValue } from '../../../shared/empty.util';
|
||||||
import { FormBuilderService } from '../../../shared/form/builder/form-builder.service';
|
import { FormBuilderService } from '../../../shared/form/builder/form-builder.service';
|
||||||
@@ -82,28 +82,28 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
formLayout: DynamicFormLayout = {
|
formLayout: DynamicFormLayout = {
|
||||||
firstName: {
|
firstName: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'row'
|
host: 'row',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
lastName: {
|
lastName: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'row'
|
host: 'row',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
email: {
|
email: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'row'
|
host: 'row',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
canLogIn: {
|
canLogIn: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'col col-sm-6 d-inline-block'
|
host: 'col col-sm-6 d-inline-block',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
requireCertificate: {
|
requireCertificate: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'col col-sm-6 d-inline-block'
|
host: 'col col-sm-6 d-inline-block',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'gem',
|
id: 'gem',
|
||||||
pageSize: 5,
|
pageSize: 5,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -257,23 +257,23 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
required: true,
|
required: true,
|
||||||
errorMessages: {
|
errorMessages: {
|
||||||
emailTaken: 'error.validation.emailTaken',
|
emailTaken: 'error.validation.emailTaken',
|
||||||
pattern: 'error.validation.NotValidEmail'
|
pattern: 'error.validation.NotValidEmail',
|
||||||
},
|
},
|
||||||
hint: emailHint
|
hint: emailHint,
|
||||||
});
|
});
|
||||||
this.canLogIn = new DynamicCheckboxModel(
|
this.canLogIn = new DynamicCheckboxModel(
|
||||||
{
|
{
|
||||||
id: 'canLogIn',
|
id: 'canLogIn',
|
||||||
label: canLogIn,
|
label: canLogIn,
|
||||||
name: 'canLogIn',
|
name: 'canLogIn',
|
||||||
value: (this.epersonInitial != null ? this.epersonInitial.canLogIn : true)
|
value: (this.epersonInitial != null ? this.epersonInitial.canLogIn : true),
|
||||||
});
|
});
|
||||||
this.requireCertificate = new DynamicCheckboxModel(
|
this.requireCertificate = new DynamicCheckboxModel(
|
||||||
{
|
{
|
||||||
id: 'requireCertificate',
|
id: 'requireCertificate',
|
||||||
label: requireCertificate,
|
label: requireCertificate,
|
||||||
name: 'requireCertificate',
|
name: 'requireCertificate',
|
||||||
value: (this.epersonInitial != null ? this.epersonInitial.requireCertificate : false)
|
value: (this.epersonInitial != null ? this.epersonInitial.requireCertificate : false),
|
||||||
});
|
});
|
||||||
this.formModel = [
|
this.formModel = [
|
||||||
this.firstName,
|
this.firstName,
|
||||||
@@ -287,7 +287,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
if (eperson != null) {
|
if (eperson != null) {
|
||||||
this.groups$ = this.groupsDataService.findListByHref(eperson._links.groups.href, {
|
this.groups$ = this.groupsDataService.findListByHref(eperson._links.groups.href, {
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
elementsPerPage: this.config.pageSize
|
elementsPerPage: this.config.pageSize,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
this.formGroup.patchValue({
|
this.formGroup.patchValue({
|
||||||
@@ -295,7 +295,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
lastName: eperson != null ? eperson.firstMetadataValue('eperson.lastname') : '',
|
lastName: eperson != null ? eperson.firstMetadataValue('eperson.lastname') : '',
|
||||||
email: eperson != null ? eperson.email : '',
|
email: eperson != null ? eperson.email : '',
|
||||||
canLogIn: eperson != null ? eperson.canLogIn : true,
|
canLogIn: eperson != null ? eperson.canLogIn : true,
|
||||||
requireCertificate: eperson != null ? eperson.requireCertificate : false
|
requireCertificate: eperson != null ? eperson.requireCertificate : false,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (eperson === null && !!this.formGroup.controls.email) {
|
if (eperson === null && !!this.formGroup.controls.email) {
|
||||||
@@ -312,7 +312,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
switchMap((eperson) => {
|
switchMap((eperson) => {
|
||||||
return observableCombineLatest([observableOf(eperson), this.paginationService.getFindListOptions(this.config.id, {
|
return observableCombineLatest([observableOf(eperson), this.paginationService.getFindListOptions(this.config.id, {
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
elementsPerPage: this.config.pageSize
|
elementsPerPage: this.config.pageSize,
|
||||||
})]);
|
})]);
|
||||||
}),
|
}),
|
||||||
switchMap(([eperson, findListOptions]) => {
|
switchMap(([eperson, findListOptions]) => {
|
||||||
@@ -320,7 +320,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
return this.groupsDataService.findListByHref(eperson._links.groups.href, findListOptions, true, true, followLink('object'));
|
return this.groupsDataService.findListByHref(eperson._links.groups.href, findListOptions, true, true, followLink('object'));
|
||||||
}
|
}
|
||||||
return observableOf(undefined);
|
return observableOf(undefined);
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
this.groupsPageInfoState$ = this.groups$.pipe(
|
this.groupsPageInfoState$ = this.groups$.pipe(
|
||||||
@@ -334,10 +334,10 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
} else {
|
} else {
|
||||||
return observableOf(false);
|
return observableOf(false);
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
this.canDelete$ = activeEPerson$.pipe(
|
this.canDelete$ = activeEPerson$.pipe(
|
||||||
switchMap((eperson) => this.authorizationService.isAuthorized(FeatureID.CanDelete, hasValue(eperson) ? eperson.self : undefined))
|
switchMap((eperson) => this.authorizationService.isAuthorized(FeatureID.CanDelete, hasValue(eperson) ? eperson.self : undefined)),
|
||||||
);
|
);
|
||||||
this.canReset$ = observableOf(true);
|
this.canReset$ = observableOf(true);
|
||||||
});
|
});
|
||||||
@@ -364,12 +364,12 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
metadata: {
|
metadata: {
|
||||||
'eperson.firstname': [
|
'eperson.firstname': [
|
||||||
{
|
{
|
||||||
value: this.firstName.value
|
value: this.firstName.value,
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
'eperson.lastname': [
|
'eperson.lastname': [
|
||||||
{
|
{
|
||||||
value: this.lastName.value
|
value: this.lastName.value,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -382,7 +382,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
} else {
|
} else {
|
||||||
this.editEPerson(ePerson, values);
|
this.editEPerson(ePerson, values);
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -395,7 +395,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
const response = this.epersonService.create(ePersonToCreate);
|
const response = this.epersonService.create(ePersonToCreate);
|
||||||
response.pipe(
|
response.pipe(
|
||||||
getFirstCompletedRemoteData()
|
getFirstCompletedRemoteData(),
|
||||||
).subscribe((rd: RemoteData<EPerson>) => {
|
).subscribe((rd: RemoteData<EPerson>) => {
|
||||||
if (rd.hasSucceeded) {
|
if (rd.hasSucceeded) {
|
||||||
this.notificationsService.success(this.translateService.get(this.labelPrefix + 'notification.created.success', { name: this.dsoNameService.getName(ePersonToCreate) }));
|
this.notificationsService.success(this.translateService.get(this.labelPrefix + 'notification.created.success', { name: this.dsoNameService.getName(ePersonToCreate) }));
|
||||||
@@ -419,12 +419,12 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
metadata: {
|
metadata: {
|
||||||
'eperson.firstname': [
|
'eperson.firstname': [
|
||||||
{
|
{
|
||||||
value: (this.firstName.value ? this.firstName.value : ePerson.firstMetadataValue('eperson.firstname'))
|
value: (this.firstName.value ? this.firstName.value : ePerson.firstMetadataValue('eperson.firstname')),
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
'eperson.lastname': [
|
'eperson.lastname': [
|
||||||
{
|
{
|
||||||
value: (this.lastName.value ? this.lastName.value : ePerson.firstMetadataValue('eperson.lastname'))
|
value: (this.lastName.value ? this.lastName.value : ePerson.firstMetadataValue('eperson.lastname')),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -457,7 +457,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
onPageChange(event) {
|
onPageChange(event) {
|
||||||
this.updateGroups({
|
this.updateGroups({
|
||||||
currentPage: event,
|
currentPage: event,
|
||||||
elementsPerPage: this.config.pageSize
|
elementsPerPage: this.config.pageSize,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -493,15 +493,15 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
this.canDelete$ = observableOf(false);
|
this.canDelete$ = observableOf(false);
|
||||||
return this.epersonService.deleteEPerson(eperson).pipe(
|
return this.epersonService.deleteEPerson(eperson).pipe(
|
||||||
getFirstCompletedRemoteData(),
|
getFirstCompletedRemoteData(),
|
||||||
map((restResponse: RemoteData<NoContent>) => ({ restResponse, eperson }))
|
map((restResponse: RemoteData<NoContent>) => ({ restResponse, eperson })),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return observableOf(null);
|
return observableOf(null);
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
finalize(() => this.canDelete$ = observableOf(true))
|
finalize(() => this.canDelete$ = observableOf(true)),
|
||||||
);
|
);
|
||||||
})
|
}),
|
||||||
).subscribe(({ restResponse, eperson }: { restResponse: RemoteData<NoContent> | null, eperson: EPerson }) => {
|
).subscribe(({ restResponse, eperson }: { restResponse: RemoteData<NoContent> | null, eperson: EPerson }) => {
|
||||||
if (restResponse?.hasSucceeded) {
|
if (restResponse?.hasSucceeded) {
|
||||||
this.notificationsService.success(this.translateService.get(this.labelPrefix + 'notification.deleted.success', { name: this.dsoNameService.getName(eperson) }));
|
this.notificationsService.success(this.translateService.get(this.labelPrefix + 'notification.deleted.success', { name: this.dsoNameService.getName(eperson) }));
|
||||||
@@ -535,7 +535,7 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
this.notificationsService.error(this.translateService.get('forgot-email.form.error.head'),
|
this.notificationsService.error(this.translateService.get('forgot-email.form.error.head'),
|
||||||
this.translateService.get('forgot-email.form.error.content', {email: this.epersonInitial.email}));
|
this.translateService.get('forgot-email.form.error.content', {email: this.epersonInitial.email}));
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -571,13 +571,13 @@ export class EPersonFormComponent implements OnInit, OnDestroy {
|
|||||||
// Relevant message for email in use
|
// Relevant message for email in use
|
||||||
this.subs.push(this.epersonService.searchByScope('email', ePerson.email, {
|
this.subs.push(this.epersonService.searchByScope('email', ePerson.email, {
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
elementsPerPage: 0
|
elementsPerPage: 0,
|
||||||
}).pipe(getFirstSucceededRemoteData(), getRemoteDataPayload())
|
}).pipe(getFirstSucceededRemoteData(), getRemoteDataPayload())
|
||||||
.subscribe((list: PaginatedList<EPerson>) => {
|
.subscribe((list: PaginatedList<EPerson>) => {
|
||||||
if (list.totalElements > 0) {
|
if (list.totalElements > 0) {
|
||||||
this.notificationsService.error(this.translateService.get(this.labelPrefix + 'notification.' + notificationSection + '.failure.emailInUse', {
|
this.notificationsService.error(this.translateService.get(this.labelPrefix + 'notification.' + notificationSection + '.failure.emailInUse', {
|
||||||
name: this.dsoNameService.getName(ePerson),
|
name: this.dsoNameService.getName(ePerson),
|
||||||
email: ePerson.email
|
email: ePerson.email,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
@@ -3,7 +3,7 @@ import { Observable } from 'rxjs';
|
|||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
|
|
||||||
import { EPersonDataService } from '../../../../core/eperson/eperson-data.service';
|
import { EPersonDataService } from '../../../../core/eperson/eperson-data.service';
|
||||||
import { getFirstSucceededRemoteData, } from '../../../../core/shared/operators';
|
import { getFirstSucceededRemoteData } from '../../../../core/shared/operators';
|
||||||
|
|
||||||
export class ValidateEmailNotTaken {
|
export class ValidateEmailNotTaken {
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ export class ValidateEmailNotTaken {
|
|||||||
getFirstSucceededRemoteData(),
|
getFirstSucceededRemoteData(),
|
||||||
map(res => {
|
map(res => {
|
||||||
return res.payload ? { emailTaken: true } : null;
|
return res.payload ? { emailTaken: true } : null;
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -65,8 +65,8 @@ describe('GroupFormComponent', () => {
|
|||||||
metadata: {
|
metadata: {
|
||||||
'dc.description': [
|
'dc.description': [
|
||||||
{
|
{
|
||||||
value: groupDescription
|
value: groupDescription,
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -105,7 +105,7 @@ describe('GroupFormComponent', () => {
|
|||||||
create(group: Group): Observable<RemoteData<Group>> {
|
create(group: Group): Observable<RemoteData<Group>> {
|
||||||
this.allGroups = [...this.allGroups, group];
|
this.allGroups = [...this.allGroups, group];
|
||||||
this.createdGroup = Object.assign({}, group, {
|
this.createdGroup = Object.assign({}, group, {
|
||||||
_links: { self: { href: 'group-selflink' } }
|
_links: { self: { href: 'group-selflink' } },
|
||||||
});
|
});
|
||||||
return createSuccessfulRemoteDataObject$(this.createdGroup);
|
return createSuccessfulRemoteDataObject$(this.createdGroup);
|
||||||
},
|
},
|
||||||
@@ -114,15 +114,15 @@ describe('GroupFormComponent', () => {
|
|||||||
},
|
},
|
||||||
getGroupEditPageRouterLinkWithID(id: string) {
|
getGroupEditPageRouterLinkWithID(id: string) {
|
||||||
return `group-edit-page-for-${id}`;
|
return `group-edit-page-for-${id}`;
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
authorizationService = jasmine.createSpyObj('authorizationService', {
|
authorizationService = jasmine.createSpyObj('authorizationService', {
|
||||||
isAuthorized: observableOf(true)
|
isAuthorized: observableOf(true),
|
||||||
});
|
});
|
||||||
dsoDataServiceStub = {
|
dsoDataServiceStub = {
|
||||||
findByHref(href: string): Observable<RemoteData<DSpaceObject>> {
|
findByHref(href: string): Observable<RemoteData<DSpaceObject>> {
|
||||||
return null;
|
return null;
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
builderService = Object.assign(getMockFormBuilderService(),{
|
builderService = Object.assign(getMockFormBuilderService(),{
|
||||||
createFormGroup(formModel, options = null) {
|
createFormGroup(formModel, options = null) {
|
||||||
@@ -185,7 +185,7 @@ describe('GroupFormComponent', () => {
|
|||||||
},
|
},
|
||||||
isObject(value) {
|
isObject(value) {
|
||||||
return typeof value === 'object' && value !== null;
|
return typeof value === 'object' && value !== null;
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
translateService = getMockTranslateService();
|
translateService = getMockTranslateService();
|
||||||
router = new RouterMock();
|
router = new RouterMock();
|
||||||
@@ -195,8 +195,8 @@ describe('GroupFormComponent', () => {
|
|||||||
TranslateModule.forRoot({
|
TranslateModule.forRoot({
|
||||||
loader: {
|
loader: {
|
||||||
provide: TranslateLoader,
|
provide: TranslateLoader,
|
||||||
useClass: TranslateLoaderMock
|
useClass: TranslateLoaderMock,
|
||||||
}
|
},
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
declarations: [GroupFormComponent],
|
declarations: [GroupFormComponent],
|
||||||
@@ -216,12 +216,12 @@ describe('GroupFormComponent', () => {
|
|||||||
{ provide: HALEndpointService, useValue: {} },
|
{ provide: HALEndpointService, useValue: {} },
|
||||||
{
|
{
|
||||||
provide: ActivatedRoute,
|
provide: ActivatedRoute,
|
||||||
useValue: { data: observableOf({ dso: { payload: {} } }), params: observableOf({}) }
|
useValue: { data: observableOf({ dso: { payload: {} } }), params: observableOf({}) },
|
||||||
},
|
},
|
||||||
{ provide: Router, useValue: router },
|
{ provide: Router, useValue: router },
|
||||||
{ provide: AuthorizationDataService, useValue: authorizationService },
|
{ provide: AuthorizationDataService, useValue: authorizationService },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -257,8 +257,8 @@ describe('GroupFormComponent', () => {
|
|||||||
metadata: {
|
metadata: {
|
||||||
'dc.description': [
|
'dc.description': [
|
||||||
{
|
{
|
||||||
value: groupDescription
|
value: groupDescription,
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -273,11 +273,11 @@ describe('GroupFormComponent', () => {
|
|||||||
const operations = [{
|
const operations = [{
|
||||||
op: 'add',
|
op: 'add',
|
||||||
path: '/metadata/dc.description',
|
path: '/metadata/dc.description',
|
||||||
value: 'testDescription'
|
value: 'testDescription',
|
||||||
}, {
|
}, {
|
||||||
op: 'replace',
|
op: 'replace',
|
||||||
path: '/name',
|
path: '/name',
|
||||||
value: 'newGroupName'
|
value: 'newGroupName',
|
||||||
}];
|
}];
|
||||||
expect(groupsDataServiceStub.patch).toHaveBeenCalledWith(expected, operations);
|
expect(groupsDataServiceStub.patch).toHaveBeenCalledWith(expected, operations);
|
||||||
});
|
});
|
||||||
@@ -289,7 +289,7 @@ describe('GroupFormComponent', () => {
|
|||||||
const operations = [{
|
const operations = [{
|
||||||
op: 'add',
|
op: 'add',
|
||||||
path: '/metadata/dc.description',
|
path: '/metadata/dc.description',
|
||||||
value: 'testDescription'
|
value: 'testDescription',
|
||||||
}];
|
}];
|
||||||
expect(groupsDataServiceStub.patch).toHaveBeenCalledWith(expected, operations);
|
expect(groupsDataServiceStub.patch).toHaveBeenCalledWith(expected, operations);
|
||||||
});
|
});
|
||||||
@@ -301,7 +301,7 @@ describe('GroupFormComponent', () => {
|
|||||||
const operations = [{
|
const operations = [{
|
||||||
op: 'replace',
|
op: 'replace',
|
||||||
path: '/name',
|
path: '/name',
|
||||||
value: 'newGroupName'
|
value: 'newGroupName',
|
||||||
}];
|
}];
|
||||||
expect(groupsDataServiceStub.patch).toHaveBeenCalledWith(expected, operations);
|
expect(groupsDataServiceStub.patch).toHaveBeenCalledWith(expected, operations);
|
||||||
});
|
});
|
||||||
@@ -338,8 +338,8 @@ describe('GroupFormComponent', () => {
|
|||||||
metadata: {
|
metadata: {
|
||||||
'dc.description': [
|
'dc.description': [
|
||||||
{
|
{
|
||||||
value: groupDescription
|
value: groupDescription,
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -376,7 +376,7 @@ describe('GroupFormComponent', () => {
|
|||||||
const groupsDataServiceStubWithGroup = Object.assign(groupsDataServiceStub,{
|
const groupsDataServiceStubWithGroup = Object.assign(groupsDataServiceStub,{
|
||||||
searchGroups(query: string): Observable<RemoteData<PaginatedList<Group>>> {
|
searchGroups(query: string): Observable<RemoteData<PaginatedList<Group>>> {
|
||||||
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [expected]));
|
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [expected]));
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
component.formGroup.controls.groupName.setValue('testName');
|
component.formGroup.controls.groupName.setValue('testName');
|
||||||
component.formGroup.controls.groupName.setAsyncValidators(ValidateGroupExists.createValidator(groupsDataServiceStubWithGroup));
|
component.formGroup.controls.groupName.setAsyncValidators(ValidateGroupExists.createValidator(groupsDataServiceStubWithGroup));
|
||||||
@@ -400,7 +400,7 @@ describe('GroupFormComponent', () => {
|
|||||||
|
|
||||||
component.canEdit$ = observableOf(true);
|
component.canEdit$ = observableOf(true);
|
||||||
component.groupBeingEdited = {
|
component.groupBeingEdited = {
|
||||||
permanent: false
|
permanent: false,
|
||||||
} as Group;
|
} as Group;
|
||||||
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
@@ -6,7 +6,7 @@ import {
|
|||||||
DynamicFormControlModel,
|
DynamicFormControlModel,
|
||||||
DynamicFormLayout,
|
DynamicFormLayout,
|
||||||
DynamicInputModel,
|
DynamicInputModel,
|
||||||
DynamicTextAreaModel
|
DynamicTextAreaModel,
|
||||||
} from '@ng-dynamic-forms/core';
|
} from '@ng-dynamic-forms/core';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import {
|
import {
|
||||||
@@ -35,7 +35,7 @@ import {
|
|||||||
getRemoteDataPayload,
|
getRemoteDataPayload,
|
||||||
getFirstSucceededRemoteData,
|
getFirstSucceededRemoteData,
|
||||||
getFirstCompletedRemoteData,
|
getFirstCompletedRemoteData,
|
||||||
getFirstSucceededRemoteDataPayload
|
getFirstSucceededRemoteDataPayload,
|
||||||
} from '../../../core/shared/operators';
|
} from '../../../core/shared/operators';
|
||||||
import { AlertType } from '../../../shared/alert/aletr-type';
|
import { AlertType } from '../../../shared/alert/aletr-type';
|
||||||
import { ConfirmationModalComponent } from '../../../shared/confirmation-modal/confirmation-modal.component';
|
import { ConfirmationModalComponent } from '../../../shared/confirmation-modal/confirmation-modal.component';
|
||||||
@@ -51,7 +51,7 @@ import { environment } from '../../../../environments/environment';
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-group-form',
|
selector: 'ds-group-form',
|
||||||
templateUrl: './group-form.component.html'
|
templateUrl: './group-form.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* A form used for creating and editing groups
|
* A form used for creating and editing groups
|
||||||
@@ -83,13 +83,13 @@ export class GroupFormComponent implements OnInit, OnDestroy {
|
|||||||
formLayout: DynamicFormLayout = {
|
formLayout: DynamicFormLayout = {
|
||||||
groupName: {
|
groupName: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'row'
|
host: 'row',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
groupDescription: {
|
groupDescription: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'row'
|
host: 'row',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -171,12 +171,12 @@ export class GroupFormComponent implements OnInit, OnDestroy {
|
|||||||
(isAuthorized: ObservedValueOf<Observable<boolean>>, hasLinkedDSO: ObservedValueOf<Observable<boolean>>) => {
|
(isAuthorized: ObservedValueOf<Observable<boolean>>, hasLinkedDSO: ObservedValueOf<Observable<boolean>>) => {
|
||||||
return isAuthorized && !hasLinkedDSO;
|
return isAuthorized && !hasLinkedDSO;
|
||||||
});
|
});
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
observableCombineLatest(
|
observableCombineLatest(
|
||||||
this.translateService.get(`${this.messagePrefix}.groupName`),
|
this.translateService.get(`${this.messagePrefix}.groupName`),
|
||||||
this.translateService.get(`${this.messagePrefix}.groupCommunity`),
|
this.translateService.get(`${this.messagePrefix}.groupCommunity`),
|
||||||
this.translateService.get(`${this.messagePrefix}.groupDescription`)
|
this.translateService.get(`${this.messagePrefix}.groupDescription`),
|
||||||
).subscribe(([groupName, groupCommunity, groupDescription]) => {
|
).subscribe(([groupName, groupCommunity, groupDescription]) => {
|
||||||
this.groupName = new DynamicInputModel({
|
this.groupName = new DynamicInputModel({
|
||||||
id: 'groupName',
|
id: 'groupName',
|
||||||
@@ -219,7 +219,7 @@ export class GroupFormComponent implements OnInit, OnDestroy {
|
|||||||
this.groupDataService.getActiveGroup(),
|
this.groupDataService.getActiveGroup(),
|
||||||
this.canEdit$,
|
this.canEdit$,
|
||||||
this.groupDataService.getActiveGroup()
|
this.groupDataService.getActiveGroup()
|
||||||
.pipe(filter((activeGroup) => hasValue(activeGroup)),switchMap((activeGroup) => this.getLinkedDSO(activeGroup).pipe(getFirstSucceededRemoteDataPayload())))
|
.pipe(filter((activeGroup) => hasValue(activeGroup)),switchMap((activeGroup) => this.getLinkedDSO(activeGroup).pipe(getFirstSucceededRemoteDataPayload()))),
|
||||||
).subscribe(([activeGroup, canEdit, linkedObject]) => {
|
).subscribe(([activeGroup, canEdit, linkedObject]) => {
|
||||||
|
|
||||||
if (activeGroup != null) {
|
if (activeGroup != null) {
|
||||||
@@ -252,7 +252,7 @@ export class GroupFormComponent implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
}, 200);
|
}, 200);
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -280,9 +280,9 @@ export class GroupFormComponent implements OnInit, OnDestroy {
|
|||||||
metadata: {
|
metadata: {
|
||||||
'dc.description': [
|
'dc.description': [
|
||||||
{
|
{
|
||||||
value: this.groupDescription.value
|
value: this.groupDescription.value,
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
if (group === null) {
|
if (group === null) {
|
||||||
@@ -290,7 +290,7 @@ export class GroupFormComponent implements OnInit, OnDestroy {
|
|||||||
} else {
|
} else {
|
||||||
this.editGroup(group);
|
this.editGroup(group);
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -301,7 +301,7 @@ export class GroupFormComponent implements OnInit, OnDestroy {
|
|||||||
createNewGroup(values) {
|
createNewGroup(values) {
|
||||||
const groupToCreate = Object.assign(new Group(), values);
|
const groupToCreate = Object.assign(new Group(), values);
|
||||||
this.groupDataService.create(groupToCreate).pipe(
|
this.groupDataService.create(groupToCreate).pipe(
|
||||||
getFirstCompletedRemoteData()
|
getFirstCompletedRemoteData(),
|
||||||
).subscribe((rd: RemoteData<Group>) => {
|
).subscribe((rd: RemoteData<Group>) => {
|
||||||
if (rd.hasSucceeded) {
|
if (rd.hasSucceeded) {
|
||||||
this.notificationsService.success(this.translateService.get(this.messagePrefix + '.notification.created.success', { name: groupToCreate.name }));
|
this.notificationsService.success(this.translateService.get(this.messagePrefix + '.notification.created.success', { name: groupToCreate.name }));
|
||||||
@@ -330,7 +330,7 @@ export class GroupFormComponent implements OnInit, OnDestroy {
|
|||||||
// Relevant message for group name in use
|
// Relevant message for group name in use
|
||||||
this.subs.push(this.groupDataService.searchGroups(group.name, {
|
this.subs.push(this.groupDataService.searchGroups(group.name, {
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
elementsPerPage: 0
|
elementsPerPage: 0,
|
||||||
}).pipe(getFirstSucceededRemoteData(), getRemoteDataPayload())
|
}).pipe(getFirstSucceededRemoteData(), getRemoteDataPayload())
|
||||||
.subscribe((list: PaginatedList<Group>) => {
|
.subscribe((list: PaginatedList<Group>) => {
|
||||||
if (list.totalElements > 0) {
|
if (list.totalElements > 0) {
|
||||||
@@ -352,7 +352,7 @@ export class GroupFormComponent implements OnInit, OnDestroy {
|
|||||||
operations = [...operations, {
|
operations = [...operations, {
|
||||||
op: 'add',
|
op: 'add',
|
||||||
path: '/metadata/dc.description',
|
path: '/metadata/dc.description',
|
||||||
value: this.groupDescription.value
|
value: this.groupDescription.value,
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -360,12 +360,12 @@ export class GroupFormComponent implements OnInit, OnDestroy {
|
|||||||
operations = [...operations, {
|
operations = [...operations, {
|
||||||
op: 'replace',
|
op: 'replace',
|
||||||
path: '/name',
|
path: '/name',
|
||||||
value: this.groupName.value
|
value: this.groupName.value,
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
this.groupDataService.patch(group, operations).pipe(
|
this.groupDataService.patch(group, operations).pipe(
|
||||||
getFirstCompletedRemoteData()
|
getFirstCompletedRemoteData(),
|
||||||
).subscribe((rd: RemoteData<Group>) => {
|
).subscribe((rd: RemoteData<Group>) => {
|
||||||
if (rd.hasSucceeded) {
|
if (rd.hasSucceeded) {
|
||||||
this.notificationsService.success(this.translateService.get(this.messagePrefix + '.notification.edited.success', { name: this.dsoNameService.getName(rd.payload) }));
|
this.notificationsService.success(this.translateService.get(this.messagePrefix + '.notification.edited.success', { name: this.dsoNameService.getName(rd.payload) }));
|
||||||
@@ -504,7 +504,7 @@ export class GroupFormComponent implements OnInit, OnDestroy {
|
|||||||
return getCollectionEditRolesRoute(rd.payload.id);
|
return getCollectionEditRolesRoute(rd.payload.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -72,7 +72,7 @@ describe('MembersListComponent', () => {
|
|||||||
},
|
},
|
||||||
getEPeoplePageRouterLink(): string {
|
getEPeoplePageRouterLink(): string {
|
||||||
return '/access-control/epeople';
|
return '/access-control/epeople';
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
groupsDataServiceStub = {
|
groupsDataServiceStub = {
|
||||||
activeGroup: activeGroup,
|
activeGroup: activeGroup,
|
||||||
@@ -114,7 +114,7 @@ describe('MembersListComponent', () => {
|
|||||||
this.epersonMembers = [];
|
this.epersonMembers = [];
|
||||||
}
|
}
|
||||||
return observableOf(new RestResponse(true, 200, 'Success'));
|
return observableOf(new RestResponse(true, 200, 'Success'));
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
builderService = getMockFormBuilderService();
|
builderService = getMockFormBuilderService();
|
||||||
translateService = getMockTranslateService();
|
translateService = getMockTranslateService();
|
||||||
@@ -125,8 +125,8 @@ describe('MembersListComponent', () => {
|
|||||||
TranslateModule.forRoot({
|
TranslateModule.forRoot({
|
||||||
loader: {
|
loader: {
|
||||||
provide: TranslateLoader,
|
provide: TranslateLoader,
|
||||||
useClass: TranslateLoaderMock
|
useClass: TranslateLoaderMock,
|
||||||
}
|
},
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
declarations: [MembersListComponent],
|
declarations: [MembersListComponent],
|
||||||
@@ -139,7 +139,7 @@ describe('MembersListComponent', () => {
|
|||||||
{ provide: PaginationService, useValue: paginationService },
|
{ provide: PaginationService, useValue: paginationService },
|
||||||
{ provide: DSONameService, useValue: new DSONameServiceMock() },
|
{ provide: DSONameService, useValue: new DSONameServiceMock() },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@@ -21,7 +21,7 @@ import {
|
|||||||
getFirstSucceededRemoteData,
|
getFirstSucceededRemoteData,
|
||||||
getFirstCompletedRemoteData,
|
getFirstCompletedRemoteData,
|
||||||
getAllCompletedRemoteData,
|
getAllCompletedRemoteData,
|
||||||
getRemoteDataPayload
|
getRemoteDataPayload,
|
||||||
} from '../../../../core/shared/operators';
|
} from '../../../../core/shared/operators';
|
||||||
import { NotificationsService } from '../../../../shared/notifications/notifications.service';
|
import { NotificationsService } from '../../../../shared/notifications/notifications.service';
|
||||||
import { PaginationComponentOptions } from '../../../../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../../../../shared/pagination/pagination-component-options.model';
|
||||||
@@ -69,7 +69,7 @@ export interface EPersonListActionConfig {
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-members-list',
|
selector: 'ds-members-list',
|
||||||
templateUrl: './members-list.component.html'
|
templateUrl: './members-list.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The list of members in the edit group page
|
* The list of members in the edit group page
|
||||||
@@ -89,7 +89,7 @@ export class MembersListComponent implements OnInit, OnDestroy {
|
|||||||
remove: {
|
remove: {
|
||||||
css: 'btn-outline-danger',
|
css: 'btn-outline-danger',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
icon: 'fas fa-trash-alt fa-fw'
|
icon: 'fas fa-trash-alt fa-fw',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ export class MembersListComponent implements OnInit, OnDestroy {
|
|||||||
configSearch: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
configSearch: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'sml',
|
id: 'sml',
|
||||||
pageSize: 5,
|
pageSize: 5,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
});
|
});
|
||||||
/**
|
/**
|
||||||
* Pagination config used to display the list of EPerson Membes of active group being edited
|
* Pagination config used to display the list of EPerson Membes of active group being edited
|
||||||
@@ -116,7 +116,7 @@ export class MembersListComponent implements OnInit, OnDestroy {
|
|||||||
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'ml',
|
id: 'ml',
|
||||||
pageSize: 5,
|
pageSize: 5,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -177,8 +177,8 @@ export class MembersListComponent implements OnInit, OnDestroy {
|
|||||||
switchMap((currentPagination) => {
|
switchMap((currentPagination) => {
|
||||||
return this.ePersonDataService.findListByHref(this.groupBeingEdited._links.epersons.href, {
|
return this.ePersonDataService.findListByHref(this.groupBeingEdited._links.epersons.href, {
|
||||||
currentPage: currentPagination.currentPage,
|
currentPage: currentPagination.currentPage,
|
||||||
elementsPerPage: currentPagination.pageSize
|
elementsPerPage: currentPagination.pageSize,
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
getAllCompletedRemoteData(),
|
getAllCompletedRemoteData(),
|
||||||
@@ -219,7 +219,7 @@ export class MembersListComponent implements OnInit, OnDestroy {
|
|||||||
if (group != null) {
|
if (group != null) {
|
||||||
return this.ePersonDataService.findListByHref(group._links.epersons.href, {
|
return this.ePersonDataService.findListByHref(group._links.epersons.href, {
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
elementsPerPage: 9999
|
elementsPerPage: 9999,
|
||||||
})
|
})
|
||||||
.pipe(
|
.pipe(
|
||||||
getFirstSucceededRemoteData(),
|
getFirstSucceededRemoteData(),
|
||||||
@@ -292,14 +292,14 @@ export class MembersListComponent implements OnInit, OnDestroy {
|
|||||||
const scope: string = data.scope;
|
const scope: string = data.scope;
|
||||||
if (query != null && this.currentSearchQuery !== query && this.groupBeingEdited) {
|
if (query != null && this.currentSearchQuery !== query && this.groupBeingEdited) {
|
||||||
this.router.navigate([], {
|
this.router.navigate([], {
|
||||||
queryParamsHandling: 'merge'
|
queryParamsHandling: 'merge',
|
||||||
});
|
});
|
||||||
this.currentSearchQuery = query;
|
this.currentSearchQuery = query;
|
||||||
this.paginationService.resetPage(this.configSearch.id);
|
this.paginationService.resetPage(this.configSearch.id);
|
||||||
}
|
}
|
||||||
if (scope != null && this.currentSearchScope !== scope && this.groupBeingEdited) {
|
if (scope != null && this.currentSearchScope !== scope && this.groupBeingEdited) {
|
||||||
this.router.navigate([], {
|
this.router.navigate([], {
|
||||||
queryParamsHandling: 'merge'
|
queryParamsHandling: 'merge',
|
||||||
});
|
});
|
||||||
this.currentSearchScope = scope;
|
this.currentSearchScope = scope;
|
||||||
this.paginationService.resetPage(this.configSearch.id);
|
this.paginationService.resetPage(this.configSearch.id);
|
||||||
@@ -308,7 +308,7 @@ export class MembersListComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
return this.ePersonDataService.searchByScope(this.currentSearchScope, this.currentSearchQuery, {
|
return this.ePersonDataService.searchByScope(this.currentSearchScope, this.currentSearchQuery, {
|
||||||
currentPage: paginationOptions.currentPage,
|
currentPage: paginationOptions.currentPage,
|
||||||
elementsPerPage: paginationOptions.pageSize
|
elementsPerPage: paginationOptions.pageSize,
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
getAllCompletedRemoteData(),
|
getAllCompletedRemoteData(),
|
||||||
|
@@ -19,7 +19,7 @@ import { GroupMock, GroupMock2 } from '../../../../shared/testing/group-mock';
|
|||||||
import { SubgroupsListComponent } from './subgroups-list.component';
|
import { SubgroupsListComponent } from './subgroups-list.component';
|
||||||
import {
|
import {
|
||||||
createSuccessfulRemoteDataObject$,
|
createSuccessfulRemoteDataObject$,
|
||||||
createSuccessfulRemoteDataObject
|
createSuccessfulRemoteDataObject,
|
||||||
} from '../../../../shared/remote-data.utils';
|
} from '../../../../shared/remote-data.utils';
|
||||||
import { RouterMock } from '../../../../shared/mocks/router.mock';
|
import { RouterMock } from '../../../../shared/mocks/router.mock';
|
||||||
import { getMockFormBuilderService } from '../../../../shared/mocks/form-builder-service.mock';
|
import { getMockFormBuilderService } from '../../../../shared/mocks/form-builder-service.mock';
|
||||||
@@ -63,7 +63,7 @@ describe('SubgroupsListComponent', () => {
|
|||||||
return this.subgroups$.pipe(
|
return this.subgroups$.pipe(
|
||||||
map((currentGroups: Group[]) => {
|
map((currentGroups: Group[]) => {
|
||||||
return createSuccessfulRemoteDataObject(buildPaginatedList<Group>(new PageInfo(), currentGroups));
|
return createSuccessfulRemoteDataObject(buildPaginatedList<Group>(new PageInfo(), currentGroups));
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
getGroupEditPageRouterLink(group: Group): string {
|
getGroupEditPageRouterLink(group: Group): string {
|
||||||
@@ -92,7 +92,7 @@ describe('SubgroupsListComponent', () => {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
return observableOf(new RestResponse(true, 200, 'Success'));
|
return observableOf(new RestResponse(true, 200, 'Success'));
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
routerStub = new RouterMock();
|
routerStub = new RouterMock();
|
||||||
builderService = getMockFormBuilderService();
|
builderService = getMockFormBuilderService();
|
||||||
@@ -104,8 +104,8 @@ describe('SubgroupsListComponent', () => {
|
|||||||
TranslateModule.forRoot({
|
TranslateModule.forRoot({
|
||||||
loader: {
|
loader: {
|
||||||
provide: TranslateLoader,
|
provide: TranslateLoader,
|
||||||
useClass: TranslateLoaderMock
|
useClass: TranslateLoaderMock,
|
||||||
}
|
},
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
declarations: [SubgroupsListComponent],
|
declarations: [SubgroupsListComponent],
|
||||||
@@ -117,7 +117,7 @@ describe('SubgroupsListComponent', () => {
|
|||||||
{ provide: Router, useValue: routerStub },
|
{ provide: Router, useValue: routerStub },
|
||||||
{ provide: PaginationService, useValue: paginationService },
|
{ provide: PaginationService, useValue: paginationService },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -153,7 +153,7 @@ describe('SubgroupsListComponent', () => {
|
|||||||
const addButton = fixture.debugElement.query(By.css('#subgroupsOfGroup tbody .deleteButton'));
|
const addButton = fixture.debugElement.query(By.css('#subgroupsOfGroup tbody .deleteButton'));
|
||||||
addButton.triggerEventHandler('click', {
|
addButton.triggerEventHandler('click', {
|
||||||
preventDefault: () => {/**/
|
preventDefault: () => {/**/
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
tick();
|
tick();
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
@@ -11,7 +11,7 @@ import { Group } from '../../../../core/eperson/models/group.model';
|
|||||||
import {
|
import {
|
||||||
getFirstCompletedRemoteData,
|
getFirstCompletedRemoteData,
|
||||||
getFirstSucceededRemoteData,
|
getFirstSucceededRemoteData,
|
||||||
getRemoteDataPayload
|
getRemoteDataPayload,
|
||||||
} from '../../../../core/shared/operators';
|
} from '../../../../core/shared/operators';
|
||||||
import { NotificationsService } from '../../../../shared/notifications/notifications.service';
|
import { NotificationsService } from '../../../../shared/notifications/notifications.service';
|
||||||
import { PaginationComponentOptions } from '../../../../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../../../../shared/pagination/pagination-component-options.model';
|
||||||
@@ -32,7 +32,7 @@ enum SubKey {
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-subgroups-list',
|
selector: 'ds-subgroups-list',
|
||||||
templateUrl: './subgroups-list.component.html'
|
templateUrl: './subgroups-list.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The list of subgroups in the edit group page
|
* The list of subgroups in the edit group page
|
||||||
@@ -64,7 +64,7 @@ export class SubgroupsListComponent implements OnInit, OnDestroy {
|
|||||||
configSearch: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
configSearch: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'ssgl',
|
id: 'ssgl',
|
||||||
pageSize: 5,
|
pageSize: 5,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
});
|
});
|
||||||
/**
|
/**
|
||||||
* Pagination config used to display the list of subgroups of currently active group being edited
|
* Pagination config used to display the list of subgroups of currently active group being edited
|
||||||
@@ -72,7 +72,7 @@ export class SubgroupsListComponent implements OnInit, OnDestroy {
|
|||||||
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'sgl',
|
id: 'sgl',
|
||||||
pageSize: 5,
|
pageSize: 5,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
});
|
});
|
||||||
|
|
||||||
// The search form
|
// The search form
|
||||||
@@ -126,12 +126,12 @@ export class SubgroupsListComponent implements OnInit, OnDestroy {
|
|||||||
this.paginationService.getCurrentPagination(this.config.id, this.config).pipe(
|
this.paginationService.getCurrentPagination(this.config.id, this.config).pipe(
|
||||||
switchMap((config) => this.groupDataService.findListByHref(this.groupBeingEdited._links.subgroups.href, {
|
switchMap((config) => this.groupDataService.findListByHref(this.groupBeingEdited._links.subgroups.href, {
|
||||||
currentPage: config.currentPage,
|
currentPage: config.currentPage,
|
||||||
elementsPerPage: config.pageSize
|
elementsPerPage: config.pageSize,
|
||||||
},
|
},
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
followLink('object')
|
followLink('object'),
|
||||||
))
|
)),
|
||||||
).subscribe((rd: RemoteData<PaginatedList<Group>>) => {
|
).subscribe((rd: RemoteData<PaginatedList<Group>>) => {
|
||||||
this.subGroups$.next(rd);
|
this.subGroups$.next(rd);
|
||||||
}));
|
}));
|
||||||
@@ -150,7 +150,7 @@ export class SubgroupsListComponent implements OnInit, OnDestroy {
|
|||||||
} else {
|
} else {
|
||||||
return this.groupDataService.findListByHref(activeGroup._links.subgroups.href, {
|
return this.groupDataService.findListByHref(activeGroup._links.subgroups.href, {
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
elementsPerPage: 9999
|
elementsPerPage: 9999,
|
||||||
})
|
})
|
||||||
.pipe(
|
.pipe(
|
||||||
getFirstSucceededRemoteData(),
|
getFirstSucceededRemoteData(),
|
||||||
@@ -229,9 +229,9 @@ export class SubgroupsListComponent implements OnInit, OnDestroy {
|
|||||||
this.subs.set(SubKey.SearchResults, this.paginationService.getCurrentPagination(this.configSearch.id, this.configSearch).pipe(
|
this.subs.set(SubKey.SearchResults, this.paginationService.getCurrentPagination(this.configSearch.id, this.configSearch).pipe(
|
||||||
switchMap((config) => this.groupDataService.searchGroups(this.currentSearchQuery, {
|
switchMap((config) => this.groupDataService.searchGroups(this.currentSearchQuery, {
|
||||||
currentPage: config.currentPage,
|
currentPage: config.currentPage,
|
||||||
elementsPerPage: config.pageSize
|
elementsPerPage: config.pageSize,
|
||||||
}, true, true, followLink('object')
|
}, true, true, followLink('object'),
|
||||||
))
|
)),
|
||||||
).subscribe((rd: RemoteData<PaginatedList<Group>>) => {
|
).subscribe((rd: RemoteData<PaginatedList<Group>>) => {
|
||||||
this.searchResults$.next(rd);
|
this.searchResults$.next(rd);
|
||||||
}));
|
}));
|
||||||
|
@@ -17,7 +17,7 @@ export class ValidateGroupExists {
|
|||||||
return (control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {
|
return (control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {
|
||||||
return groupDataService.searchGroups(control.value, {
|
return groupDataService.searchGroups(control.value, {
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
elementsPerPage: 100
|
elementsPerPage: 100,
|
||||||
})
|
})
|
||||||
.pipe(
|
.pipe(
|
||||||
getFirstSucceededRemoteListPayload(),
|
getFirstSucceededRemoteListPayload(),
|
||||||
|
@@ -13,7 +13,7 @@ describe('GroupPageGuard', () => {
|
|||||||
const routeSnapshotWithGroupId = {
|
const routeSnapshotWithGroupId = {
|
||||||
params: {
|
params: {
|
||||||
groupId: groupUuid,
|
groupId: groupUuid,
|
||||||
}
|
},
|
||||||
} as unknown as ActivatedRouteSnapshot;
|
} as unknown as ActivatedRouteSnapshot;
|
||||||
|
|
||||||
let guard: GroupPageGuard;
|
let guard: GroupPageGuard;
|
||||||
@@ -50,10 +50,10 @@ describe('GroupPageGuard', () => {
|
|||||||
|
|
||||||
it('should return true', (done) => {
|
it('should return true', (done) => {
|
||||||
guard.canActivate(
|
guard.canActivate(
|
||||||
routeSnapshotWithGroupId, { url: 'current-url'} as any
|
routeSnapshotWithGroupId, { url: 'current-url'} as any,
|
||||||
).subscribe((result) => {
|
).subscribe((result) => {
|
||||||
expect(authorizationService.isAuthorized).toHaveBeenCalledWith(
|
expect(authorizationService.isAuthorized).toHaveBeenCalledWith(
|
||||||
FeatureID.CanManageGroup, groupEndpointUrl, undefined
|
FeatureID.CanManageGroup, groupEndpointUrl, undefined,
|
||||||
);
|
);
|
||||||
expect(result).toBeTrue();
|
expect(result).toBeTrue();
|
||||||
done();
|
done();
|
||||||
@@ -68,10 +68,10 @@ describe('GroupPageGuard', () => {
|
|||||||
|
|
||||||
it('should not return true', (done) => {
|
it('should not return true', (done) => {
|
||||||
guard.canActivate(
|
guard.canActivate(
|
||||||
routeSnapshotWithGroupId, { url: 'current-url'} as any
|
routeSnapshotWithGroupId, { url: 'current-url'} as any,
|
||||||
).subscribe((result) => {
|
).subscribe((result) => {
|
||||||
expect(authorizationService.isAuthorized).toHaveBeenCalledWith(
|
expect(authorizationService.isAuthorized).toHaveBeenCalledWith(
|
||||||
FeatureID.CanManageGroup, groupEndpointUrl, undefined
|
FeatureID.CanManageGroup, groupEndpointUrl, undefined,
|
||||||
);
|
);
|
||||||
expect(result).not.toBeTrue();
|
expect(result).not.toBeTrue();
|
||||||
done();
|
done();
|
||||||
|
@@ -9,7 +9,7 @@ import { HALEndpointService } from '../../core/shared/hal-endpoint.service';
|
|||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
export class GroupPageGuard extends SomeFeatureAuthorizationGuard {
|
export class GroupPageGuard extends SomeFeatureAuthorizationGuard {
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ export class GroupPageGuard extends SomeFeatureAuthorizationGuard {
|
|||||||
|
|
||||||
getObjectUrl(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<string> {
|
getObjectUrl(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<string> {
|
||||||
return this.halEndpointService.getEndpoint(this.groupsEndpoint).pipe(
|
return this.halEndpointService.getEndpoint(this.groupsEndpoint).pipe(
|
||||||
map(groupsUrl => `${groupsUrl}/${route?.params?.groupId}`)
|
map(groupsUrl => `${groupsUrl}/${route?.params?.groupId}`),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -27,13 +27,13 @@ export function groupRegistryReducer(state = initialState, action: GroupRegistry
|
|||||||
|
|
||||||
case GroupRegistryActionTypes.EDIT_GROUP: {
|
case GroupRegistryActionTypes.EDIT_GROUP: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
editGroup: (action as GroupRegistryEditGroupAction).group
|
editGroup: (action as GroupRegistryEditGroupAction).group,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case GroupRegistryActionTypes.CANCEL_EDIT_GROUP: {
|
case GroupRegistryActionTypes.CANCEL_EDIT_GROUP: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
editGroup: null
|
editGroup: null,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -78,24 +78,24 @@ describe('GroupsRegistryComponent', () => {
|
|||||||
elementsPerPage: 1,
|
elementsPerPage: 1,
|
||||||
totalElements: 0,
|
totalElements: 0,
|
||||||
totalPages: 0,
|
totalPages: 0,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), []));
|
}), []));
|
||||||
case 'https://dspace.4science.it/dspace-spring-rest/api/eperson/groups/testgroupid/epersons':
|
case 'https://dspace.4science.it/dspace-spring-rest/api/eperson/groups/testgroupid/epersons':
|
||||||
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo({
|
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo({
|
||||||
elementsPerPage: 1,
|
elementsPerPage: 1,
|
||||||
totalElements: 1,
|
totalElements: 1,
|
||||||
totalPages: 1,
|
totalPages: 1,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), [EPersonMock]));
|
}), [EPersonMock]));
|
||||||
default:
|
default:
|
||||||
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo({
|
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo({
|
||||||
elementsPerPage: 1,
|
elementsPerPage: 1,
|
||||||
totalElements: 0,
|
totalElements: 0,
|
||||||
totalPages: 0,
|
totalPages: 0,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), []));
|
}), []));
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
groupsDataServiceStub = {
|
groupsDataServiceStub = {
|
||||||
allGroups: mockGroups,
|
allGroups: mockGroups,
|
||||||
@@ -106,21 +106,21 @@ describe('GroupsRegistryComponent', () => {
|
|||||||
elementsPerPage: 1,
|
elementsPerPage: 1,
|
||||||
totalElements: 0,
|
totalElements: 0,
|
||||||
totalPages: 0,
|
totalPages: 0,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), []));
|
}), []));
|
||||||
case 'https://dspace.4science.it/dspace-spring-rest/api/eperson/groups/testgroupid/groups':
|
case 'https://dspace.4science.it/dspace-spring-rest/api/eperson/groups/testgroupid/groups':
|
||||||
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo({
|
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo({
|
||||||
elementsPerPage: 1,
|
elementsPerPage: 1,
|
||||||
totalElements: 1,
|
totalElements: 1,
|
||||||
totalPages: 1,
|
totalPages: 1,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), [GroupMock2]));
|
}), [GroupMock2]));
|
||||||
default:
|
default:
|
||||||
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo({
|
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo({
|
||||||
elementsPerPage: 1,
|
elementsPerPage: 1,
|
||||||
totalElements: 0,
|
totalElements: 0,
|
||||||
totalPages: 0,
|
totalPages: 0,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), []));
|
}), []));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -136,7 +136,7 @@ describe('GroupsRegistryComponent', () => {
|
|||||||
elementsPerPage: this.allGroups.length,
|
elementsPerPage: this.allGroups.length,
|
||||||
totalElements: this.allGroups.length,
|
totalElements: this.allGroups.length,
|
||||||
totalPages: 1,
|
totalPages: 1,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), this.allGroups));
|
}), this.allGroups));
|
||||||
}
|
}
|
||||||
const result = this.allGroups.find((group: Group) => {
|
const result = this.allGroups.find((group: Group) => {
|
||||||
@@ -146,7 +146,7 @@ describe('GroupsRegistryComponent', () => {
|
|||||||
elementsPerPage: [result].length,
|
elementsPerPage: [result].length,
|
||||||
totalElements: [result].length,
|
totalElements: [result].length,
|
||||||
totalPages: 1,
|
totalPages: 1,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
}), [result]));
|
}), [result]));
|
||||||
},
|
},
|
||||||
delete(objectId: string, copyVirtualMetadata?: string[]): Observable<RemoteData<NoContent>> {
|
delete(objectId: string, copyVirtualMetadata?: string[]): Observable<RemoteData<NoContent>> {
|
||||||
@@ -156,7 +156,7 @@ describe('GroupsRegistryComponent', () => {
|
|||||||
dsoDataServiceStub = {
|
dsoDataServiceStub = {
|
||||||
findByHref(href: string): Observable<RemoteData<DSpaceObject>> {
|
findByHref(href: string): Observable<RemoteData<DSpaceObject>> {
|
||||||
return createSuccessfulRemoteDataObject$(undefined);
|
return createSuccessfulRemoteDataObject$(undefined);
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
authorizationService = jasmine.createSpyObj('authorizationService', ['isAuthorized']);
|
authorizationService = jasmine.createSpyObj('authorizationService', ['isAuthorized']);
|
||||||
@@ -167,8 +167,8 @@ describe('GroupsRegistryComponent', () => {
|
|||||||
TranslateModule.forRoot({
|
TranslateModule.forRoot({
|
||||||
loader: {
|
loader: {
|
||||||
provide: TranslateLoader,
|
provide: TranslateLoader,
|
||||||
useClass: TranslateLoaderMock
|
useClass: TranslateLoaderMock,
|
||||||
}
|
},
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
declarations: [GroupsRegistryComponent],
|
declarations: [GroupsRegistryComponent],
|
||||||
@@ -182,9 +182,9 @@ describe('GroupsRegistryComponent', () => {
|
|||||||
{ provide: Router, useValue: new RouterMock() },
|
{ provide: Router, useValue: new RouterMock() },
|
||||||
{ provide: AuthorizationDataService, useValue: authorizationService },
|
{ provide: AuthorizationDataService, useValue: authorizationService },
|
||||||
{ provide: PaginationService, useValue: paginationService },
|
{ provide: PaginationService, useValue: paginationService },
|
||||||
{ provide: RequestService, useValue: jasmine.createSpyObj('requestService', ['removeByHrefSubstring']) }
|
{ provide: RequestService, useValue: jasmine.createSpyObj('requestService', ['removeByHrefSubstring']) },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -237,16 +237,16 @@ describe('GroupsRegistryComponent', () => {
|
|||||||
|
|
||||||
it('should not check the canManageGroup permissions', () => {
|
it('should not check the canManageGroup permissions', () => {
|
||||||
expect(authorizationService.isAuthorized).not.toHaveBeenCalledWith(
|
expect(authorizationService.isAuthorized).not.toHaveBeenCalledWith(
|
||||||
FeatureID.CanManageGroup, mockGroups[0].self
|
FeatureID.CanManageGroup, mockGroups[0].self,
|
||||||
);
|
);
|
||||||
expect(authorizationService.isAuthorized).not.toHaveBeenCalledWith(
|
expect(authorizationService.isAuthorized).not.toHaveBeenCalledWith(
|
||||||
FeatureID.CanManageGroup, mockGroups[0].self, undefined // treated differently
|
FeatureID.CanManageGroup, mockGroups[0].self, undefined, // treated differently
|
||||||
);
|
);
|
||||||
expect(authorizationService.isAuthorized).not.toHaveBeenCalledWith(
|
expect(authorizationService.isAuthorized).not.toHaveBeenCalledWith(
|
||||||
FeatureID.CanManageGroup, mockGroups[1].self
|
FeatureID.CanManageGroup, mockGroups[1].self,
|
||||||
);
|
);
|
||||||
expect(authorizationService.isAuthorized).not.toHaveBeenCalledWith(
|
expect(authorizationService.isAuthorized).not.toHaveBeenCalledWith(
|
||||||
FeatureID.CanManageGroup, mockGroups[1].self, undefined // treated differently
|
FeatureID.CanManageGroup, mockGroups[1].self, undefined, // treated differently
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -8,7 +8,7 @@ import {
|
|||||||
EMPTY,
|
EMPTY,
|
||||||
Observable,
|
Observable,
|
||||||
of as observableOf,
|
of as observableOf,
|
||||||
Subscription
|
Subscription,
|
||||||
} from 'rxjs';
|
} from 'rxjs';
|
||||||
import { catchError, defaultIfEmpty, map, switchMap, tap } from 'rxjs/operators';
|
import { catchError, defaultIfEmpty, map, switchMap, tap } from 'rxjs/operators';
|
||||||
import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service';
|
import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service';
|
||||||
@@ -28,7 +28,7 @@ import {
|
|||||||
getAllSucceededRemoteData,
|
getAllSucceededRemoteData,
|
||||||
getFirstCompletedRemoteData,
|
getFirstCompletedRemoteData,
|
||||||
getFirstSucceededRemoteData,
|
getFirstSucceededRemoteData,
|
||||||
getRemoteDataPayload
|
getRemoteDataPayload,
|
||||||
} from '../../core/shared/operators';
|
} from '../../core/shared/operators';
|
||||||
import { PageInfo } from '../../core/shared/page-info.model';
|
import { PageInfo } from '../../core/shared/page-info.model';
|
||||||
import { hasValue } from '../../shared/empty.util';
|
import { hasValue } from '../../shared/empty.util';
|
||||||
@@ -57,7 +57,7 @@ export class GroupsRegistryComponent implements OnInit, OnDestroy {
|
|||||||
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'gl',
|
id: 'gl',
|
||||||
pageSize: 5,
|
pageSize: 5,
|
||||||
currentPage: 1
|
currentPage: 1,
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -155,7 +155,7 @@ export class GroupsRegistryComponent implements OnInit, OnDestroy {
|
|||||||
this.canManageGroup$(isSiteAdmin, group),
|
this.canManageGroup$(isSiteAdmin, group),
|
||||||
this.hasLinkedDSO(group),
|
this.hasLinkedDSO(group),
|
||||||
this.getSubgroups(group),
|
this.getSubgroups(group),
|
||||||
this.getMembers(group)
|
this.getMembers(group),
|
||||||
]).pipe(
|
]).pipe(
|
||||||
map(([canDelete, canManageGroup, hasLinkedDSO, subgroups, members]:
|
map(([canDelete, canManageGroup, hasLinkedDSO, subgroups, members]:
|
||||||
[boolean, boolean, boolean, RemoteData<PaginatedList<Group>>, RemoteData<PaginatedList<EPerson>>]) => {
|
[boolean, boolean, boolean, RemoteData<PaginatedList<Group>>, RemoteData<PaginatedList<EPerson>>]) => {
|
||||||
@@ -166,8 +166,8 @@ export class GroupsRegistryComponent implements OnInit, OnDestroy {
|
|||||||
groupDtoModel.subgroups = subgroups.payload;
|
groupDtoModel.subgroups = subgroups.payload;
|
||||||
groupDtoModel.epersons = members.payload;
|
groupDtoModel.epersons = members.payload;
|
||||||
return groupDtoModel;
|
return groupDtoModel;
|
||||||
}
|
},
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return EMPTY;
|
return EMPTY;
|
||||||
@@ -175,9 +175,9 @@ export class GroupsRegistryComponent implements OnInit, OnDestroy {
|
|||||||
})]).pipe(defaultIfEmpty([]), map((dtos: GroupDtoModel[]) => {
|
})]).pipe(defaultIfEmpty([]), map((dtos: GroupDtoModel[]) => {
|
||||||
return buildPaginatedList(groups.pageInfo, dtos);
|
return buildPaginatedList(groups.pageInfo, dtos);
|
||||||
}));
|
}));
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
})
|
}),
|
||||||
).subscribe((value: PaginatedList<GroupDtoModel>) => {
|
).subscribe((value: PaginatedList<GroupDtoModel>) => {
|
||||||
this.groupsDto$.next(value);
|
this.groupsDto$.next(value);
|
||||||
this.pageInfoState$.next(value.pageInfo);
|
this.pageInfoState$.next(value.pageInfo);
|
||||||
|
@@ -11,7 +11,7 @@ describe('AdminCurationTasksComponent', () => {
|
|||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
imports: [TranslateModule.forRoot()],
|
imports: [TranslateModule.forRoot()],
|
||||||
declarations: [AdminCurationTasksComponent],
|
declarations: [AdminCurationTasksComponent],
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@@ -10,7 +10,7 @@ import { FileValidator } from '../../shared/utils/require-file.validator';
|
|||||||
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
||||||
import {
|
import {
|
||||||
BATCH_IMPORT_SCRIPT_NAME,
|
BATCH_IMPORT_SCRIPT_NAME,
|
||||||
ScriptDataService
|
ScriptDataService,
|
||||||
} from '../../core/data/processes/script-data.service';
|
} from '../../core/data/processes/script-data.service';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { Location } from '@angular/common';
|
import { Location } from '@angular/common';
|
||||||
@@ -31,14 +31,14 @@ describe('BatchImportPageComponent', () => {
|
|||||||
notificationService = new NotificationsServiceStub();
|
notificationService = new NotificationsServiceStub();
|
||||||
scriptService = jasmine.createSpyObj('scriptService',
|
scriptService = jasmine.createSpyObj('scriptService',
|
||||||
{
|
{
|
||||||
invoke: createSuccessfulRemoteDataObject$({ processId: '46' })
|
invoke: createSuccessfulRemoteDataObject$({ processId: '46' }),
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
router = jasmine.createSpyObj('router', {
|
router = jasmine.createSpyObj('router', {
|
||||||
navigateByUrl: jasmine.createSpy('navigateByUrl')
|
navigateByUrl: jasmine.createSpy('navigateByUrl'),
|
||||||
});
|
});
|
||||||
locationStub = jasmine.createSpyObj('location', {
|
locationStub = jasmine.createSpyObj('location', {
|
||||||
back: jasmine.createSpy('back')
|
back: jasmine.createSpy('back'),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ describe('BatchImportPageComponent', () => {
|
|||||||
imports: [
|
imports: [
|
||||||
FormsModule,
|
FormsModule,
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule.withRoutes([])
|
RouterTestingModule.withRoutes([]),
|
||||||
],
|
],
|
||||||
declarations: [BatchImportPageComponent, FileValueAccessorDirective, FileValidator],
|
declarations: [BatchImportPageComponent, FileValueAccessorDirective, FileValidator],
|
||||||
providers: [
|
providers: [
|
||||||
@@ -57,7 +57,7 @@ describe('BatchImportPageComponent', () => {
|
|||||||
{ provide: Router, useValue: router },
|
{ provide: Router, useValue: router },
|
||||||
{ provide: Location, useValue: locationStub },
|
{ provide: Location, useValue: locationStub },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ describe('BatchImportPageComponent', () => {
|
|||||||
it('metadata-import script is invoked with --zip fileName and the mockFile', () => {
|
it('metadata-import script is invoked with --zip fileName and the mockFile', () => {
|
||||||
const parameterValues: ProcessParameter[] = [
|
const parameterValues: ProcessParameter[] = [
|
||||||
Object.assign(new ProcessParameter(), { name: '--add' }),
|
Object.assign(new ProcessParameter(), { name: '--add' }),
|
||||||
Object.assign(new ProcessParameter(), { name: '--zip', value: 'filename.zip' })
|
Object.assign(new ProcessParameter(), { name: '--zip', value: 'filename.zip' }),
|
||||||
];
|
];
|
||||||
expect(scriptService.invoke).toHaveBeenCalledWith(BATCH_IMPORT_SCRIPT_NAME, parameterValues, [fileMock]);
|
expect(scriptService.invoke).toHaveBeenCalledWith(BATCH_IMPORT_SCRIPT_NAME, parameterValues, [fileMock]);
|
||||||
});
|
});
|
||||||
@@ -181,7 +181,7 @@ describe('BatchImportPageComponent', () => {
|
|||||||
it('metadata-import script is invoked with --url and the file url', () => {
|
it('metadata-import script is invoked with --url and the file url', () => {
|
||||||
const parameterValues: ProcessParameter[] = [
|
const parameterValues: ProcessParameter[] = [
|
||||||
Object.assign(new ProcessParameter(), { name: '--add' }),
|
Object.assign(new ProcessParameter(), { name: '--add' }),
|
||||||
Object.assign(new ProcessParameter(), { name: '--url', value: 'example.fileURL.com' })
|
Object.assign(new ProcessParameter(), { name: '--url', value: 'example.fileURL.com' }),
|
||||||
];
|
];
|
||||||
expect(scriptService.invoke).toHaveBeenCalledWith(BATCH_IMPORT_SCRIPT_NAME, parameterValues, [null]);
|
expect(scriptService.invoke).toHaveBeenCalledWith(BATCH_IMPORT_SCRIPT_NAME, parameterValues, [null]);
|
||||||
});
|
});
|
||||||
|
@@ -11,7 +11,7 @@ import { Process } from '../../process-page/processes/process.model';
|
|||||||
import { isEmpty, isNotEmpty } from '../../shared/empty.util';
|
import { isEmpty, isNotEmpty } from '../../shared/empty.util';
|
||||||
import { getProcessDetailRoute } from '../../process-page/process-page-routing.paths';
|
import { getProcessDetailRoute } from '../../process-page/process-page-routing.paths';
|
||||||
import {
|
import {
|
||||||
ImportBatchSelectorComponent
|
ImportBatchSelectorComponent,
|
||||||
} from '../../shared/dso-selector/modal-wrappers/import-batch-selector/import-batch-selector.component';
|
} from '../../shared/dso-selector/modal-wrappers/import-batch-selector/import-batch-selector.component';
|
||||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
||||||
import { take } from 'rxjs/operators';
|
import { take } from 'rxjs/operators';
|
||||||
@@ -20,7 +20,7 @@ import { DSONameService } from '../../core/breadcrumbs/dso-name.service';
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-batch-import-page',
|
selector: 'ds-batch-import-page',
|
||||||
templateUrl: './batch-import-page.component.html'
|
templateUrl: './batch-import-page.component.html',
|
||||||
})
|
})
|
||||||
export class BatchImportPageComponent {
|
export class BatchImportPageComponent {
|
||||||
/**
|
/**
|
||||||
@@ -91,7 +91,7 @@ export class BatchImportPageComponent {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const parameterValues: ProcessParameter[] = [
|
const parameterValues: ProcessParameter[] = [
|
||||||
Object.assign(new ProcessParameter(), { name: '--add' })
|
Object.assign(new ProcessParameter(), { name: '--add' }),
|
||||||
];
|
];
|
||||||
if (this.isUpload) {
|
if (this.isUpload) {
|
||||||
parameterValues.push(Object.assign(new ProcessParameter(), { name: '--zip', value: this.fileObject.name }));
|
parameterValues.push(Object.assign(new ProcessParameter(), { name: '--zip', value: this.fileObject.name }));
|
||||||
|
@@ -28,14 +28,14 @@ describe('MetadataImportPageComponent', () => {
|
|||||||
notificationService = new NotificationsServiceStub();
|
notificationService = new NotificationsServiceStub();
|
||||||
scriptService = jasmine.createSpyObj('scriptService',
|
scriptService = jasmine.createSpyObj('scriptService',
|
||||||
{
|
{
|
||||||
invoke: createSuccessfulRemoteDataObject$({ processId: '45' })
|
invoke: createSuccessfulRemoteDataObject$({ processId: '45' }),
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
router = jasmine.createSpyObj('router', {
|
router = jasmine.createSpyObj('router', {
|
||||||
navigateByUrl: jasmine.createSpy('navigateByUrl')
|
navigateByUrl: jasmine.createSpy('navigateByUrl'),
|
||||||
});
|
});
|
||||||
locationStub = jasmine.createSpyObj('location', {
|
locationStub = jasmine.createSpyObj('location', {
|
||||||
back: jasmine.createSpy('back')
|
back: jasmine.createSpy('back'),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ describe('MetadataImportPageComponent', () => {
|
|||||||
imports: [
|
imports: [
|
||||||
FormsModule,
|
FormsModule,
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule.withRoutes([])
|
RouterTestingModule.withRoutes([]),
|
||||||
],
|
],
|
||||||
declarations: [MetadataImportPageComponent, FileValueAccessorDirective, FileValidator],
|
declarations: [MetadataImportPageComponent, FileValueAccessorDirective, FileValidator],
|
||||||
providers: [
|
providers: [
|
||||||
@@ -54,7 +54,7 @@ describe('MetadataImportPageComponent', () => {
|
|||||||
{ provide: Router, useValue: router },
|
{ provide: Router, useValue: router },
|
||||||
{ provide: Location, useValue: locationStub },
|
{ provide: Location, useValue: locationStub },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@@ -13,7 +13,7 @@ import { getProcessDetailRoute } from '../../process-page/process-page-routing.p
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-metadata-import-page',
|
selector: 'ds-metadata-import-page',
|
||||||
templateUrl: './metadata-import-page.component.html'
|
templateUrl: './metadata-import-page.component.html',
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -15,25 +15,25 @@ import { BITSTREAMFORMATS_MODULE_PATH } from './admin-registries-routing-paths';
|
|||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
component: MetadataRegistryComponent
|
component: MetadataRegistryComponent,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ':schemaName',
|
path: ':schemaName',
|
||||||
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
||||||
component: MetadataSchemaComponent,
|
component: MetadataSchemaComponent,
|
||||||
data: {title: 'admin.registries.schema.title', breadcrumbKey: 'admin.registries.schema'}
|
data: {title: 'admin.registries.schema.title', breadcrumbKey: 'admin.registries.schema'},
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: BITSTREAMFORMATS_MODULE_PATH,
|
path: BITSTREAMFORMATS_MODULE_PATH,
|
||||||
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
||||||
loadChildren: () => import('./bitstream-formats/bitstream-formats.module')
|
loadChildren: () => import('./bitstream-formats/bitstream-formats.module')
|
||||||
.then((m) => m.BitstreamFormatsModule),
|
.then((m) => m.BitstreamFormatsModule),
|
||||||
data: {title: 'admin.registries.bitstream-formats.title', breadcrumbKey: 'admin.registries.bitstream-formats'}
|
data: {title: 'admin.registries.bitstream-formats.title', breadcrumbKey: 'admin.registries.bitstream-formats'},
|
||||||
},
|
},
|
||||||
])
|
]),
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
export class AdminRegistriesRoutingModule {
|
export class AdminRegistriesRoutingModule {
|
||||||
|
|
||||||
|
@@ -17,14 +17,14 @@ import { FormModule } from '../../shared/form/form.module';
|
|||||||
RouterModule,
|
RouterModule,
|
||||||
BitstreamFormatsModule,
|
BitstreamFormatsModule,
|
||||||
AdminRegistriesRoutingModule,
|
AdminRegistriesRoutingModule,
|
||||||
FormModule
|
FormModule,
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
MetadataRegistryComponent,
|
MetadataRegistryComponent,
|
||||||
MetadataSchemaComponent,
|
MetadataSchemaComponent,
|
||||||
MetadataSchemaFormComponent,
|
MetadataSchemaFormComponent,
|
||||||
MetadataFieldFormComponent
|
MetadataFieldFormComponent,
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
export class AdminRegistriesModule {
|
export class AdminRegistriesModule {
|
||||||
|
|
||||||
|
@@ -38,7 +38,7 @@ describe('AddBitstreamFormatComponent', () => {
|
|||||||
notificationService = new NotificationsServiceStub();
|
notificationService = new NotificationsServiceStub();
|
||||||
bitstreamFormatDataService = jasmine.createSpyObj('bitstreamFormatDataService', {
|
bitstreamFormatDataService = jasmine.createSpyObj('bitstreamFormatDataService', {
|
||||||
createBitstreamFormat: createSuccessfulRemoteDataObject$({}),
|
createBitstreamFormat: createSuccessfulRemoteDataObject$({}),
|
||||||
clearBitStreamFormatRequests: observableOf(null)
|
clearBitStreamFormatRequests: observableOf(null),
|
||||||
});
|
});
|
||||||
|
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
@@ -49,7 +49,7 @@ describe('AddBitstreamFormatComponent', () => {
|
|||||||
{ provide: NotificationsService, useValue: notificationService },
|
{ provide: NotificationsService, useValue: notificationService },
|
||||||
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
|
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
|
||||||
],
|
],
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ describe('AddBitstreamFormatComponent', () => {
|
|||||||
notificationService = new NotificationsServiceStub();
|
notificationService = new NotificationsServiceStub();
|
||||||
bitstreamFormatDataService = jasmine.createSpyObj('bitstreamFormatDataService', {
|
bitstreamFormatDataService = jasmine.createSpyObj('bitstreamFormatDataService', {
|
||||||
createBitstreamFormat: createFailedRemoteDataObject$('Error', 500),
|
createBitstreamFormat: createFailedRemoteDataObject$('Error', 500),
|
||||||
clearBitStreamFormatRequests: observableOf(null)
|
clearBitStreamFormatRequests: observableOf(null),
|
||||||
});
|
});
|
||||||
|
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
@@ -89,7 +89,7 @@ describe('AddBitstreamFormatComponent', () => {
|
|||||||
{ provide: NotificationsService, useValue: notificationService },
|
{ provide: NotificationsService, useValue: notificationService },
|
||||||
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
|
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
|
||||||
],
|
],
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
beforeEach(initBeforeEach);
|
beforeEach(initBeforeEach);
|
||||||
|
@@ -44,7 +44,7 @@ export class AddBitstreamFormatComponent {
|
|||||||
this.notificationService.error(this.translateService.get('admin.registries.bitstream-formats.create.failure.head'),
|
this.notificationService.error(this.translateService.get('admin.registries.bitstream-formats.create.failure.head'),
|
||||||
this.translateService.get('admin.registries.bitstream-formats.create.failure.content'));
|
this.translateService.get('admin.registries.bitstream-formats.create.failure.content'));
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -15,7 +15,7 @@ export const BitstreamFormatsRegistryActionTypes = {
|
|||||||
|
|
||||||
SELECT_FORMAT: type('dspace/bitstream-formats-registry/SELECT_FORMAT'),
|
SELECT_FORMAT: type('dspace/bitstream-formats-registry/SELECT_FORMAT'),
|
||||||
DESELECT_FORMAT: type('dspace/bitstream-formats-registry/DESELECT_FORMAT'),
|
DESELECT_FORMAT: type('dspace/bitstream-formats-registry/DESELECT_FORMAT'),
|
||||||
DESELECT_ALL_FORMAT: type('dspace/bitstream-formats-registry/DESELECT_ALL_FORMAT')
|
DESELECT_ALL_FORMAT: type('dspace/bitstream-formats-registry/DESELECT_ALL_FORMAT'),
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -4,7 +4,7 @@ import { bitstreamFormatReducer, BitstreamFormatRegistryState } from './bitstrea
|
|||||||
import {
|
import {
|
||||||
BitstreamFormatsRegistryDeselectAction,
|
BitstreamFormatsRegistryDeselectAction,
|
||||||
BitstreamFormatsRegistryDeselectAllAction,
|
BitstreamFormatsRegistryDeselectAllAction,
|
||||||
BitstreamFormatsRegistrySelectAction
|
BitstreamFormatsRegistrySelectAction,
|
||||||
} from './bitstream-format.actions';
|
} from './bitstream-format.actions';
|
||||||
|
|
||||||
const bitstreamFormat1: BitstreamFormat = new BitstreamFormat();
|
const bitstreamFormat1: BitstreamFormat = new BitstreamFormat();
|
||||||
@@ -16,15 +16,15 @@ bitstreamFormat2.id = 'test-uuid-2';
|
|||||||
bitstreamFormat2.shortDescription = 'test-short-2';
|
bitstreamFormat2.shortDescription = 'test-short-2';
|
||||||
|
|
||||||
const initialState: BitstreamFormatRegistryState = {
|
const initialState: BitstreamFormatRegistryState = {
|
||||||
selectedBitstreamFormats: []
|
selectedBitstreamFormats: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
const bitstream1SelectedState: BitstreamFormatRegistryState = {
|
const bitstream1SelectedState: BitstreamFormatRegistryState = {
|
||||||
selectedBitstreamFormats: [bitstreamFormat1]
|
selectedBitstreamFormats: [bitstreamFormat1],
|
||||||
};
|
};
|
||||||
|
|
||||||
const bitstream1and2SelectedState: BitstreamFormatRegistryState = {
|
const bitstream1and2SelectedState: BitstreamFormatRegistryState = {
|
||||||
selectedBitstreamFormats: [bitstreamFormat1, bitstreamFormat2]
|
selectedBitstreamFormats: [bitstreamFormat1, bitstreamFormat2],
|
||||||
};
|
};
|
||||||
|
|
||||||
describe('BitstreamFormatReducer', () => {
|
describe('BitstreamFormatReducer', () => {
|
||||||
|
@@ -3,7 +3,7 @@ import {
|
|||||||
BitstreamFormatsRegistryAction,
|
BitstreamFormatsRegistryAction,
|
||||||
BitstreamFormatsRegistryActionTypes,
|
BitstreamFormatsRegistryActionTypes,
|
||||||
BitstreamFormatsRegistryDeselectAction,
|
BitstreamFormatsRegistryDeselectAction,
|
||||||
BitstreamFormatsRegistrySelectAction
|
BitstreamFormatsRegistrySelectAction,
|
||||||
} from './bitstream-format.actions';
|
} from './bitstream-format.actions';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -32,21 +32,21 @@ export function bitstreamFormatReducer(state = initialState, action: BitstreamFo
|
|||||||
|
|
||||||
case BitstreamFormatsRegistryActionTypes.SELECT_FORMAT: {
|
case BitstreamFormatsRegistryActionTypes.SELECT_FORMAT: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
selectedBitstreamFormats: [...state.selectedBitstreamFormats, (action as BitstreamFormatsRegistrySelectAction).bitstreamFormat]
|
selectedBitstreamFormats: [...state.selectedBitstreamFormats, (action as BitstreamFormatsRegistrySelectAction).bitstreamFormat],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case BitstreamFormatsRegistryActionTypes.DESELECT_FORMAT: {
|
case BitstreamFormatsRegistryActionTypes.DESELECT_FORMAT: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
selectedBitstreamFormats: state.selectedBitstreamFormats.filter(
|
selectedBitstreamFormats: state.selectedBitstreamFormats.filter(
|
||||||
(selectedBitstreamFormats) => selectedBitstreamFormats !== (action as BitstreamFormatsRegistryDeselectAction).bitstreamFormat
|
(selectedBitstreamFormats) => selectedBitstreamFormats !== (action as BitstreamFormatsRegistryDeselectAction).bitstreamFormat,
|
||||||
)
|
),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case BitstreamFormatsRegistryActionTypes.DESELECT_ALL_FORMAT: {
|
case BitstreamFormatsRegistryActionTypes.DESELECT_ALL_FORMAT: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
selectedBitstreamFormats: []
|
selectedBitstreamFormats: [],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@@ -14,28 +14,28 @@ const BITSTREAMFORMAT_ADD_PATH = 'add';
|
|||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
component: BitstreamFormatsComponent
|
component: BitstreamFormatsComponent,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: BITSTREAMFORMAT_ADD_PATH,
|
path: BITSTREAMFORMAT_ADD_PATH,
|
||||||
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
||||||
component: AddBitstreamFormatComponent,
|
component: AddBitstreamFormatComponent,
|
||||||
data: {breadcrumbKey: 'admin.registries.bitstream-formats.create'}
|
data: {breadcrumbKey: 'admin.registries.bitstream-formats.create'},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: BITSTREAMFORMAT_EDIT_PATH,
|
path: BITSTREAMFORMAT_EDIT_PATH,
|
||||||
component: EditBitstreamFormatComponent,
|
component: EditBitstreamFormatComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
bitstreamFormat: BitstreamFormatsResolver,
|
bitstreamFormat: BitstreamFormatsResolver,
|
||||||
breadcrumb: I18nBreadcrumbResolver
|
breadcrumb: I18nBreadcrumbResolver,
|
||||||
},
|
},
|
||||||
data: {breadcrumbKey: 'admin.registries.bitstream-formats.edit'}
|
data: {breadcrumbKey: 'admin.registries.bitstream-formats.edit'},
|
||||||
},
|
},
|
||||||
])
|
]),
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
BitstreamFormatsResolver,
|
BitstreamFormatsResolver,
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
export class BitstreamFormatsRoutingModule {
|
export class BitstreamFormatsRoutingModule {
|
||||||
|
|
||||||
|
@@ -21,7 +21,7 @@ import {
|
|||||||
createNoContentRemoteDataObject$,
|
createNoContentRemoteDataObject$,
|
||||||
createSuccessfulRemoteDataObject,
|
createSuccessfulRemoteDataObject,
|
||||||
createSuccessfulRemoteDataObject$,
|
createSuccessfulRemoteDataObject$,
|
||||||
createFailedRemoteDataObject$
|
createFailedRemoteDataObject$,
|
||||||
} from '../../../shared/remote-data.utils';
|
} from '../../../shared/remote-data.utils';
|
||||||
import { createPaginatedList } from '../../../shared/testing/utils.test';
|
import { createPaginatedList } from '../../../shared/testing/utils.test';
|
||||||
import { PaginationService } from '../../../core/pagination/pagination.service';
|
import { PaginationService } from '../../../core/pagination/pagination.service';
|
||||||
@@ -79,7 +79,7 @@ describe('BitstreamFormatsComponent', () => {
|
|||||||
bitstreamFormat1,
|
bitstreamFormat1,
|
||||||
bitstreamFormat2,
|
bitstreamFormat2,
|
||||||
bitstreamFormat3,
|
bitstreamFormat3,
|
||||||
bitstreamFormat4
|
bitstreamFormat4,
|
||||||
];
|
];
|
||||||
const mockFormatsRD = createSuccessfulRemoteDataObject(createPaginatedList(mockFormatsList));
|
const mockFormatsRD = createSuccessfulRemoteDataObject(createPaginatedList(mockFormatsList));
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@ describe('BitstreamFormatsComponent', () => {
|
|||||||
deselectBitstreamFormat: {},
|
deselectBitstreamFormat: {},
|
||||||
deselectAllBitstreamFormats: {},
|
deselectAllBitstreamFormats: {},
|
||||||
delete: createSuccessfulRemoteDataObject$({}),
|
delete: createSuccessfulRemoteDataObject$({}),
|
||||||
clearBitStreamFormatRequests: observableOf('cleared')
|
clearBitStreamFormatRequests: observableOf('cleared'),
|
||||||
});
|
});
|
||||||
|
|
||||||
paginationService = new PaginationServiceStub();
|
paginationService = new PaginationServiceStub();
|
||||||
@@ -108,8 +108,8 @@ describe('BitstreamFormatsComponent', () => {
|
|||||||
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatService },
|
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatService },
|
||||||
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
|
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
|
||||||
{ provide: NotificationsService, useValue: notificationsServiceStub },
|
{ provide: NotificationsService, useValue: notificationsServiceStub },
|
||||||
{ provide: PaginationService, useValue: paginationService }
|
{ provide: PaginationService, useValue: paginationService },
|
||||||
]
|
],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -224,7 +224,7 @@ describe('BitstreamFormatsComponent', () => {
|
|||||||
deselectBitstreamFormat: {},
|
deselectBitstreamFormat: {},
|
||||||
deselectAllBitstreamFormats: {},
|
deselectAllBitstreamFormats: {},
|
||||||
delete: createNoContentRemoteDataObject$(),
|
delete: createNoContentRemoteDataObject$(),
|
||||||
clearBitStreamFormatRequests: observableOf('cleared')
|
clearBitStreamFormatRequests: observableOf('cleared'),
|
||||||
});
|
});
|
||||||
|
|
||||||
paginationService = new PaginationServiceStub();
|
paginationService = new PaginationServiceStub();
|
||||||
@@ -236,10 +236,10 @@ describe('BitstreamFormatsComponent', () => {
|
|||||||
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatService },
|
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatService },
|
||||||
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
|
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
|
||||||
{ provide: NotificationsService, useValue: notificationsServiceStub },
|
{ provide: NotificationsService, useValue: notificationsServiceStub },
|
||||||
{ provide: PaginationService, useValue: paginationService }
|
{ provide: PaginationService, useValue: paginationService },
|
||||||
]
|
],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}
|
},
|
||||||
));
|
));
|
||||||
|
|
||||||
beforeEach(initBeforeEach);
|
beforeEach(initBeforeEach);
|
||||||
@@ -273,7 +273,7 @@ describe('BitstreamFormatsComponent', () => {
|
|||||||
deselectBitstreamFormat: {},
|
deselectBitstreamFormat: {},
|
||||||
deselectAllBitstreamFormats: {},
|
deselectAllBitstreamFormats: {},
|
||||||
delete: createFailedRemoteDataObject$(),
|
delete: createFailedRemoteDataObject$(),
|
||||||
clearBitStreamFormatRequests: observableOf('cleared')
|
clearBitStreamFormatRequests: observableOf('cleared'),
|
||||||
});
|
});
|
||||||
|
|
||||||
paginationService = new PaginationServiceStub();
|
paginationService = new PaginationServiceStub();
|
||||||
@@ -285,10 +285,10 @@ describe('BitstreamFormatsComponent', () => {
|
|||||||
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatService },
|
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatService },
|
||||||
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
|
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
|
||||||
{ provide: NotificationsService, useValue: notificationsServiceStub },
|
{ provide: NotificationsService, useValue: notificationsServiceStub },
|
||||||
{ provide: PaginationService, useValue: paginationService }
|
{ provide: PaginationService, useValue: paginationService },
|
||||||
]
|
],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}
|
},
|
||||||
));
|
));
|
||||||
|
|
||||||
beforeEach(initBeforeEach);
|
beforeEach(initBeforeEach);
|
||||||
|
@@ -19,7 +19,7 @@ import { getFirstCompletedRemoteData } from '../../../core/shared/operators';
|
|||||||
*/
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-bitstream-formats',
|
selector: 'ds-bitstream-formats',
|
||||||
templateUrl: './bitstream-formats.component.html'
|
templateUrl: './bitstream-formats.component.html',
|
||||||
})
|
})
|
||||||
export class BitstreamFormatsComponent implements OnInit, OnDestroy {
|
export class BitstreamFormatsComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ export class BitstreamFormatsComponent implements OnInit, OnDestroy {
|
|||||||
pageConfig: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
pageConfig: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'rbp',
|
id: 'rbp',
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
pageSizeOptions: [20, 40, 60, 80, 100]
|
pageSizeOptions: [20, 40, 60, 80, 100],
|
||||||
});
|
});
|
||||||
|
|
||||||
constructor(private notificationsService: NotificationsService,
|
constructor(private notificationsService: NotificationsService,
|
||||||
@@ -64,7 +64,7 @@ export class BitstreamFormatsComponent implements OnInit, OnDestroy {
|
|||||||
map((response: RemoteData<NoContent>) => response.hasSucceeded),
|
map((response: RemoteData<NoContent>) => response.hasSucceeded),
|
||||||
)),
|
)),
|
||||||
// wait for all responses to come in and return them as a single array
|
// wait for all responses to come in and return them as a single array
|
||||||
toArray()
|
toArray(),
|
||||||
).subscribe((results: boolean[]) => {
|
).subscribe((results: boolean[]) => {
|
||||||
// Count the number of succeeded and failed deletions
|
// Count the number of succeeded and failed deletions
|
||||||
const successResponses = results.filter((result: boolean) => result);
|
const successResponses = results.filter((result: boolean) => result);
|
||||||
@@ -101,7 +101,7 @@ export class BitstreamFormatsComponent implements OnInit, OnDestroy {
|
|||||||
return this.bitstreamFormatService.getSelectedBitstreamFormats().pipe(
|
return this.bitstreamFormatService.getSelectedBitstreamFormats().pipe(
|
||||||
map((bitstreamFormats: BitstreamFormat[]) => {
|
map((bitstreamFormats: BitstreamFormat[]) => {
|
||||||
return bitstreamFormats.find((selectedFormat) => selectedFormat.id === bitstreamFormat.id) != null;
|
return bitstreamFormats.find((selectedFormat) => selectedFormat.id === bitstreamFormat.id) != null;
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ export class BitstreamFormatsComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
const messages = observableCombineLatest(
|
const messages = observableCombineLatest(
|
||||||
this.translateService.get(`${prefix}.${suffix}.head`),
|
this.translateService.get(`${prefix}.${suffix}.head`),
|
||||||
this.translateService.get(`${prefix}.${suffix}.amount`, {amount: amount})
|
this.translateService.get(`${prefix}.${suffix}.amount`, {amount: amount}),
|
||||||
);
|
);
|
||||||
messages.subscribe(([head, content]) => {
|
messages.subscribe(([head, content]) => {
|
||||||
|
|
||||||
@@ -144,7 +144,7 @@ export class BitstreamFormatsComponent implements OnInit, OnDestroy {
|
|||||||
this.bitstreamFormats = this.paginationService.getFindListOptions(this.pageConfig.id, this.pageConfig).pipe(
|
this.bitstreamFormats = this.paginationService.getFindListOptions(this.pageConfig.id, this.pageConfig).pipe(
|
||||||
switchMap((findListOptions: FindListOptions) => {
|
switchMap((findListOptions: FindListOptions) => {
|
||||||
return this.bitstreamFormatService.findAll(findListOptions);
|
return this.bitstreamFormatService.findAll(findListOptions);
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,14 +15,14 @@ import { FormModule } from '../../../shared/form/form.module';
|
|||||||
SharedModule,
|
SharedModule,
|
||||||
RouterModule,
|
RouterModule,
|
||||||
BitstreamFormatsRoutingModule,
|
BitstreamFormatsRoutingModule,
|
||||||
FormModule
|
FormModule,
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
BitstreamFormatsComponent,
|
BitstreamFormatsComponent,
|
||||||
EditBitstreamFormatComponent,
|
EditBitstreamFormatComponent,
|
||||||
AddBitstreamFormatComponent,
|
AddBitstreamFormatComponent,
|
||||||
FormatFormComponent
|
FormatFormComponent,
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
export class BitstreamFormatsModule {
|
export class BitstreamFormatsModule {
|
||||||
|
|
||||||
|
@@ -24,7 +24,7 @@ export class BitstreamFormatsResolver implements Resolve<RemoteData<BitstreamFor
|
|||||||
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<RemoteData<BitstreamFormat>> {
|
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<RemoteData<BitstreamFormat>> {
|
||||||
return this.bitstreamFormatDataService.findById(route.params.id)
|
return this.bitstreamFormatDataService.findById(route.params.id)
|
||||||
.pipe(
|
.pipe(
|
||||||
getFirstCompletedRemoteData()
|
getFirstCompletedRemoteData(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -17,7 +17,7 @@ import { EditBitstreamFormatComponent } from './edit-bitstream-format.component'
|
|||||||
import {
|
import {
|
||||||
createFailedRemoteDataObject$,
|
createFailedRemoteDataObject$,
|
||||||
createSuccessfulRemoteDataObject,
|
createSuccessfulRemoteDataObject,
|
||||||
createSuccessfulRemoteDataObject$
|
createSuccessfulRemoteDataObject$,
|
||||||
} from '../../../../shared/remote-data.utils';
|
} from '../../../../shared/remote-data.utils';
|
||||||
|
|
||||||
describe('EditBitstreamFormatComponent', () => {
|
describe('EditBitstreamFormatComponent', () => {
|
||||||
@@ -36,8 +36,8 @@ describe('EditBitstreamFormatComponent', () => {
|
|||||||
|
|
||||||
const routeStub = {
|
const routeStub = {
|
||||||
data: observableOf({
|
data: observableOf({
|
||||||
bitstreamFormat: createSuccessfulRemoteDataObject(bitstreamFormat)
|
bitstreamFormat: createSuccessfulRemoteDataObject(bitstreamFormat),
|
||||||
})
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
let router;
|
let router;
|
||||||
@@ -48,7 +48,7 @@ describe('EditBitstreamFormatComponent', () => {
|
|||||||
router = new RouterStub();
|
router = new RouterStub();
|
||||||
notificationService = new NotificationsServiceStub();
|
notificationService = new NotificationsServiceStub();
|
||||||
bitstreamFormatDataService = jasmine.createSpyObj('bitstreamFormatDataService', {
|
bitstreamFormatDataService = jasmine.createSpyObj('bitstreamFormatDataService', {
|
||||||
updateBitstreamFormat: createSuccessfulRemoteDataObject$({})
|
updateBitstreamFormat: createSuccessfulRemoteDataObject$({}),
|
||||||
});
|
});
|
||||||
|
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
@@ -60,7 +60,7 @@ describe('EditBitstreamFormatComponent', () => {
|
|||||||
{ provide: NotificationsService, useValue: notificationService },
|
{ provide: NotificationsService, useValue: notificationService },
|
||||||
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
|
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
|
||||||
],
|
],
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ describe('EditBitstreamFormatComponent', () => {
|
|||||||
router = new RouterStub();
|
router = new RouterStub();
|
||||||
notificationService = new NotificationsServiceStub();
|
notificationService = new NotificationsServiceStub();
|
||||||
bitstreamFormatDataService = jasmine.createSpyObj('bitstreamFormatDataService', {
|
bitstreamFormatDataService = jasmine.createSpyObj('bitstreamFormatDataService', {
|
||||||
updateBitstreamFormat: createFailedRemoteDataObject$('Error', 500)
|
updateBitstreamFormat: createFailedRemoteDataObject$('Error', 500),
|
||||||
});
|
});
|
||||||
|
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
@@ -111,7 +111,7 @@ describe('EditBitstreamFormatComponent', () => {
|
|||||||
{ provide: NotificationsService, useValue: notificationService },
|
{ provide: NotificationsService, useValue: notificationService },
|
||||||
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
|
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
|
||||||
],
|
],
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
beforeEach(initBeforeEach);
|
beforeEach(initBeforeEach);
|
||||||
|
@@ -36,7 +36,7 @@ export class EditBitstreamFormatComponent implements OnInit {
|
|||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.bitstreamFormatRD$ = this.route.data.pipe(
|
this.bitstreamFormatRD$ = this.route.data.pipe(
|
||||||
map((data) => data.bitstreamFormat as RemoteData<BitstreamFormat>)
|
map((data) => data.bitstreamFormat as RemoteData<BitstreamFormat>),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ export class EditBitstreamFormatComponent implements OnInit {
|
|||||||
this.notificationService.error('admin.registries.bitstream-formats.edit.failure.head',
|
this.notificationService.error('admin.registries.bitstream-formats.edit.failure.head',
|
||||||
'admin.registries.bitstream-formats.create.edit.content');
|
'admin.registries.bitstream-formats.create.edit.content');
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -45,7 +45,7 @@ describe('FormatFormComponent', () => {
|
|||||||
providers: [
|
providers: [
|
||||||
{ provide: Router, useValue: router },
|
{ provide: Router, useValue: router },
|
||||||
],
|
],
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -9,7 +9,7 @@ import {
|
|||||||
DynamicFormService,
|
DynamicFormService,
|
||||||
DynamicInputModel,
|
DynamicInputModel,
|
||||||
DynamicSelectModel,
|
DynamicSelectModel,
|
||||||
DynamicTextAreaModel
|
DynamicTextAreaModel,
|
||||||
} from '@ng-dynamic-forms/core';
|
} from '@ng-dynamic-forms/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { hasValue, isEmpty } from '../../../../shared/empty.util';
|
import { hasValue, isEmpty } from '../../../../shared/empty.util';
|
||||||
@@ -22,7 +22,7 @@ import { environment } from '../../../../../environments/environment';
|
|||||||
*/
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-bitstream-format-form',
|
selector: 'ds-bitstream-format-form',
|
||||||
templateUrl: './format-form.component.html'
|
templateUrl: './format-form.component.html',
|
||||||
})
|
})
|
||||||
export class FormatFormComponent implements OnInit {
|
export class FormatFormComponent implements OnInit {
|
||||||
|
|
||||||
@@ -58,8 +58,8 @@ export class FormatFormComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
arrayInputElementLayout: DynamicFormControlLayout = {
|
arrayInputElementLayout: DynamicFormControlLayout = {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'col'
|
host: 'col',
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -73,10 +73,10 @@ export class FormatFormComponent implements OnInit {
|
|||||||
hint: 'admin.registries.bitstream-formats.edit.shortDescription.hint',
|
hint: 'admin.registries.bitstream-formats.edit.shortDescription.hint',
|
||||||
required: true,
|
required: true,
|
||||||
validators: {
|
validators: {
|
||||||
required: null
|
required: null,
|
||||||
},
|
},
|
||||||
errorMessages: {
|
errorMessages: {
|
||||||
required: 'Please enter a name for this bitstream format'
|
required: 'Please enter a name for this bitstream format',
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
new DynamicInputModel({
|
new DynamicInputModel({
|
||||||
@@ -100,7 +100,7 @@ export class FormatFormComponent implements OnInit {
|
|||||||
options: this.supportLevelOptions,
|
options: this.supportLevelOptions,
|
||||||
label: 'admin.registries.bitstream-formats.edit.supportLevel.label',
|
label: 'admin.registries.bitstream-formats.edit.supportLevel.label',
|
||||||
hint: 'admin.registries.bitstream-formats.edit.supportLevel.hint',
|
hint: 'admin.registries.bitstream-formats.edit.supportLevel.hint',
|
||||||
value: this.supportLevelOptions[0].value
|
value: this.supportLevelOptions[0].value,
|
||||||
|
|
||||||
}),
|
}),
|
||||||
new DynamicCheckboxModel({
|
new DynamicCheckboxModel({
|
||||||
@@ -117,8 +117,8 @@ export class FormatFormComponent implements OnInit {
|
|||||||
new DynamicInputModel({
|
new DynamicInputModel({
|
||||||
id: 'extension',
|
id: 'extension',
|
||||||
placeholder: 'admin.registries.bitstream-formats.edit.extensions.placeholder',
|
placeholder: 'admin.registries.bitstream-formats.edit.extensions.placeholder',
|
||||||
}, this.arrayInputElementLayout)
|
}, this.arrayInputElementLayout),
|
||||||
]
|
],
|
||||||
}, this.arrayElementLayout),
|
}, this.arrayElementLayout),
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ export class FormatFormComponent implements OnInit {
|
|||||||
for (let i = 0; i < extenstions.length; i++) {
|
for (let i = 0; i < extenstions.length; i++) {
|
||||||
formArray.insertGroup(i).group[0] = new DynamicInputModel({
|
formArray.insertGroup(i).group[0] = new DynamicInputModel({
|
||||||
id: `extension-${i}`,
|
id: `extension-${i}`,
|
||||||
value: extenstions[i]
|
value: extenstions[i],
|
||||||
}, this.arrayInputElementLayout);
|
}, this.arrayInputElementLayout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -165,7 +165,7 @@ export class FormatFormComponent implements OnInit {
|
|||||||
onSubmit() {
|
onSubmit() {
|
||||||
const updatedBitstreamFormat = Object.assign(new BitstreamFormat(),
|
const updatedBitstreamFormat = Object.assign(new BitstreamFormat(),
|
||||||
{
|
{
|
||||||
id: this.bitstreamFormat.id
|
id: this.bitstreamFormat.id,
|
||||||
});
|
});
|
||||||
|
|
||||||
this.formModel.forEach(
|
this.formModel.forEach(
|
||||||
|
@@ -24,7 +24,7 @@ export const MetadataRegistryActionTypes = {
|
|||||||
CANCEL_EDIT_FIELD: type('dspace/metadata-registry/CANCEL_FIELD'),
|
CANCEL_EDIT_FIELD: type('dspace/metadata-registry/CANCEL_FIELD'),
|
||||||
SELECT_FIELD: type('dspace/metadata-registry/SELECT_FIELD'),
|
SELECT_FIELD: type('dspace/metadata-registry/SELECT_FIELD'),
|
||||||
DESELECT_FIELD: type('dspace/metadata-registry/DESELECT_FIELD'),
|
DESELECT_FIELD: type('dspace/metadata-registry/DESELECT_FIELD'),
|
||||||
DESELECT_ALL_FIELD: type('dspace/metadata-registry/DESELECT_ALL_FIELD')
|
DESELECT_ALL_FIELD: type('dspace/metadata-registry/DESELECT_ALL_FIELD'),
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -31,22 +31,22 @@ describe('MetadataRegistryComponent', () => {
|
|||||||
id: 1,
|
id: 1,
|
||||||
_links: {
|
_links: {
|
||||||
self: {
|
self: {
|
||||||
href: 'https://dspace7.4science.it/dspace-spring-rest/api/core/metadataschemas/1'
|
href: 'https://dspace7.4science.it/dspace-spring-rest/api/core/metadataschemas/1',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prefix: 'dc',
|
prefix: 'dc',
|
||||||
namespace: 'http://dublincore.org/documents/dcmi-terms/'
|
namespace: 'http://dublincore.org/documents/dcmi-terms/',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
_links: {
|
_links: {
|
||||||
self: {
|
self: {
|
||||||
href: 'https://dspace7.4science.it/dspace-spring-rest/api/core/metadataschemas/2'
|
href: 'https://dspace7.4science.it/dspace-spring-rest/api/core/metadataschemas/2',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prefix: 'mock',
|
prefix: 'mock',
|
||||||
namespace: 'http://dspace.org/mockschema'
|
namespace: 'http://dspace.org/mockschema',
|
||||||
}
|
},
|
||||||
];
|
];
|
||||||
const mockSchemas = createSuccessfulRemoteDataObject$(buildPaginatedList(null, mockSchemasList));
|
const mockSchemas = createSuccessfulRemoteDataObject$(buildPaginatedList(null, mockSchemasList));
|
||||||
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */
|
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */
|
||||||
@@ -61,7 +61,7 @@ describe('MetadataRegistryComponent', () => {
|
|||||||
deleteMetadataSchema: () => observableOf(new RestResponse(true, 200, 'OK')),
|
deleteMetadataSchema: () => observableOf(new RestResponse(true, 200, 'OK')),
|
||||||
deselectAllMetadataSchema: () => {
|
deselectAllMetadataSchema: () => {
|
||||||
},
|
},
|
||||||
clearMetadataSchemaRequests: () => observableOf(undefined)
|
clearMetadataSchemaRequests: () => observableOf(undefined),
|
||||||
};
|
};
|
||||||
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
|
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
|
||||||
|
|
||||||
@@ -75,11 +75,11 @@ describe('MetadataRegistryComponent', () => {
|
|||||||
{ provide: RegistryService, useValue: registryServiceStub },
|
{ provide: RegistryService, useValue: registryServiceStub },
|
||||||
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
|
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
|
||||||
{ provide: PaginationService, useValue: paginationService },
|
{ provide: PaginationService, useValue: paginationService },
|
||||||
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }
|
{ provide: NotificationsService, useValue: new NotificationsServiceStub() },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).overrideComponent(MetadataRegistryComponent, {
|
}).overrideComponent(MetadataRegistryComponent, {
|
||||||
set: { changeDetection: ChangeDetectionStrategy.Default }
|
set: { changeDetection: ChangeDetectionStrategy.Default },
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@@ -18,7 +18,7 @@ import { PaginationService } from '../../../core/pagination/pagination.service';
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-metadata-registry',
|
selector: 'ds-metadata-registry',
|
||||||
templateUrl: './metadata-registry.component.html',
|
templateUrl: './metadata-registry.component.html',
|
||||||
styleUrls: ['./metadata-registry.component.scss']
|
styleUrls: ['./metadata-registry.component.scss'],
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* A component used for managing all existing metadata schemas within the repository.
|
* A component used for managing all existing metadata schemas within the repository.
|
||||||
@@ -36,7 +36,7 @@ export class MetadataRegistryComponent {
|
|||||||
*/
|
*/
|
||||||
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'rm',
|
id: 'rm',
|
||||||
pageSize: 25
|
pageSize: 25,
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -60,7 +60,7 @@ export class MetadataRegistryComponent {
|
|||||||
this.metadataSchemas = this.needsUpdate$.pipe(
|
this.metadataSchemas = this.needsUpdate$.pipe(
|
||||||
filter((update) => update === true),
|
filter((update) => update === true),
|
||||||
switchMap(() => this.paginationService.getCurrentPagination(this.config.id, this.config)),
|
switchMap(() => this.paginationService.getCurrentPagination(this.config.id, this.config)),
|
||||||
switchMap((currentPagination) => this.registryService.getMetadataSchemas(toFindListOptions(currentPagination)))
|
switchMap((currentPagination) => this.registryService.getMetadataSchemas(toFindListOptions(currentPagination))),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ export class MetadataRegistryComponent {
|
|||||||
*/
|
*/
|
||||||
isActive(schema: MetadataSchema): Observable<boolean> {
|
isActive(schema: MetadataSchema): Observable<boolean> {
|
||||||
return this.getActiveSchema().pipe(
|
return this.getActiveSchema().pipe(
|
||||||
map((activeSchema) => schema === activeSchema)
|
map((activeSchema) => schema === activeSchema),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ export class MetadataRegistryComponent {
|
|||||||
*/
|
*/
|
||||||
isSelected(schema: MetadataSchema): Observable<boolean> {
|
isSelected(schema: MetadataSchema): Observable<boolean> {
|
||||||
return this.registryService.getSelectedMetadataSchemas().pipe(
|
return this.registryService.getSelectedMetadataSchemas().pipe(
|
||||||
map((schemas) => schemas.find((selectedSchema) => selectedSchema === schema) != null)
|
map((schemas) => schemas.find((selectedSchema) => selectedSchema === schema) != null),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,7 +148,7 @@ export class MetadataRegistryComponent {
|
|||||||
this.registryService.deselectAllMetadataSchema();
|
this.registryService.deselectAllMetadataSchema();
|
||||||
this.registryService.cancelEditMetadataSchema();
|
this.registryService.cancelEditMetadataSchema();
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@ export class MetadataRegistryComponent {
|
|||||||
const suffix = success ? 'success' : 'failure';
|
const suffix = success ? 'success' : 'failure';
|
||||||
const messages = observableCombineLatest(
|
const messages = observableCombineLatest(
|
||||||
this.translateService.get(success ? `${prefix}.${suffix}` : `${prefix}.${suffix}`),
|
this.translateService.get(success ? `${prefix}.${suffix}` : `${prefix}.${suffix}`),
|
||||||
this.translateService.get(`${prefix}.deleted.${suffix}`, {amount: amount})
|
this.translateService.get(`${prefix}.deleted.${suffix}`, {amount: amount}),
|
||||||
);
|
);
|
||||||
messages.subscribe(([head, content]) => {
|
messages.subscribe(([head, content]) => {
|
||||||
if (success) {
|
if (success) {
|
||||||
|
@@ -8,7 +8,7 @@ import {
|
|||||||
MetadataRegistryEditFieldAction,
|
MetadataRegistryEditFieldAction,
|
||||||
MetadataRegistryEditSchemaAction,
|
MetadataRegistryEditSchemaAction,
|
||||||
MetadataRegistrySelectFieldAction,
|
MetadataRegistrySelectFieldAction,
|
||||||
MetadataRegistrySelectSchemaAction
|
MetadataRegistrySelectSchemaAction,
|
||||||
} from './metadata-registry.actions';
|
} from './metadata-registry.actions';
|
||||||
import { metadataRegistryReducer, MetadataRegistryState } from './metadata-registry.reducers';
|
import { metadataRegistryReducer, MetadataRegistryState } from './metadata-registry.reducers';
|
||||||
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
|
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
|
||||||
@@ -27,11 +27,11 @@ const schema: MetadataSchema = Object.assign(new MetadataSchema(),
|
|||||||
id: 'schema-id',
|
id: 'schema-id',
|
||||||
_links: {
|
_links: {
|
||||||
self: {
|
self: {
|
||||||
href: 'http://rest.self/schema/dc'
|
href: 'http://rest.self/schema/dc',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prefix: 'dc',
|
prefix: 'dc',
|
||||||
namespace: 'http://dublincore.org/documents/dcmi-terms/'
|
namespace: 'http://dublincore.org/documents/dcmi-terms/',
|
||||||
});
|
});
|
||||||
|
|
||||||
const schema2: MetadataSchema = Object.assign(new MetadataSchema(),
|
const schema2: MetadataSchema = Object.assign(new MetadataSchema(),
|
||||||
@@ -43,7 +43,7 @@ const schema2: MetadataSchema = Object.assign(new MetadataSchema(),
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
prefix: 'dcterms',
|
prefix: 'dcterms',
|
||||||
namespace: 'http://purl.org/dc/terms/'
|
namespace: 'http://purl.org/dc/terms/',
|
||||||
});
|
});
|
||||||
|
|
||||||
const field: MetadataField = Object.assign(new MetadataField(),
|
const field: MetadataField = Object.assign(new MetadataField(),
|
||||||
@@ -57,7 +57,7 @@ const field: MetadataField = Object.assign(new MetadataField(),
|
|||||||
element: 'contributor',
|
element: 'contributor',
|
||||||
qualifier: 'author',
|
qualifier: 'author',
|
||||||
scopeNote: 'Author of an item',
|
scopeNote: 'Author of an item',
|
||||||
schema: schema
|
schema: schema,
|
||||||
});
|
});
|
||||||
|
|
||||||
const field2: MetadataField = Object.assign(new MetadataField(),
|
const field2: MetadataField = Object.assign(new MetadataField(),
|
||||||
@@ -71,35 +71,35 @@ const field2: MetadataField = Object.assign(new MetadataField(),
|
|||||||
element: 'title',
|
element: 'title',
|
||||||
qualifier: null,
|
qualifier: null,
|
||||||
scopeNote: 'Title of an item',
|
scopeNote: 'Title of an item',
|
||||||
schema: schema
|
schema: schema,
|
||||||
});
|
});
|
||||||
|
|
||||||
const initialState: MetadataRegistryState = {
|
const initialState: MetadataRegistryState = {
|
||||||
editSchema: null,
|
editSchema: null,
|
||||||
selectedSchemas: [],
|
selectedSchemas: [],
|
||||||
editField: null,
|
editField: null,
|
||||||
selectedFields: []
|
selectedFields: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
const editState: MetadataRegistryState = {
|
const editState: MetadataRegistryState = {
|
||||||
editSchema: schema,
|
editSchema: schema,
|
||||||
selectedSchemas: [],
|
selectedSchemas: [],
|
||||||
editField: field,
|
editField: field,
|
||||||
selectedFields: []
|
selectedFields: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
const selectState: MetadataRegistryState = {
|
const selectState: MetadataRegistryState = {
|
||||||
editSchema: null,
|
editSchema: null,
|
||||||
selectedSchemas: [schema2],
|
selectedSchemas: [schema2],
|
||||||
editField: null,
|
editField: null,
|
||||||
selectedFields: [field2]
|
selectedFields: [field2],
|
||||||
};
|
};
|
||||||
|
|
||||||
const moreSelectState: MetadataRegistryState = {
|
const moreSelectState: MetadataRegistryState = {
|
||||||
editSchema: null,
|
editSchema: null,
|
||||||
selectedSchemas: [schema, schema2],
|
selectedSchemas: [schema, schema2],
|
||||||
editField: null,
|
editField: null,
|
||||||
selectedFields: [field, field2]
|
selectedFields: [field, field2],
|
||||||
};
|
};
|
||||||
|
|
||||||
describe('metadataRegistryReducer', () => {
|
describe('metadataRegistryReducer', () => {
|
||||||
|
@@ -6,7 +6,7 @@ import {
|
|||||||
MetadataRegistryEditFieldAction,
|
MetadataRegistryEditFieldAction,
|
||||||
MetadataRegistryEditSchemaAction,
|
MetadataRegistryEditSchemaAction,
|
||||||
MetadataRegistrySelectFieldAction,
|
MetadataRegistrySelectFieldAction,
|
||||||
MetadataRegistrySelectSchemaAction
|
MetadataRegistrySelectSchemaAction,
|
||||||
} from './metadata-registry.actions';
|
} from './metadata-registry.actions';
|
||||||
import { MetadataField } from '../../../core/metadata/metadata-field.model';
|
import { MetadataField } from '../../../core/metadata/metadata-field.model';
|
||||||
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
|
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
|
||||||
@@ -29,7 +29,7 @@ const initialState: MetadataRegistryState = {
|
|||||||
editSchema: null,
|
editSchema: null,
|
||||||
selectedSchemas: [],
|
selectedSchemas: [],
|
||||||
editField: null,
|
editField: null,
|
||||||
selectedFields: []
|
selectedFields: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,65 +43,65 @@ export function metadataRegistryReducer(state = initialState, action: MetadataRe
|
|||||||
|
|
||||||
case MetadataRegistryActionTypes.EDIT_SCHEMA: {
|
case MetadataRegistryActionTypes.EDIT_SCHEMA: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
editSchema: (action as MetadataRegistryEditSchemaAction).schema
|
editSchema: (action as MetadataRegistryEditSchemaAction).schema,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case MetadataRegistryActionTypes.CANCEL_EDIT_SCHEMA: {
|
case MetadataRegistryActionTypes.CANCEL_EDIT_SCHEMA: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
editSchema: null
|
editSchema: null,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case MetadataRegistryActionTypes.SELECT_SCHEMA: {
|
case MetadataRegistryActionTypes.SELECT_SCHEMA: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
selectedSchemas: [...state.selectedSchemas, (action as MetadataRegistrySelectSchemaAction).schema]
|
selectedSchemas: [...state.selectedSchemas, (action as MetadataRegistrySelectSchemaAction).schema],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case MetadataRegistryActionTypes.DESELECT_SCHEMA: {
|
case MetadataRegistryActionTypes.DESELECT_SCHEMA: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
selectedSchemas: state.selectedSchemas.filter(
|
selectedSchemas: state.selectedSchemas.filter(
|
||||||
(selectedSchema) => selectedSchema !== (action as MetadataRegistryDeselectSchemaAction).schema
|
(selectedSchema) => selectedSchema !== (action as MetadataRegistryDeselectSchemaAction).schema,
|
||||||
)
|
),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case MetadataRegistryActionTypes.DESELECT_ALL_SCHEMA: {
|
case MetadataRegistryActionTypes.DESELECT_ALL_SCHEMA: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
selectedSchemas: []
|
selectedSchemas: [],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case MetadataRegistryActionTypes.EDIT_FIELD: {
|
case MetadataRegistryActionTypes.EDIT_FIELD: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
editField: (action as MetadataRegistryEditFieldAction).field
|
editField: (action as MetadataRegistryEditFieldAction).field,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case MetadataRegistryActionTypes.CANCEL_EDIT_FIELD: {
|
case MetadataRegistryActionTypes.CANCEL_EDIT_FIELD: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
editField: null
|
editField: null,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case MetadataRegistryActionTypes.SELECT_FIELD: {
|
case MetadataRegistryActionTypes.SELECT_FIELD: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
selectedFields: [...state.selectedFields, (action as MetadataRegistrySelectFieldAction).field]
|
selectedFields: [...state.selectedFields, (action as MetadataRegistrySelectFieldAction).field],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case MetadataRegistryActionTypes.DESELECT_FIELD: {
|
case MetadataRegistryActionTypes.DESELECT_FIELD: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
selectedFields: state.selectedFields.filter(
|
selectedFields: state.selectedFields.filter(
|
||||||
(selectedField) => selectedField !== (action as MetadataRegistryDeselectFieldAction).field
|
(selectedField) => selectedField !== (action as MetadataRegistryDeselectFieldAction).field,
|
||||||
)
|
),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
case MetadataRegistryActionTypes.DESELECT_ALL_FIELD: {
|
case MetadataRegistryActionTypes.DESELECT_ALL_FIELD: {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
selectedFields: []
|
selectedFields: [],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -22,7 +22,7 @@ describe('MetadataSchemaFormComponent', () => {
|
|||||||
createOrUpdateMetadataSchema: (schema: MetadataSchema) => observableOf(schema),
|
createOrUpdateMetadataSchema: (schema: MetadataSchema) => observableOf(schema),
|
||||||
cancelEditMetadataSchema: () => {
|
cancelEditMetadataSchema: () => {
|
||||||
},
|
},
|
||||||
clearMetadataSchemaRequests: () => observableOf(undefined)
|
clearMetadataSchemaRequests: () => observableOf(undefined),
|
||||||
};
|
};
|
||||||
const formBuilderServiceStub = {
|
const formBuilderServiceStub = {
|
||||||
createFormGroup: () => {
|
createFormGroup: () => {
|
||||||
@@ -32,7 +32,7 @@ describe('MetadataSchemaFormComponent', () => {
|
|||||||
reset(_value?: any, _options?: { onlySelf?: boolean; emitEvent?: boolean; }): void {
|
reset(_value?: any, _options?: { onlySelf?: boolean; emitEvent?: boolean; }): void {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
|
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
|
||||||
|
|
||||||
@@ -42,9 +42,9 @@ describe('MetadataSchemaFormComponent', () => {
|
|||||||
declarations: [MetadataSchemaFormComponent, EnumKeysPipe],
|
declarations: [MetadataSchemaFormComponent, EnumKeysPipe],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: RegistryService, useValue: registryServiceStub },
|
{ provide: RegistryService, useValue: registryServiceStub },
|
||||||
{ provide: FormBuilderService, useValue: formBuilderServiceStub }
|
{ provide: FormBuilderService, useValue: formBuilderServiceStub },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ describe('MetadataSchemaFormComponent', () => {
|
|||||||
|
|
||||||
const expected = Object.assign(new MetadataSchema(), {
|
const expected = Object.assign(new MetadataSchema(), {
|
||||||
namespace: namespace,
|
namespace: namespace,
|
||||||
prefix: prefix
|
prefix: prefix,
|
||||||
} as MetadataSchema);
|
} as MetadataSchema);
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@@ -90,7 +90,7 @@ describe('MetadataSchemaFormComponent', () => {
|
|||||||
const expectedWithId = Object.assign(new MetadataSchema(), {
|
const expectedWithId = Object.assign(new MetadataSchema(), {
|
||||||
id: 1,
|
id: 1,
|
||||||
namespace: namespace,
|
namespace: namespace,
|
||||||
prefix: prefix
|
prefix: prefix,
|
||||||
} as MetadataSchema);
|
} as MetadataSchema);
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
@@ -3,7 +3,7 @@ import {
|
|||||||
DynamicFormControlModel,
|
DynamicFormControlModel,
|
||||||
DynamicFormGroupModel,
|
DynamicFormGroupModel,
|
||||||
DynamicFormLayout,
|
DynamicFormLayout,
|
||||||
DynamicInputModel
|
DynamicInputModel,
|
||||||
} from '@ng-dynamic-forms/core';
|
} from '@ng-dynamic-forms/core';
|
||||||
import { UntypedFormGroup } from '@angular/forms';
|
import { UntypedFormGroup } from '@angular/forms';
|
||||||
import { RegistryService } from '../../../../core/registry/registry.service';
|
import { RegistryService } from '../../../../core/registry/registry.service';
|
||||||
@@ -15,7 +15,7 @@ import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model'
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-metadata-schema-form',
|
selector: 'ds-metadata-schema-form',
|
||||||
templateUrl: './metadata-schema-form.component.html'
|
templateUrl: './metadata-schema-form.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* A form used for creating and editing metadata schemas
|
* A form used for creating and editing metadata schemas
|
||||||
@@ -53,14 +53,14 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy {
|
|||||||
formLayout: DynamicFormLayout = {
|
formLayout: DynamicFormLayout = {
|
||||||
name: {
|
name: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'col col-sm-6 d-inline-block'
|
host: 'col col-sm-6 d-inline-block',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
namespace: {
|
namespace: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'col col-sm-6 d-inline-block'
|
host: 'col col-sm-6 d-inline-block',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -79,7 +79,7 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy {
|
|||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
combineLatest([
|
combineLatest([
|
||||||
this.translateService.get(`${this.messagePrefix}.name`),
|
this.translateService.get(`${this.messagePrefix}.name`),
|
||||||
this.translateService.get(`${this.messagePrefix}.namespace`)
|
this.translateService.get(`${this.messagePrefix}.namespace`),
|
||||||
]).subscribe(([name, namespace]) => {
|
]).subscribe(([name, namespace]) => {
|
||||||
this.name = new DynamicInputModel({
|
this.name = new DynamicInputModel({
|
||||||
id: 'name',
|
id: 'name',
|
||||||
@@ -113,8 +113,8 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy {
|
|||||||
new DynamicFormGroupModel(
|
new DynamicFormGroupModel(
|
||||||
{
|
{
|
||||||
id: 'metadatadataschemagroup',
|
id: 'metadatadataschemagroup',
|
||||||
group:[this.namespace, this.name]
|
group:[this.namespace, this.name],
|
||||||
})
|
}),
|
||||||
];
|
];
|
||||||
this.formGroup = this.formBuilderService.createFormGroup(this.formModel);
|
this.formGroup = this.formBuilderService.createFormGroup(this.formModel);
|
||||||
this.registryService.getActiveMetadataSchema().subscribe((schema: MetadataSchema) => {
|
this.registryService.getActiveMetadataSchema().subscribe((schema: MetadataSchema) => {
|
||||||
@@ -152,7 +152,7 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy {
|
|||||||
(schema: MetadataSchema) => {
|
(schema: MetadataSchema) => {
|
||||||
const values = {
|
const values = {
|
||||||
prefix: this.name.value,
|
prefix: this.name.value,
|
||||||
namespace: this.namespace.value
|
namespace: this.namespace.value,
|
||||||
};
|
};
|
||||||
if (schema == null) {
|
if (schema == null) {
|
||||||
this.registryService.createOrUpdateMetadataSchema(Object.assign(new MetadataSchema(), values)).subscribe((newSchema) => {
|
this.registryService.createOrUpdateMetadataSchema(Object.assign(new MetadataSchema(), values)).subscribe((newSchema) => {
|
||||||
@@ -169,7 +169,7 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
this.clearFields();
|
this.clearFields();
|
||||||
this.registryService.cancelEditMetadataSchema();
|
this.registryService.cancelEditMetadataSchema();
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -21,7 +21,7 @@ describe('MetadataFieldFormComponent', () => {
|
|||||||
const metadataSchema = Object.assign(new MetadataSchema(), {
|
const metadataSchema = Object.assign(new MetadataSchema(), {
|
||||||
id: 1,
|
id: 1,
|
||||||
namespace: 'fake schema',
|
namespace: 'fake schema',
|
||||||
prefix: 'fake'
|
prefix: 'fake',
|
||||||
});
|
});
|
||||||
|
|
||||||
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */
|
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */
|
||||||
@@ -33,7 +33,7 @@ describe('MetadataFieldFormComponent', () => {
|
|||||||
},
|
},
|
||||||
cancelEditMetadataSchema: () => {
|
cancelEditMetadataSchema: () => {
|
||||||
},
|
},
|
||||||
clearMetadataFieldRequests: () => observableOf(undefined)
|
clearMetadataFieldRequests: () => observableOf(undefined),
|
||||||
};
|
};
|
||||||
const formBuilderServiceStub = {
|
const formBuilderServiceStub = {
|
||||||
createFormGroup: () => {
|
createFormGroup: () => {
|
||||||
@@ -43,7 +43,7 @@ describe('MetadataFieldFormComponent', () => {
|
|||||||
reset(_value?: any, _options?: { onlySelf?: boolean; emitEvent?: boolean; }): void {
|
reset(_value?: any, _options?: { onlySelf?: boolean; emitEvent?: boolean; }): void {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
|
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
|
||||||
|
|
||||||
@@ -53,9 +53,9 @@ describe('MetadataFieldFormComponent', () => {
|
|||||||
declarations: [MetadataFieldFormComponent, EnumKeysPipe],
|
declarations: [MetadataFieldFormComponent, EnumKeysPipe],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: RegistryService, useValue: registryServiceStub },
|
{ provide: RegistryService, useValue: registryServiceStub },
|
||||||
{ provide: FormBuilderService, useValue: formBuilderServiceStub }
|
{ provide: FormBuilderService, useValue: formBuilderServiceStub },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ describe('MetadataFieldFormComponent', () => {
|
|||||||
const expected = Object.assign(new MetadataField(), {
|
const expected = Object.assign(new MetadataField(), {
|
||||||
element: element,
|
element: element,
|
||||||
qualifier: qualifier,
|
qualifier: qualifier,
|
||||||
scopeNote: scopeNote
|
scopeNote: scopeNote,
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@@ -112,7 +112,7 @@ describe('MetadataFieldFormComponent', () => {
|
|||||||
schema: metadataSchema,
|
schema: metadataSchema,
|
||||||
element: element,
|
element: element,
|
||||||
qualifier: qualifier,
|
qualifier: qualifier,
|
||||||
scopeNote: scopeNote
|
scopeNote: scopeNote,
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
@@ -3,7 +3,7 @@ import {
|
|||||||
DynamicFormControlModel,
|
DynamicFormControlModel,
|
||||||
DynamicFormGroupModel,
|
DynamicFormGroupModel,
|
||||||
DynamicFormLayout,
|
DynamicFormLayout,
|
||||||
DynamicInputModel
|
DynamicInputModel,
|
||||||
} from '@ng-dynamic-forms/core';
|
} from '@ng-dynamic-forms/core';
|
||||||
import { UntypedFormGroup } from '@angular/forms';
|
import { UntypedFormGroup } from '@angular/forms';
|
||||||
import { RegistryService } from '../../../../core/registry/registry.service';
|
import { RegistryService } from '../../../../core/registry/registry.service';
|
||||||
@@ -16,7 +16,7 @@ import { MetadataField } from '../../../../core/metadata/metadata-field.model';
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-metadata-field-form',
|
selector: 'ds-metadata-field-form',
|
||||||
templateUrl: './metadata-field-form.component.html'
|
templateUrl: './metadata-field-form.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* A form used for creating and editing metadata fields
|
* A form used for creating and editing metadata fields
|
||||||
@@ -64,19 +64,19 @@ export class MetadataFieldFormComponent implements OnInit, OnDestroy {
|
|||||||
formLayout: DynamicFormLayout = {
|
formLayout: DynamicFormLayout = {
|
||||||
element: {
|
element: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'col col-sm-6 d-inline-block'
|
host: 'col col-sm-6 d-inline-block',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
qualifier: {
|
qualifier: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'col col-sm-6 d-inline-block'
|
host: 'col col-sm-6 d-inline-block',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
scopeNote: {
|
scopeNote: {
|
||||||
grid: {
|
grid: {
|
||||||
host: 'col col-sm-12 d-inline-block'
|
host: 'col col-sm-12 d-inline-block',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -101,7 +101,7 @@ export class MetadataFieldFormComponent implements OnInit, OnDestroy {
|
|||||||
combineLatest([
|
combineLatest([
|
||||||
this.translateService.get(`${this.messagePrefix}.element`),
|
this.translateService.get(`${this.messagePrefix}.element`),
|
||||||
this.translateService.get(`${this.messagePrefix}.qualifier`),
|
this.translateService.get(`${this.messagePrefix}.qualifier`),
|
||||||
this.translateService.get(`${this.messagePrefix}.scopenote`)
|
this.translateService.get(`${this.messagePrefix}.scopenote`),
|
||||||
]).subscribe(([element, qualifier, scopenote]) => {
|
]).subscribe(([element, qualifier, scopenote]) => {
|
||||||
this.element = new DynamicInputModel({
|
this.element = new DynamicInputModel({
|
||||||
id: 'element',
|
id: 'element',
|
||||||
@@ -142,8 +142,8 @@ export class MetadataFieldFormComponent implements OnInit, OnDestroy {
|
|||||||
new DynamicFormGroupModel(
|
new DynamicFormGroupModel(
|
||||||
{
|
{
|
||||||
id: 'metadatadatafieldgroup',
|
id: 'metadatadatafieldgroup',
|
||||||
group:[this.element, this.qualifier, this.scopeNote]
|
group:[this.element, this.qualifier, this.scopeNote],
|
||||||
})
|
}),
|
||||||
];
|
];
|
||||||
this.formGroup = this.formBuilderService.createFormGroup(this.formModel);
|
this.formGroup = this.formBuilderService.createFormGroup(this.formModel);
|
||||||
this.registryService.getActiveMetadataField().subscribe((field: MetadataField): void => {
|
this.registryService.getActiveMetadataField().subscribe((field: MetadataField): void => {
|
||||||
@@ -200,7 +200,7 @@ export class MetadataFieldFormComponent implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
this.clearFields();
|
this.clearFields();
|
||||||
this.registryService.cancelEditMetadataField();
|
this.registryService.cancelEditMetadataField();
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -39,7 +39,7 @@ describe('MetadataSchemaComponent', () => {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
prefix: 'dc',
|
prefix: 'dc',
|
||||||
namespace: 'http://dublincore.org/documents/dcmi-terms/'
|
namespace: 'http://dublincore.org/documents/dcmi-terms/',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
@@ -49,8 +49,8 @@ describe('MetadataSchemaComponent', () => {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
prefix: 'mock',
|
prefix: 'mock',
|
||||||
namespace: 'http://dspace.org/mockschema'
|
namespace: 'http://dspace.org/mockschema',
|
||||||
}
|
},
|
||||||
];
|
];
|
||||||
const mockFieldsList = [
|
const mockFieldsList = [
|
||||||
{
|
{
|
||||||
@@ -63,7 +63,7 @@ describe('MetadataSchemaComponent', () => {
|
|||||||
element: 'contributor',
|
element: 'contributor',
|
||||||
qualifier: 'advisor',
|
qualifier: 'advisor',
|
||||||
scopeNote: null,
|
scopeNote: null,
|
||||||
schema: createSuccessfulRemoteDataObject$(mockSchemasList[0])
|
schema: createSuccessfulRemoteDataObject$(mockSchemasList[0]),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
@@ -75,7 +75,7 @@ describe('MetadataSchemaComponent', () => {
|
|||||||
element: 'contributor',
|
element: 'contributor',
|
||||||
qualifier: 'author',
|
qualifier: 'author',
|
||||||
scopeNote: null,
|
scopeNote: null,
|
||||||
schema: createSuccessfulRemoteDataObject$(mockSchemasList[0])
|
schema: createSuccessfulRemoteDataObject$(mockSchemasList[0]),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 3,
|
id: 3,
|
||||||
@@ -87,7 +87,7 @@ describe('MetadataSchemaComponent', () => {
|
|||||||
element: 'contributor',
|
element: 'contributor',
|
||||||
qualifier: 'editor',
|
qualifier: 'editor',
|
||||||
scopeNote: 'test scope note',
|
scopeNote: 'test scope note',
|
||||||
schema: createSuccessfulRemoteDataObject$(mockSchemasList[1])
|
schema: createSuccessfulRemoteDataObject$(mockSchemasList[1]),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 4,
|
id: 4,
|
||||||
@@ -99,8 +99,8 @@ describe('MetadataSchemaComponent', () => {
|
|||||||
element: 'contributor',
|
element: 'contributor',
|
||||||
qualifier: 'illustrator',
|
qualifier: 'illustrator',
|
||||||
scopeNote: null,
|
scopeNote: null,
|
||||||
schema: createSuccessfulRemoteDataObject$(mockSchemasList[1])
|
schema: createSuccessfulRemoteDataObject$(mockSchemasList[1]),
|
||||||
}
|
},
|
||||||
];
|
];
|
||||||
const mockSchemas = createSuccessfulRemoteDataObject$(buildPaginatedList(null, mockSchemasList));
|
const mockSchemas = createSuccessfulRemoteDataObject$(buildPaginatedList(null, mockSchemasList));
|
||||||
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */
|
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */
|
||||||
@@ -117,14 +117,14 @@ describe('MetadataSchemaComponent', () => {
|
|||||||
deleteMetadataField: () => observableOf(new RestResponse(true, 200, 'OK')),
|
deleteMetadataField: () => observableOf(new RestResponse(true, 200, 'OK')),
|
||||||
deselectAllMetadataField: () => {
|
deselectAllMetadataField: () => {
|
||||||
},
|
},
|
||||||
clearMetadataFieldRequests: () => observableOf(undefined)
|
clearMetadataFieldRequests: () => observableOf(undefined),
|
||||||
};
|
};
|
||||||
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
|
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
|
||||||
const schemaNameParam = 'mock';
|
const schemaNameParam = 'mock';
|
||||||
const activatedRouteStub = Object.assign(new ActivatedRouteStub(), {
|
const activatedRouteStub = Object.assign(new ActivatedRouteStub(), {
|
||||||
params: observableOf({
|
params: observableOf({
|
||||||
schemaName: schemaNameParam
|
schemaName: schemaNameParam,
|
||||||
})
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
const paginationService = new PaginationServiceStub();
|
const paginationService = new PaginationServiceStub();
|
||||||
@@ -139,9 +139,9 @@ describe('MetadataSchemaComponent', () => {
|
|||||||
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
|
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
|
||||||
{ provide: Router, useValue: new RouterStub() },
|
{ provide: Router, useValue: new RouterStub() },
|
||||||
{ provide: PaginationService, useValue: paginationService },
|
{ provide: PaginationService, useValue: paginationService },
|
||||||
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }
|
{ provide: NotificationsService, useValue: new NotificationsServiceStub() },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@@ -7,7 +7,7 @@ import {
|
|||||||
combineLatest,
|
combineLatest,
|
||||||
Observable,
|
Observable,
|
||||||
of as observableOf,
|
of as observableOf,
|
||||||
zip
|
zip,
|
||||||
} from 'rxjs';
|
} from 'rxjs';
|
||||||
import { RemoteData } from '../../../core/data/remote-data';
|
import { RemoteData } from '../../../core/data/remote-data';
|
||||||
import { PaginatedList } from '../../../core/data/paginated-list.model';
|
import { PaginatedList } from '../../../core/data/paginated-list.model';
|
||||||
@@ -26,7 +26,7 @@ import { PaginationService } from '../../../core/pagination/pagination.service';
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-metadata-schema',
|
selector: 'ds-metadata-schema',
|
||||||
templateUrl: './metadata-schema.component.html',
|
templateUrl: './metadata-schema.component.html',
|
||||||
styleUrls: ['./metadata-schema.component.scss']
|
styleUrls: ['./metadata-schema.component.scss'],
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* A component used for managing all existing metadata fields within the current metadata schema.
|
* A component used for managing all existing metadata fields within the current metadata schema.
|
||||||
@@ -49,7 +49,7 @@ export class MetadataSchemaComponent implements OnInit {
|
|||||||
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'rm',
|
id: 'rm',
|
||||||
pageSize: 25,
|
pageSize: 25,
|
||||||
pageSizeOptions: [25, 50, 100, 200]
|
pageSizeOptions: [25, 50, 100, 200],
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -92,7 +92,7 @@ export class MetadataSchemaComponent implements OnInit {
|
|||||||
this.needsUpdate$.next(false);
|
this.needsUpdate$.next(false);
|
||||||
}
|
}
|
||||||
return this.registryService.getMetadataFieldsBySchema(schema, toFindListOptions(currentPagination), !update, true);
|
return this.registryService.getMetadataFieldsBySchema(schema, toFindListOptions(currentPagination), !update, true);
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ export class MetadataSchemaComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
isActive(field: MetadataField): Observable<boolean> {
|
isActive(field: MetadataField): Observable<boolean> {
|
||||||
return this.getActiveField().pipe(
|
return this.getActiveField().pipe(
|
||||||
map((activeField) => field === activeField)
|
map((activeField) => field === activeField),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,7 +153,7 @@ export class MetadataSchemaComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
isSelected(field: MetadataField): Observable<boolean> {
|
isSelected(field: MetadataField): Observable<boolean> {
|
||||||
return this.registryService.getSelectedMetadataFields().pipe(
|
return this.registryService.getSelectedMetadataFields().pipe(
|
||||||
map((fields) => fields.find((selectedField) => selectedField === field) != null)
|
map((fields) => fields.find((selectedField) => selectedField === field) != null),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,7 +181,7 @@ export class MetadataSchemaComponent implements OnInit {
|
|||||||
this.registryService.deselectAllMetadataField();
|
this.registryService.deselectAllMetadataField();
|
||||||
this.registryService.cancelEditMetadataField();
|
this.registryService.cancelEditMetadataField();
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,7 +195,7 @@ export class MetadataSchemaComponent implements OnInit {
|
|||||||
const suffix = success ? 'success' : 'failure';
|
const suffix = success ? 'success' : 'failure';
|
||||||
const messages = observableCombineLatest(
|
const messages = observableCombineLatest(
|
||||||
this.translateService.get(success ? `${prefix}.${suffix}` : `${prefix}.${suffix}`),
|
this.translateService.get(success ? `${prefix}.${suffix}` : `${prefix}.${suffix}`),
|
||||||
this.translateService.get(`${prefix}.field.deleted.${suffix}`, { amount: amount })
|
this.translateService.get(`${prefix}.field.deleted.${suffix}`, { amount: amount }),
|
||||||
);
|
);
|
||||||
messages.subscribe(([head, content]) => {
|
messages.subscribe(([head, content]) => {
|
||||||
if (success) {
|
if (success) {
|
||||||
|
@@ -21,44 +21,44 @@ import { BatchImportPageComponent } from './admin-import-batch-page/batch-import
|
|||||||
path: 'search',
|
path: 'search',
|
||||||
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
||||||
component: AdminSearchPageComponent,
|
component: AdminSearchPageComponent,
|
||||||
data: { title: 'admin.search.title', breadcrumbKey: 'admin.search' }
|
data: { title: 'admin.search.title', breadcrumbKey: 'admin.search' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'workflow',
|
path: 'workflow',
|
||||||
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
||||||
component: AdminWorkflowPageComponent,
|
component: AdminWorkflowPageComponent,
|
||||||
data: { title: 'admin.workflow.title', breadcrumbKey: 'admin.workflow' }
|
data: { title: 'admin.workflow.title', breadcrumbKey: 'admin.workflow' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'curation-tasks',
|
path: 'curation-tasks',
|
||||||
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
||||||
component: AdminCurationTasksComponent,
|
component: AdminCurationTasksComponent,
|
||||||
data: { title: 'admin.curation-tasks.title', breadcrumbKey: 'admin.curation-tasks' }
|
data: { title: 'admin.curation-tasks.title', breadcrumbKey: 'admin.curation-tasks' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'metadata-import',
|
path: 'metadata-import',
|
||||||
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
||||||
component: MetadataImportPageComponent,
|
component: MetadataImportPageComponent,
|
||||||
data: { title: 'admin.metadata-import.title', breadcrumbKey: 'admin.metadata-import' }
|
data: { title: 'admin.metadata-import.title', breadcrumbKey: 'admin.metadata-import' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'batch-import',
|
path: 'batch-import',
|
||||||
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
||||||
component: BatchImportPageComponent,
|
component: BatchImportPageComponent,
|
||||||
data: { title: 'admin.batch-import.title', breadcrumbKey: 'admin.batch-import' }
|
data: { title: 'admin.batch-import.title', breadcrumbKey: 'admin.batch-import' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'system-wide-alert',
|
path: 'system-wide-alert',
|
||||||
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
resolve: { breadcrumb: I18nBreadcrumbResolver },
|
||||||
loadChildren: () => import('../system-wide-alert/system-wide-alert.module').then((m) => m.SystemWideAlertModule),
|
loadChildren: () => import('../system-wide-alert/system-wide-alert.module').then((m) => m.SystemWideAlertModule),
|
||||||
data: {title: 'admin.system-wide-alert.title', breadcrumbKey: 'admin.system-wide-alert'}
|
data: {title: 'admin.system-wide-alert.title', breadcrumbKey: 'admin.system-wide-alert'},
|
||||||
},
|
},
|
||||||
])
|
]),
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
I18nBreadcrumbResolver,
|
I18nBreadcrumbResolver,
|
||||||
I18nBreadcrumbsService
|
I18nBreadcrumbsService,
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
export class AdminRoutingModule {
|
export class AdminRoutingModule {
|
||||||
|
|
||||||
|
@@ -10,7 +10,7 @@ describe('AdminSearchPageComponent', () => {
|
|||||||
beforeEach(waitForAsync(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
declarations: [AdminSearchPageComponent],
|
declarations: [AdminSearchPageComponent],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -4,7 +4,7 @@ import { Context } from '../../core/shared/context.model';
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-admin-search-page',
|
selector: 'ds-admin-search-page',
|
||||||
templateUrl: './admin-search-page.component.html',
|
templateUrl: './admin-search-page.component.html',
|
||||||
styleUrls: ['./admin-search-page.component.scss']
|
styleUrls: ['./admin-search-page.component.scss'],
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -37,7 +37,7 @@ describe('CollectionAdminSearchResultGridElementComponent', () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const linkService = jasmine.createSpyObj('linkService', {
|
const linkService = jasmine.createSpyObj('linkService', {
|
||||||
resolveLink: {}
|
resolveLink: {},
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
@@ -47,7 +47,7 @@ describe('CollectionAdminSearchResultGridElementComponent', () => {
|
|||||||
NoopAnimationsModule,
|
NoopAnimationsModule,
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule.withRoutes([]),
|
RouterTestingModule.withRoutes([]),
|
||||||
SharedModule
|
SharedModule,
|
||||||
],
|
],
|
||||||
declarations: [CollectionAdminSearchResultGridElementComponent],
|
declarations: [CollectionAdminSearchResultGridElementComponent],
|
||||||
providers: [
|
providers: [
|
||||||
@@ -58,7 +58,7 @@ describe('CollectionAdminSearchResultGridElementComponent', () => {
|
|||||||
{ provide: FileService, useClass: FileServiceStub },
|
{ provide: FileService, useClass: FileServiceStub },
|
||||||
{ provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub },
|
{ provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub },
|
||||||
{ provide: ThemeService, useValue: getMockThemeService() },
|
{ provide: ThemeService, useValue: getMockThemeService() },
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -11,7 +11,7 @@ import { getCollectionEditRoute } from '../../../../../collection-page/collectio
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-collection-admin-search-result-list-element',
|
selector: 'ds-collection-admin-search-result-list-element',
|
||||||
styleUrls: ['./collection-admin-search-result-grid-element.component.scss'],
|
styleUrls: ['./collection-admin-search-result-grid-element.component.scss'],
|
||||||
templateUrl: './collection-admin-search-result-grid-element.component.html'
|
templateUrl: './collection-admin-search-result-grid-element.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying a list element for a collection search result on the admin search page
|
* The component for displaying a list element for a collection search result on the admin search page
|
||||||
|
@@ -39,7 +39,7 @@ describe('CommunityAdminSearchResultGridElementComponent', () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const linkService = jasmine.createSpyObj('linkService', {
|
const linkService = jasmine.createSpyObj('linkService', {
|
||||||
resolveLink: {}
|
resolveLink: {},
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
@@ -49,7 +49,7 @@ describe('CommunityAdminSearchResultGridElementComponent', () => {
|
|||||||
NoopAnimationsModule,
|
NoopAnimationsModule,
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule.withRoutes([]),
|
RouterTestingModule.withRoutes([]),
|
||||||
SharedModule
|
SharedModule,
|
||||||
],
|
],
|
||||||
declarations: [CommunityAdminSearchResultGridElementComponent],
|
declarations: [CommunityAdminSearchResultGridElementComponent],
|
||||||
providers: [
|
providers: [
|
||||||
@@ -61,7 +61,7 @@ describe('CommunityAdminSearchResultGridElementComponent', () => {
|
|||||||
{ provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub },
|
{ provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub },
|
||||||
{ provide: ThemeService, useValue: getMockThemeService() },
|
{ provide: ThemeService, useValue: getMockThemeService() },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -11,7 +11,7 @@ import { getCommunityEditRoute } from '../../../../../community-page/community-p
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-community-admin-search-result-grid-element',
|
selector: 'ds-community-admin-search-result-grid-element',
|
||||||
styleUrls: ['./community-admin-search-result-grid-element.component.scss'],
|
styleUrls: ['./community-admin-search-result-grid-element.component.scss'],
|
||||||
templateUrl: './community-admin-search-result-grid-element.component.html'
|
templateUrl: './community-admin-search-result-grid-element.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying a list element for a community search result on the admin search page
|
* The component for displaying a list element for a community search result on the admin search page
|
||||||
|
@@ -36,13 +36,13 @@ describe('ItemAdminSearchResultGridElementComponent', () => {
|
|||||||
const mockBitstreamDataService = {
|
const mockBitstreamDataService = {
|
||||||
getThumbnailFor(item: Item): Observable<RemoteData<Bitstream>> {
|
getThumbnailFor(item: Item): Observable<RemoteData<Bitstream>> {
|
||||||
return createSuccessfulRemoteDataObject$(new Bitstream());
|
return createSuccessfulRemoteDataObject$(new Bitstream());
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const mockAccessStatusDataService = {
|
const mockAccessStatusDataService = {
|
||||||
findAccessStatusFor(item: Item): Observable<RemoteData<AccessStatusObject>> {
|
findAccessStatusFor(item: Item): Observable<RemoteData<AccessStatusObject>> {
|
||||||
return createSuccessfulRemoteDataObject$(new AccessStatusObject());
|
return createSuccessfulRemoteDataObject$(new AccessStatusObject());
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const mockThemeService = getMockThemeService();
|
const mockThemeService = getMockThemeService();
|
||||||
@@ -63,7 +63,7 @@ describe('ItemAdminSearchResultGridElementComponent', () => {
|
|||||||
NoopAnimationsModule,
|
NoopAnimationsModule,
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule.withRoutes([]),
|
RouterTestingModule.withRoutes([]),
|
||||||
SharedModule
|
SharedModule,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: TruncatableService, useValue: mockTruncatableService },
|
{ provide: TruncatableService, useValue: mockTruncatableService },
|
||||||
@@ -74,7 +74,7 @@ describe('ItemAdminSearchResultGridElementComponent', () => {
|
|||||||
{ provide: FileService, useClass: FileServiceStub },
|
{ provide: FileService, useClass: FileServiceStub },
|
||||||
{ provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub },
|
{ provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -3,7 +3,7 @@ import { Item } from '../../../../../core/shared/item.model';
|
|||||||
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
||||||
import {
|
import {
|
||||||
getListableObjectComponent,
|
getListableObjectComponent,
|
||||||
listableObjectComponent
|
listableObjectComponent,
|
||||||
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
|
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
|
||||||
import { Context } from '../../../../../core/shared/context.model';
|
import { Context } from '../../../../../core/shared/context.model';
|
||||||
import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
|
import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
|
||||||
@@ -19,7 +19,7 @@ import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-item-admin-search-result-grid-element',
|
selector: 'ds-item-admin-search-result-grid-element',
|
||||||
styleUrls: ['./item-admin-search-result-grid-element.component.scss'],
|
styleUrls: ['./item-admin-search-result-grid-element.component.scss'],
|
||||||
templateUrl: './item-admin-search-result-grid-element.component.html'
|
templateUrl: './item-admin-search-result-grid-element.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying a list element for an item search result on the admin search page
|
* The component for displaying a list element for an item search result on the admin search page
|
||||||
@@ -55,7 +55,7 @@ export class ItemAdminSearchResultGridElementComponent extends SearchResultGridE
|
|||||||
undefined,
|
undefined,
|
||||||
[
|
[
|
||||||
[this.badges.nativeElement],
|
[this.badges.nativeElement],
|
||||||
[this.buttons.nativeElement]
|
[this.buttons.nativeElement],
|
||||||
]);
|
]);
|
||||||
(componentRef.instance as any).object = this.object;
|
(componentRef.instance as any).object = this.object;
|
||||||
(componentRef.instance as any).index = this.index;
|
(componentRef.instance as any).index = this.index;
|
||||||
|
@@ -34,13 +34,13 @@ describe('CollectionAdminSearchResultListElementComponent', () => {
|
|||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
imports: [
|
imports: [
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule.withRoutes([])
|
RouterTestingModule.withRoutes([]),
|
||||||
],
|
],
|
||||||
declarations: [CollectionAdminSearchResultListElementComponent],
|
declarations: [CollectionAdminSearchResultListElementComponent],
|
||||||
providers: [{ provide: TruncatableService, useValue: {} },
|
providers: [{ provide: TruncatableService, useValue: {} },
|
||||||
{ provide: DSONameService, useClass: DSONameServiceMock },
|
{ provide: DSONameService, useClass: DSONameServiceMock },
|
||||||
{ provide: APP_CONFIG, useValue: environment }],
|
{ provide: APP_CONFIG, useValue: environment }],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -11,7 +11,7 @@ import { getCollectionEditRoute } from '../../../../../collection-page/collectio
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-collection-admin-search-result-list-element',
|
selector: 'ds-collection-admin-search-result-list-element',
|
||||||
styleUrls: ['./collection-admin-search-result-list-element.component.scss'],
|
styleUrls: ['./collection-admin-search-result-list-element.component.scss'],
|
||||||
templateUrl: './collection-admin-search-result-list-element.component.html'
|
templateUrl: './collection-admin-search-result-list-element.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying a list element for a collection search result on the admin search page
|
* The component for displaying a list element for a collection search result on the admin search page
|
||||||
|
@@ -34,13 +34,13 @@ describe('CommunityAdminSearchResultListElementComponent', () => {
|
|||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
imports: [
|
imports: [
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule.withRoutes([])
|
RouterTestingModule.withRoutes([]),
|
||||||
],
|
],
|
||||||
declarations: [CommunityAdminSearchResultListElementComponent],
|
declarations: [CommunityAdminSearchResultListElementComponent],
|
||||||
providers: [{ provide: TruncatableService, useValue: {} },
|
providers: [{ provide: TruncatableService, useValue: {} },
|
||||||
{ provide: DSONameService, useClass: DSONameServiceMock },
|
{ provide: DSONameService, useClass: DSONameServiceMock },
|
||||||
{ provide: APP_CONFIG, useValue: environment }],
|
{ provide: APP_CONFIG, useValue: environment }],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -11,7 +11,7 @@ import { getCommunityEditRoute } from '../../../../../community-page/community-p
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-community-admin-search-result-list-element',
|
selector: 'ds-community-admin-search-result-list-element',
|
||||||
styleUrls: ['./community-admin-search-result-list-element.component.scss'],
|
styleUrls: ['./community-admin-search-result-list-element.component.scss'],
|
||||||
templateUrl: './community-admin-search-result-list-element.component.html'
|
templateUrl: './community-admin-search-result-list-element.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying a list element for a community search result on the admin search page
|
* The component for displaying a list element for a community search result on the admin search page
|
||||||
|
@@ -31,13 +31,13 @@ describe('ItemAdminSearchResultListElementComponent', () => {
|
|||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
imports: [
|
imports: [
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule.withRoutes([])
|
RouterTestingModule.withRoutes([]),
|
||||||
],
|
],
|
||||||
declarations: [ItemAdminSearchResultListElementComponent],
|
declarations: [ItemAdminSearchResultListElementComponent],
|
||||||
providers: [{ provide: TruncatableService, useValue: {} },
|
providers: [{ provide: TruncatableService, useValue: {} },
|
||||||
{ provide: DSONameService, useClass: DSONameServiceMock },
|
{ provide: DSONameService, useClass: DSONameServiceMock },
|
||||||
{ provide: APP_CONFIG, useValue: environment }],
|
{ provide: APP_CONFIG, useValue: environment }],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -10,7 +10,7 @@ import { SearchResultListElementComponent } from '../../../../../shared/object-l
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-item-admin-search-result-list-element',
|
selector: 'ds-item-admin-search-result-list-element',
|
||||||
styleUrls: ['./item-admin-search-result-list-element.component.scss'],
|
styleUrls: ['./item-admin-search-result-list-element.component.scss'],
|
||||||
templateUrl: './item-admin-search-result-list-element.component.html'
|
templateUrl: './item-admin-search-result-list-element.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying a list element for an item search result on the admin search page
|
* The component for displaying a list element for an item search result on the admin search page
|
||||||
|
@@ -14,7 +14,7 @@ import {
|
|||||||
ITEM_EDIT_PRIVATE_PATH,
|
ITEM_EDIT_PRIVATE_PATH,
|
||||||
ITEM_EDIT_PUBLIC_PATH,
|
ITEM_EDIT_PUBLIC_PATH,
|
||||||
ITEM_EDIT_REINSTATE_PATH,
|
ITEM_EDIT_REINSTATE_PATH,
|
||||||
ITEM_EDIT_WITHDRAW_PATH
|
ITEM_EDIT_WITHDRAW_PATH,
|
||||||
} from '../../../item-page/edit-item-page/edit-item-page.routing-paths';
|
} from '../../../item-page/edit-item-page/edit-item-page.routing-paths';
|
||||||
|
|
||||||
describe('ItemAdminSearchResultActionsComponent', () => {
|
describe('ItemAdminSearchResultActionsComponent', () => {
|
||||||
@@ -34,10 +34,10 @@ describe('ItemAdminSearchResultActionsComponent', () => {
|
|||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
imports: [
|
imports: [
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule.withRoutes([])
|
RouterTestingModule.withRoutes([]),
|
||||||
],
|
],
|
||||||
declarations: [ItemAdminSearchResultActionsComponent],
|
declarations: [ItemAdminSearchResultActionsComponent],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -8,13 +8,13 @@ import {
|
|||||||
ITEM_EDIT_PUBLIC_PATH,
|
ITEM_EDIT_PUBLIC_PATH,
|
||||||
ITEM_EDIT_PRIVATE_PATH,
|
ITEM_EDIT_PRIVATE_PATH,
|
||||||
ITEM_EDIT_REINSTATE_PATH,
|
ITEM_EDIT_REINSTATE_PATH,
|
||||||
ITEM_EDIT_WITHDRAW_PATH
|
ITEM_EDIT_WITHDRAW_PATH,
|
||||||
} from '../../../item-page/edit-item-page/edit-item-page.routing-paths';
|
} from '../../../item-page/edit-item-page/edit-item-page.routing-paths';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-item-admin-search-result-actions-element',
|
selector: 'ds-item-admin-search-result-actions-element',
|
||||||
styleUrls: ['./item-admin-search-result-actions.component.scss'],
|
styleUrls: ['./item-admin-search-result-actions.component.scss'],
|
||||||
templateUrl: './item-admin-search-result-actions.component.html'
|
templateUrl: './item-admin-search-result-actions.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying the actions for a list element for an item search result on the admin search page
|
* The component for displaying the actions for a list element for an item search result on the admin search page
|
||||||
|
@@ -20,7 +20,7 @@ const ENTRY_COMPONENTS = [
|
|||||||
ItemAdminSearchResultGridElementComponent,
|
ItemAdminSearchResultGridElementComponent,
|
||||||
CommunityAdminSearchResultGridElementComponent,
|
CommunityAdminSearchResultGridElementComponent,
|
||||||
CollectionAdminSearchResultGridElementComponent,
|
CollectionAdminSearchResultGridElementComponent,
|
||||||
ItemAdminSearchResultActionsComponent
|
ItemAdminSearchResultActionsComponent,
|
||||||
];
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
@@ -28,12 +28,12 @@ const ENTRY_COMPONENTS = [
|
|||||||
SearchModule,
|
SearchModule,
|
||||||
SharedModule.withEntryComponents(),
|
SharedModule.withEntryComponents(),
|
||||||
JournalEntitiesModule.withEntryComponents(),
|
JournalEntitiesModule.withEntryComponents(),
|
||||||
ResearchEntitiesModule.withEntryComponents()
|
ResearchEntitiesModule.withEntryComponents(),
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
AdminSearchPageComponent,
|
AdminSearchPageComponent,
|
||||||
...ENTRY_COMPONENTS
|
...ENTRY_COMPONENTS,
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
export class AdminSearchModule {
|
export class AdminSearchModule {
|
||||||
/**
|
/**
|
||||||
@@ -43,7 +43,7 @@ export class AdminSearchModule {
|
|||||||
static withEntryComponents() {
|
static withEntryComponents() {
|
||||||
return {
|
return {
|
||||||
ngModule: SharedModule,
|
ngModule: SharedModule,
|
||||||
providers: ENTRY_COMPONENTS.map((component) => ({provide: component}))
|
providers: ENTRY_COMPONENTS.map((component) => ({provide: component})),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -27,11 +27,11 @@ describe('AdminSidebarSectionComponent', () => {
|
|||||||
{provide: 'sectionDataProvider', useValue: {model: {link: 'google.com'}, icon: iconString}},
|
{provide: 'sectionDataProvider', useValue: {model: {link: 'google.com'}, icon: iconString}},
|
||||||
{provide: MenuService, useValue: menuService},
|
{provide: MenuService, useValue: menuService},
|
||||||
{provide: CSSVariableService, useClass: CSSVariableServiceStub},
|
{provide: CSSVariableService, useClass: CSSVariableServiceStub},
|
||||||
]
|
],
|
||||||
}).overrideComponent(AdminSidebarSectionComponent, {
|
}).overrideComponent(AdminSidebarSectionComponent, {
|
||||||
set: {
|
set: {
|
||||||
entryComponents: [TestComponent]
|
entryComponents: [TestComponent],
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
@@ -67,11 +67,11 @@ describe('AdminSidebarSectionComponent', () => {
|
|||||||
{provide: 'sectionDataProvider', useValue: {model: {link: 'google.com', disabled: true}, icon: iconString}},
|
{provide: 'sectionDataProvider', useValue: {model: {link: 'google.com', disabled: true}, icon: iconString}},
|
||||||
{provide: MenuService, useValue: menuService},
|
{provide: MenuService, useValue: menuService},
|
||||||
{provide: CSSVariableService, useClass: CSSVariableServiceStub},
|
{provide: CSSVariableService, useClass: CSSVariableServiceStub},
|
||||||
]
|
],
|
||||||
}).overrideComponent(AdminSidebarSectionComponent, {
|
}).overrideComponent(AdminSidebarSectionComponent, {
|
||||||
set: {
|
set: {
|
||||||
entryComponents: [TestComponent]
|
entryComponents: [TestComponent],
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
@@ -102,7 +102,7 @@ describe('AdminSidebarSectionComponent', () => {
|
|||||||
// declare a test component
|
// declare a test component
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-test-cmp',
|
selector: 'ds-test-cmp',
|
||||||
template: ``
|
template: ``,
|
||||||
})
|
})
|
||||||
class TestComponent {
|
class TestComponent {
|
||||||
}
|
}
|
||||||
|
@@ -37,23 +37,23 @@ describe('AdminSidebarComponent', () => {
|
|||||||
lastModified: '2018',
|
lastModified: '2018',
|
||||||
_links: {
|
_links: {
|
||||||
self: {
|
self: {
|
||||||
href: 'https://localhost:8000/items/fake-id'
|
href: 'https://localhost:8000/items/fake-id',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
const routeStub = {
|
const routeStub = {
|
||||||
data: observableOf({
|
data: observableOf({
|
||||||
dso: createSuccessfulRemoteDataObject(mockItem)
|
dso: createSuccessfulRemoteDataObject(mockItem),
|
||||||
}),
|
}),
|
||||||
children: []
|
children: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
authorizationService = jasmine.createSpyObj('authorizationService', {
|
authorizationService = jasmine.createSpyObj('authorizationService', {
|
||||||
isAuthorized: observableOf(true)
|
isAuthorized: observableOf(true),
|
||||||
});
|
});
|
||||||
scriptService = jasmine.createSpyObj('scriptService', { scriptWithNameExistsAndCanExecute: observableOf(true) });
|
scriptService = jasmine.createSpyObj('scriptService', { scriptWithNameExistsAndCanExecute: observableOf(true) });
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
@@ -72,15 +72,15 @@ describe('AdminSidebarComponent', () => {
|
|||||||
{
|
{
|
||||||
provide: NgbModal, useValue: {
|
provide: NgbModal, useValue: {
|
||||||
open: () => {/*comment*/
|
open: () => {/*comment*/
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).overrideComponent(AdminSidebarComponent, {
|
}).overrideComponent(AdminSidebarComponent, {
|
||||||
set: {
|
set: {
|
||||||
changeDetection: ChangeDetectionStrategy.Default,
|
changeDetection: ChangeDetectionStrategy.Default,
|
||||||
}
|
},
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ describe('AdminSidebarComponent', () => {
|
|||||||
const sidebarToggler = fixture.debugElement.query(By.css('#sidebar-collapse-toggle > a'));
|
const sidebarToggler = fixture.debugElement.query(By.css('#sidebar-collapse-toggle > a'));
|
||||||
sidebarToggler.triggerEventHandler('click', {
|
sidebarToggler.triggerEventHandler('click', {
|
||||||
preventDefault: () => {/**/
|
preventDefault: () => {/**/
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ describe('AdminSidebarComponent', () => {
|
|||||||
const sidebarToggler = fixture.debugElement.query(By.css('nav.navbar'));
|
const sidebarToggler = fixture.debugElement.query(By.css('nav.navbar'));
|
||||||
sidebarToggler.triggerEventHandler('mouseenter', {
|
sidebarToggler.triggerEventHandler('mouseenter', {
|
||||||
preventDefault: () => {/**/
|
preventDefault: () => {/**/
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
tick(99);
|
tick(99);
|
||||||
expect(menuService.expandMenuPreview).not.toHaveBeenCalled();
|
expect(menuService.expandMenuPreview).not.toHaveBeenCalled();
|
||||||
@@ -176,7 +176,7 @@ describe('AdminSidebarComponent', () => {
|
|||||||
const sidebarToggler = fixture.debugElement.query(By.css('nav.navbar'));
|
const sidebarToggler = fixture.debugElement.query(By.css('nav.navbar'));
|
||||||
sidebarToggler.triggerEventHandler('mouseleave', {
|
sidebarToggler.triggerEventHandler('mouseleave', {
|
||||||
preventDefault: () => {/**/
|
preventDefault: () => {/**/
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
tick(399);
|
tick(399);
|
||||||
expect(menuService.collapseMenuPreview).not.toHaveBeenCalled();
|
expect(menuService.collapseMenuPreview).not.toHaveBeenCalled();
|
||||||
|
@@ -18,7 +18,7 @@ import { ThemeService } from '../../shared/theme-support/theme.service';
|
|||||||
selector: 'ds-admin-sidebar',
|
selector: 'ds-admin-sidebar',
|
||||||
templateUrl: './admin-sidebar.component.html',
|
templateUrl: './admin-sidebar.component.html',
|
||||||
styleUrls: ['./admin-sidebar.component.scss'],
|
styleUrls: ['./admin-sidebar.component.scss'],
|
||||||
animations: [slideSidebar]
|
animations: [slideSidebar],
|
||||||
})
|
})
|
||||||
export class AdminSidebarComponent extends MenuComponent implements OnInit {
|
export class AdminSidebarComponent extends MenuComponent implements OnInit {
|
||||||
/**
|
/**
|
||||||
@@ -58,7 +58,7 @@ export class AdminSidebarComponent extends MenuComponent implements OnInit {
|
|||||||
private authService: AuthService,
|
private authService: AuthService,
|
||||||
public authorizationService: AuthorizationDataService,
|
public authorizationService: AuthorizationDataService,
|
||||||
public route: ActivatedRoute,
|
public route: ActivatedRoute,
|
||||||
protected themeService: ThemeService
|
protected themeService: ThemeService,
|
||||||
) {
|
) {
|
||||||
super(menuService, injector, authorizationService, route, themeService);
|
super(menuService, injector, authorizationService, route, themeService);
|
||||||
this.inFocus$ = new BehaviorSubject(false);
|
this.inFocus$ = new BehaviorSubject(false);
|
||||||
@@ -83,13 +83,13 @@ export class AdminSidebarComponent extends MenuComponent implements OnInit {
|
|||||||
});
|
});
|
||||||
this.sidebarExpanded = combineLatest([this.menuCollapsed, this.menuPreviewCollapsed])
|
this.sidebarExpanded = combineLatest([this.menuCollapsed, this.menuPreviewCollapsed])
|
||||||
.pipe(
|
.pipe(
|
||||||
map(([collapsed, previewCollapsed]) => (!collapsed || !previewCollapsed))
|
map(([collapsed, previewCollapsed]) => (!collapsed || !previewCollapsed)),
|
||||||
);
|
);
|
||||||
this.inFocus$.pipe(
|
this.inFocus$.pipe(
|
||||||
debounceTime(50),
|
debounceTime(50),
|
||||||
distinctUntilChanged(), // disregard focusout in situations like --(focusout)-(focusin)--
|
distinctUntilChanged(), // disregard focusout in situations like --(focusout)-(focusin)--
|
||||||
withLatestFrom(
|
withLatestFrom(
|
||||||
combineLatest([this.menuCollapsed, this.menuPreviewCollapsed])
|
combineLatest([this.menuCollapsed, this.menuPreviewCollapsed]),
|
||||||
),
|
),
|
||||||
).subscribe(([inFocus, [collapsed, previewCollapsed]]) => {
|
).subscribe(([inFocus, [collapsed, previewCollapsed]]) => {
|
||||||
if (collapsed) {
|
if (collapsed) {
|
||||||
|
@@ -27,11 +27,11 @@ describe('ExpandableAdminSidebarSectionComponent', () => {
|
|||||||
{ provide: MenuService, useValue: menuService },
|
{ provide: MenuService, useValue: menuService },
|
||||||
{ provide: CSSVariableService, useClass: CSSVariableServiceStub },
|
{ provide: CSSVariableService, useClass: CSSVariableServiceStub },
|
||||||
{ provide: Router, useValue: new RouterStub() },
|
{ provide: Router, useValue: new RouterStub() },
|
||||||
]
|
],
|
||||||
}).overrideComponent(ExpandableAdminSidebarSectionComponent, {
|
}).overrideComponent(ExpandableAdminSidebarSectionComponent, {
|
||||||
set: {
|
set: {
|
||||||
entryComponents: [TestComponent]
|
entryComponents: [TestComponent],
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
@@ -59,7 +59,7 @@ describe('ExpandableAdminSidebarSectionComponent', () => {
|
|||||||
const sidebarToggler = fixture.debugElement.query(By.css('.sidebar-section > div.nav-item'));
|
const sidebarToggler = fixture.debugElement.query(By.css('.sidebar-section > div.nav-item'));
|
||||||
sidebarToggler.triggerEventHandler('click', {
|
sidebarToggler.triggerEventHandler('click', {
|
||||||
preventDefault: () => {/**/
|
preventDefault: () => {/**/
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ describe('ExpandableAdminSidebarSectionComponent', () => {
|
|||||||
// declare a test component
|
// declare a test component
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-test-cmp',
|
selector: 'ds-test-cmp',
|
||||||
template: ``
|
template: ``,
|
||||||
})
|
})
|
||||||
class TestComponent {
|
class TestComponent {
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,7 @@ import { Router } from '@angular/router';
|
|||||||
selector: 'li[ds-expandable-admin-sidebar-section]',
|
selector: 'li[ds-expandable-admin-sidebar-section]',
|
||||||
templateUrl: './expandable-admin-sidebar-section.component.html',
|
templateUrl: './expandable-admin-sidebar-section.component.html',
|
||||||
styleUrls: ['./expandable-admin-sidebar-section.component.scss'],
|
styleUrls: ['./expandable-admin-sidebar-section.component.scss'],
|
||||||
animations: [rotate, slide, bgColor]
|
animations: [rotate, slide, bgColor],
|
||||||
})
|
})
|
||||||
|
|
||||||
@rendersSectionForMenu(MenuID.ADMIN, true)
|
@rendersSectionForMenu(MenuID.ADMIN, true)
|
||||||
@@ -70,7 +70,7 @@ export class ExpandableAdminSidebarSectionComponent extends AdminSidebarSectionC
|
|||||||
this.sidebarPreviewCollapsed = this.menuService.isMenuPreviewCollapsed(this.menuID);
|
this.sidebarPreviewCollapsed = this.menuService.isMenuPreviewCollapsed(this.menuID);
|
||||||
this.expanded = combineLatestObservable(this.active, this.sidebarCollapsed, this.sidebarPreviewCollapsed)
|
this.expanded = combineLatestObservable(this.active, this.sidebarCollapsed, this.sidebarPreviewCollapsed)
|
||||||
.pipe(
|
.pipe(
|
||||||
map(([active, sidebarCollapsed, sidebarPreviewCollapsed]) => (active && (!sidebarCollapsed || !sidebarPreviewCollapsed)))
|
map(([active, sidebarCollapsed, sidebarPreviewCollapsed]) => (active && (!sidebarCollapsed || !sidebarPreviewCollapsed))),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -10,7 +10,7 @@ describe('AdminSearchPageComponent', () => {
|
|||||||
beforeEach(waitForAsync(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
declarations: [AdminWorkflowPageComponent],
|
declarations: [AdminWorkflowPageComponent],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -4,7 +4,7 @@ import { Context } from '../../core/shared/context.model';
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-admin-workflow-page',
|
selector: 'ds-admin-workflow-page',
|
||||||
templateUrl: './admin-workflow-page.component.html',
|
templateUrl: './admin-workflow-page.component.html',
|
||||||
styleUrls: ['./admin-workflow-page.component.scss']
|
styleUrls: ['./admin-workflow-page.component.scss'],
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -9,7 +9,7 @@ import { WorkflowItemAdminWorkflowActionsComponent } from './workflow-item-admin
|
|||||||
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
||||||
import {
|
import {
|
||||||
getWorkflowItemDeleteRoute,
|
getWorkflowItemDeleteRoute,
|
||||||
getWorkflowItemSendBackRoute
|
getWorkflowItemSendBackRoute,
|
||||||
} from '../../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
|
} from '../../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
import { Item } from '../../../../../core/shared/item.model';
|
import { Item } from '../../../../../core/shared/item.model';
|
||||||
@@ -37,10 +37,10 @@ describe('WorkflowItemAdminWorkflowActionsComponent', () => {
|
|||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
imports: [
|
imports: [
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule.withRoutes([])
|
RouterTestingModule.withRoutes([]),
|
||||||
],
|
],
|
||||||
declarations: [WorkflowItemAdminWorkflowActionsComponent],
|
declarations: [WorkflowItemAdminWorkflowActionsComponent],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -3,13 +3,13 @@ import { Component, Input } from '@angular/core';
|
|||||||
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
||||||
import {
|
import {
|
||||||
getWorkflowItemDeleteRoute,
|
getWorkflowItemDeleteRoute,
|
||||||
getWorkflowItemSendBackRoute
|
getWorkflowItemSendBackRoute,
|
||||||
} from '../../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
|
} from '../../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workflow-item-admin-workflow-actions-element',
|
selector: 'ds-workflow-item-admin-workflow-actions-element',
|
||||||
styleUrls: ['./workflow-item-admin-workflow-actions.component.scss'],
|
styleUrls: ['./workflow-item-admin-workflow-actions.component.scss'],
|
||||||
templateUrl: './workflow-item-admin-workflow-actions.component.html'
|
templateUrl: './workflow-item-admin-workflow-actions.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying the actions for a list element for a workflow-item on the admin workflow search page
|
* The component for displaying the actions for a list element for a workflow-item on the admin workflow search page
|
||||||
|
@@ -17,7 +17,7 @@ describe('SupervisionOrderGroupSelectorComponent', () => {
|
|||||||
const modalStub = jasmine.createSpyObj('modalStub', ['close']);
|
const modalStub = jasmine.createSpyObj('modalStub', ['close']);
|
||||||
|
|
||||||
const supervisionOrderDataService: any = jasmine.createSpyObj('supervisionOrderDataService', {
|
const supervisionOrderDataService: any = jasmine.createSpyObj('supervisionOrderDataService', {
|
||||||
create: of(new SupervisionOrder())
|
create: of(new SupervisionOrder()),
|
||||||
});
|
});
|
||||||
|
|
||||||
const selectedOrderType = 'NONE';
|
const selectedOrderType = 'NONE';
|
||||||
@@ -38,7 +38,7 @@ describe('SupervisionOrderGroupSelectorComponent', () => {
|
|||||||
{ provide: SupervisionOrderDataService, useValue: supervisionOrderDataService },
|
{ provide: SupervisionOrderDataService, useValue: supervisionOrderDataService },
|
||||||
{ provide: NotificationsService, useValue: {} },
|
{ provide: NotificationsService, useValue: {} },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
|
|
||||||
}));
|
}));
|
||||||
|
@@ -21,14 +21,14 @@ describe('SupervisionOrderStatusComponent', () => {
|
|||||||
TranslateModule.forRoot({
|
TranslateModule.forRoot({
|
||||||
loader: {
|
loader: {
|
||||||
provide: TranslateLoader,
|
provide: TranslateLoader,
|
||||||
useClass: TranslateLoaderMock
|
useClass: TranslateLoaderMock,
|
||||||
}
|
},
|
||||||
})
|
}),
|
||||||
],
|
],
|
||||||
declarations: [ SupervisionOrderStatusComponent, VarDirective ],
|
declarations: [ SupervisionOrderStatusComponent, VarDirective ],
|
||||||
schemas: [
|
schemas: [
|
||||||
NO_ERRORS_SCHEMA
|
NO_ERRORS_SCHEMA,
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
});
|
});
|
||||||
@@ -38,7 +38,7 @@ describe('SupervisionOrderStatusComponent', () => {
|
|||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
component.supervisionOrderList = supervisionOrderListMock;
|
component.supervisionOrderList = supervisionOrderListMock;
|
||||||
component.ngOnChanges( {
|
component.ngOnChanges( {
|
||||||
supervisionOrderList: new SimpleChange(null, supervisionOrderListMock, true)
|
supervisionOrderList: new SimpleChange(null, supervisionOrderListMock, true),
|
||||||
});
|
});
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
});
|
});
|
||||||
|
@@ -18,7 +18,7 @@ export interface SupervisionOrderListEntry {
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-supervision-order-status',
|
selector: 'ds-supervision-order-status',
|
||||||
templateUrl: './supervision-order-status.component.html',
|
templateUrl: './supervision-order-status.component.html',
|
||||||
styleUrls: ['./supervision-order-status.component.scss']
|
styleUrls: ['./supervision-order-status.component.scss'],
|
||||||
})
|
})
|
||||||
export class SupervisionOrderStatusComponent implements OnChanges {
|
export class SupervisionOrderStatusComponent implements OnChanges {
|
||||||
|
|
||||||
@@ -61,13 +61,13 @@ export class SupervisionOrderStatusComponent implements OnChanges {
|
|||||||
if (sogRD.hasSucceeded) {
|
if (sogRD.hasSucceeded) {
|
||||||
const entry: SupervisionOrderListEntry = {
|
const entry: SupervisionOrderListEntry = {
|
||||||
supervisionOrder: so,
|
supervisionOrder: so,
|
||||||
group: sogRD.payload
|
group: sogRD.payload,
|
||||||
};
|
};
|
||||||
return entry;
|
return entry;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
)),
|
)),
|
||||||
reduce((acc: SupervisionOrderListEntry[], value: any) => {
|
reduce((acc: SupervisionOrderListEntry[], value: any) => {
|
||||||
if (isNotEmpty(value)) {
|
if (isNotEmpty(value)) {
|
||||||
|
@@ -24,7 +24,7 @@ import { SupervisionOrderDataService } from '../../../../../core/supervision-ord
|
|||||||
import { ConfirmationModalComponent } from '../../../../../shared/confirmation-modal/confirmation-modal.component';
|
import { ConfirmationModalComponent } from '../../../../../shared/confirmation-modal/confirmation-modal.component';
|
||||||
import { supervisionOrderEntryMock } from '../../../../../shared/testing/supervision-order.mock';
|
import { supervisionOrderEntryMock } from '../../../../../shared/testing/supervision-order.mock';
|
||||||
import {
|
import {
|
||||||
SupervisionOrderGroupSelectorComponent
|
SupervisionOrderGroupSelectorComponent,
|
||||||
} from './supervision-order-group-selector/supervision-order-group-selector.component';
|
} from './supervision-order-group-selector/supervision-order-group-selector.component';
|
||||||
|
|
||||||
describe('WorkspaceItemAdminWorkflowActionsComponent', () => {
|
describe('WorkspaceItemAdminWorkflowActionsComponent', () => {
|
||||||
@@ -56,15 +56,15 @@ describe('WorkspaceItemAdminWorkflowActionsComponent', () => {
|
|||||||
imports: [
|
imports: [
|
||||||
NgbModalModule,
|
NgbModalModule,
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule.withRoutes([])
|
RouterTestingModule.withRoutes([]),
|
||||||
],
|
],
|
||||||
declarations: [WorkspaceItemAdminWorkflowActionsComponent],
|
declarations: [WorkspaceItemAdminWorkflowActionsComponent],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: DSONameService, useClass: DSONameServiceMock },
|
{ provide: DSONameService, useClass: DSONameServiceMock },
|
||||||
{ provide: NotificationsService, useValue: notificationService },
|
{ provide: NotificationsService, useValue: notificationService },
|
||||||
{ provide: SupervisionOrderDataService, useValue: supervisionOrderDataService }
|
{ provide: SupervisionOrderDataService, useValue: supervisionOrderDataService },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
@@ -97,7 +97,7 @@ describe('WorkspaceItemAdminWorkflowActionsComponent', () => {
|
|||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
spyOn(component.delete, 'emit');
|
spyOn(component.delete, 'emit');
|
||||||
spyOn((component as any).modalService, 'open').and.returnValue({
|
spyOn((component as any).modalService, 'open').and.returnValue({
|
||||||
componentInstance: { response: of(true) }
|
componentInstance: { response: of(true) },
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -138,7 +138,7 @@ describe('WorkspaceItemAdminWorkflowActionsComponent', () => {
|
|||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
spyOn(component.create, 'emit');
|
spyOn(component.create, 'emit');
|
||||||
spyOn((component as any).modalService, 'open').and.returnValue({
|
spyOn((component as any).modalService, 'open').and.returnValue({
|
||||||
componentInstance: { create: of(true) }
|
componentInstance: { create: of(true) },
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ describe('WorkspaceItemAdminWorkflowActionsComponent', () => {
|
|||||||
component.openSupervisionModal();
|
component.openSupervisionModal();
|
||||||
expect((component as any).modalService.open).toHaveBeenCalledWith(SupervisionOrderGroupSelectorComponent, {
|
expect((component as any).modalService.open).toHaveBeenCalledWith(SupervisionOrderGroupSelectorComponent, {
|
||||||
size: 'lg',
|
size: 'lg',
|
||||||
backdrop: 'static'
|
backdrop: 'static',
|
||||||
});
|
});
|
||||||
expect(component.create.emit).toHaveBeenCalled();
|
expect(component.create.emit).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
@@ -8,10 +8,10 @@ import { TranslateService } from '@ngx-translate/core';
|
|||||||
import { Item } from '../../../../../core/shared/item.model';
|
import { Item } from '../../../../../core/shared/item.model';
|
||||||
import { getFirstSucceededRemoteDataPayload } from '../../../../../core/shared/operators';
|
import { getFirstSucceededRemoteDataPayload } from '../../../../../core/shared/operators';
|
||||||
import {
|
import {
|
||||||
SupervisionOrderGroupSelectorComponent
|
SupervisionOrderGroupSelectorComponent,
|
||||||
} from './supervision-order-group-selector/supervision-order-group-selector.component';
|
} from './supervision-order-group-selector/supervision-order-group-selector.component';
|
||||||
import {
|
import {
|
||||||
getWorkspaceItemDeleteRoute
|
getWorkspaceItemDeleteRoute,
|
||||||
} from '../../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
|
} from '../../../../../workflowitems-edit-page/workflowitems-edit-page-routing-paths';
|
||||||
import { ITEM_EDIT_AUTHORIZATIONS_PATH } from '../../../../../item-page/edit-item-page/edit-item-page.routing-paths';
|
import { ITEM_EDIT_AUTHORIZATIONS_PATH } from '../../../../../item-page/edit-item-page/edit-item-page.routing-paths';
|
||||||
import { WorkspaceItem } from '../../../../../core/submission/models/workspaceitem.model';
|
import { WorkspaceItem } from '../../../../../core/submission/models/workspaceitem.model';
|
||||||
@@ -28,7 +28,7 @@ import { getSearchResultFor } from '../../../../../shared/search/search-result-e
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workspace-item-admin-workflow-actions-element',
|
selector: 'ds-workspace-item-admin-workflow-actions-element',
|
||||||
styleUrls: ['./workspace-item-admin-workflow-actions.component.scss'],
|
styleUrls: ['./workspace-item-admin-workflow-actions.component.scss'],
|
||||||
templateUrl: './workspace-item-admin-workflow-actions.component.html'
|
templateUrl: './workspace-item-admin-workflow-actions.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying the actions for a list element for a workspace-item on the admin workflow search page
|
* The component for displaying the actions for a list element for a workspace-item on the admin workflow search page
|
||||||
@@ -94,7 +94,7 @@ export class WorkspaceItemAdminWorkflowActionsComponent implements OnInit {
|
|||||||
);
|
);
|
||||||
|
|
||||||
item$.pipe(
|
item$.pipe(
|
||||||
map((item: Item) => this.getPoliciesRoute(item))
|
map((item: Item) => this.getPoliciesRoute(item)),
|
||||||
).subscribe((route: string[]) => {
|
).subscribe((route: string[]) => {
|
||||||
this.resourcePoliciesPageRoute = route;
|
this.resourcePoliciesPageRoute = route;
|
||||||
});
|
});
|
||||||
@@ -143,22 +143,22 @@ export class WorkspaceItemAdminWorkflowActionsComponent implements OnInit {
|
|||||||
null,
|
null,
|
||||||
this.translateService.get(
|
this.translateService.get(
|
||||||
this.messagePrefix + '.notification.deleted.success',
|
this.messagePrefix + '.notification.deleted.success',
|
||||||
{ name: this.dsoNameService.getName(supervisionOrderEntry.group) }
|
{ name: this.dsoNameService.getName(supervisionOrderEntry.group) },
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
this.notificationsService.error(
|
this.notificationsService.error(
|
||||||
null,
|
null,
|
||||||
this.translateService.get(
|
this.translateService.get(
|
||||||
this.messagePrefix + '.notification.deleted.failure',
|
this.messagePrefix + '.notification.deleted.failure',
|
||||||
{ name: this.dsoNameService.getName(supervisionOrderEntry.group) }
|
{ name: this.dsoNameService.getName(supervisionOrderEntry.group) },
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
).subscribe((result: boolean) => {
|
).subscribe((result: boolean) => {
|
||||||
if (result) {
|
if (result) {
|
||||||
this.delete.emit(this.convertReloadedObject());
|
this.delete.emit(this.convertReloadedObject());
|
||||||
@@ -172,7 +172,7 @@ export class WorkspaceItemAdminWorkflowActionsComponent implements OnInit {
|
|||||||
openSupervisionModal() {
|
openSupervisionModal() {
|
||||||
const supervisionModal: NgbModalRef = this.modalService.open(SupervisionOrderGroupSelectorComponent, {
|
const supervisionModal: NgbModalRef = this.modalService.open(SupervisionOrderGroupSelectorComponent, {
|
||||||
size: 'lg',
|
size: 'lg',
|
||||||
backdrop: 'static'
|
backdrop: 'static',
|
||||||
});
|
});
|
||||||
supervisionModal.componentInstance.itemUUID = this.item.uuid;
|
supervisionModal.componentInstance.itemUUID = this.item.uuid;
|
||||||
supervisionModal.componentInstance.create.subscribe(() => {
|
supervisionModal.componentInstance.create.subscribe(() => {
|
||||||
@@ -186,7 +186,7 @@ export class WorkspaceItemAdminWorkflowActionsComponent implements OnInit {
|
|||||||
private convertReloadedObject(): DSpaceObject {
|
private convertReloadedObject(): DSpaceObject {
|
||||||
const constructor = getSearchResultFor((this.wsi as any).constructor);
|
const constructor = getSearchResultFor((this.wsi as any).constructor);
|
||||||
return Object.assign(new constructor(), this.wsi, {
|
return Object.assign(new constructor(), this.wsi, {
|
||||||
indexableObject: this.wsi
|
indexableObject: this.wsi,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -8,20 +8,20 @@ import { CollectionElementLinkType } from '../../../../../shared/object-collecti
|
|||||||
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
||||||
import { RouterTestingModule } from '@angular/router/testing';
|
import { RouterTestingModule } from '@angular/router/testing';
|
||||||
import {
|
import {
|
||||||
WorkflowItemSearchResultAdminWorkflowGridElementComponent
|
WorkflowItemSearchResultAdminWorkflowGridElementComponent,
|
||||||
} from './workflow-item-search-result-admin-workflow-grid-element.component';
|
} from './workflow-item-search-result-admin-workflow-grid-element.component';
|
||||||
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
||||||
import { LinkService } from '../../../../../core/cache/builders/link.service';
|
import { LinkService } from '../../../../../core/cache/builders/link.service';
|
||||||
import { followLink } from '../../../../../shared/utils/follow-link-config.model';
|
import { followLink } from '../../../../../shared/utils/follow-link-config.model';
|
||||||
import { Item } from '../../../../../core/shared/item.model';
|
import { Item } from '../../../../../core/shared/item.model';
|
||||||
import {
|
import {
|
||||||
ItemGridElementComponent
|
ItemGridElementComponent,
|
||||||
} from '../../../../../shared/object-grid/item-grid-element/item-types/item/item-grid-element.component';
|
} from '../../../../../shared/object-grid/item-grid-element/item-types/item/item-grid-element.component';
|
||||||
import {
|
import {
|
||||||
ListableObjectDirective
|
ListableObjectDirective,
|
||||||
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.directive';
|
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.directive';
|
||||||
import {
|
import {
|
||||||
WorkflowItemSearchResult
|
WorkflowItemSearchResult,
|
||||||
} from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
} from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
||||||
import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
|
import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
|
||||||
import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
|
import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
|
||||||
@@ -67,16 +67,16 @@ describe('WorkflowItemSearchResultAdminWorkflowGridElementComponent', () => {
|
|||||||
{
|
{
|
||||||
provide: TruncatableService, useValue: {
|
provide: TruncatableService, useValue: {
|
||||||
isCollapsed: () => observableOf(true),
|
isCollapsed: () => observableOf(true),
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{ provide: BitstreamDataService, useValue: {} },
|
{ provide: BitstreamDataService, useValue: {} },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.overrideComponent(WorkflowItemSearchResultAdminWorkflowGridElementComponent, {
|
.overrideComponent(WorkflowItemSearchResultAdminWorkflowGridElementComponent, {
|
||||||
set: {
|
set: {
|
||||||
entryComponents: [ItemGridElementComponent]
|
entryComponents: [ItemGridElementComponent],
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -3,7 +3,7 @@ import { Item } from '../../../../../core/shared/item.model';
|
|||||||
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
||||||
import {
|
import {
|
||||||
getListableObjectComponent,
|
getListableObjectComponent,
|
||||||
listableObjectComponent
|
listableObjectComponent,
|
||||||
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
|
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
|
||||||
import { Context } from '../../../../../core/shared/context.model';
|
import { Context } from '../../../../../core/shared/context.model';
|
||||||
import { SearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/search-result-grid-element.component';
|
import { SearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/search-result-grid-element.component';
|
||||||
@@ -18,7 +18,7 @@ import { followLink } from '../../../../../shared/utils/follow-link-config.model
|
|||||||
import { RemoteData } from '../../../../../core/data/remote-data';
|
import { RemoteData } from '../../../../../core/data/remote-data';
|
||||||
import {
|
import {
|
||||||
getAllSucceededRemoteData,
|
getAllSucceededRemoteData,
|
||||||
getRemoteDataPayload
|
getRemoteDataPayload,
|
||||||
} from '../../../../../core/shared/operators';
|
} from '../../../../../core/shared/operators';
|
||||||
import { take } from 'rxjs/operators';
|
import { take } from 'rxjs/operators';
|
||||||
import { WorkflowItemSearchResult } from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
import { WorkflowItemSearchResult } from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
||||||
@@ -29,7 +29,7 @@ import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workflow-item-search-result-admin-workflow-grid-element',
|
selector: 'ds-workflow-item-search-result-admin-workflow-grid-element',
|
||||||
styleUrls: ['./workflow-item-search-result-admin-workflow-grid-element.component.scss'],
|
styleUrls: ['./workflow-item-search-result-admin-workflow-grid-element.component.scss'],
|
||||||
templateUrl: './workflow-item-search-result-admin-workflow-grid-element.component.html'
|
templateUrl: './workflow-item-search-result-admin-workflow-grid-element.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying a grid element for an workflow item on the admin workflow search page
|
* The component for displaying a grid element for an workflow item on the admin workflow search page
|
||||||
@@ -61,7 +61,7 @@ export class WorkflowItemSearchResultAdminWorkflowGridElementComponent extends S
|
|||||||
private linkService: LinkService,
|
private linkService: LinkService,
|
||||||
protected truncatableService: TruncatableService,
|
protected truncatableService: TruncatableService,
|
||||||
private themeService: ThemeService,
|
private themeService: ThemeService,
|
||||||
protected bitstreamDataService: BitstreamDataService
|
protected bitstreamDataService: BitstreamDataService,
|
||||||
) {
|
) {
|
||||||
super(dsoNameService, truncatableService, bitstreamDataService);
|
super(dsoNameService, truncatableService, bitstreamDataService);
|
||||||
}
|
}
|
||||||
@@ -86,14 +86,14 @@ export class WorkflowItemSearchResultAdminWorkflowGridElementComponent extends S
|
|||||||
undefined,
|
undefined,
|
||||||
[
|
[
|
||||||
[this.badges.nativeElement],
|
[this.badges.nativeElement],
|
||||||
[this.buttons.nativeElement]
|
[this.buttons.nativeElement],
|
||||||
]);
|
]);
|
||||||
(componentRef.instance as any).object = item;
|
(componentRef.instance as any).object = item;
|
||||||
(componentRef.instance as any).index = this.index;
|
(componentRef.instance as any).index = this.index;
|
||||||
(componentRef.instance as any).linkType = this.linkType;
|
(componentRef.instance as any).linkType = this.linkType;
|
||||||
(componentRef.instance as any).listID = this.listID;
|
(componentRef.instance as any).listID = this.listID;
|
||||||
componentRef.changeDetectorRef.detectChanges();
|
componentRef.changeDetectorRef.detectChanges();
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,20 +10,20 @@ import { TruncatableService } from '../../../../../shared/truncatable/truncatabl
|
|||||||
import { CollectionElementLinkType } from '../../../../../shared/object-collection/collection-element-link.type';
|
import { CollectionElementLinkType } from '../../../../../shared/object-collection/collection-element-link.type';
|
||||||
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
||||||
import {
|
import {
|
||||||
WorkspaceItemSearchResultAdminWorkflowGridElementComponent
|
WorkspaceItemSearchResultAdminWorkflowGridElementComponent,
|
||||||
} from './workspace-item-search-result-admin-workflow-grid-element.component';
|
} from './workspace-item-search-result-admin-workflow-grid-element.component';
|
||||||
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
||||||
import { LinkService } from '../../../../../core/cache/builders/link.service';
|
import { LinkService } from '../../../../../core/cache/builders/link.service';
|
||||||
import { followLink } from '../../../../../shared/utils/follow-link-config.model';
|
import { followLink } from '../../../../../shared/utils/follow-link-config.model';
|
||||||
import { Item } from '../../../../../core/shared/item.model';
|
import { Item } from '../../../../../core/shared/item.model';
|
||||||
import {
|
import {
|
||||||
ItemGridElementComponent
|
ItemGridElementComponent,
|
||||||
} from '../../../../../shared/object-grid/item-grid-element/item-types/item/item-grid-element.component';
|
} from '../../../../../shared/object-grid/item-grid-element/item-types/item/item-grid-element.component';
|
||||||
import {
|
import {
|
||||||
ListableObjectDirective
|
ListableObjectDirective,
|
||||||
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.directive';
|
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.directive';
|
||||||
import {
|
import {
|
||||||
WorkflowItemSearchResult
|
WorkflowItemSearchResult,
|
||||||
} from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
} from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
||||||
import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
|
import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
|
||||||
import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
|
import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
|
||||||
@@ -32,7 +32,7 @@ import { getMockThemeService } from '../../../../../shared/mocks/theme-service.m
|
|||||||
import { ThemeService } from '../../../../../shared/theme-support/theme.service';
|
import { ThemeService } from '../../../../../shared/theme-support/theme.service';
|
||||||
import {
|
import {
|
||||||
supervisionOrderPaginatedListRD,
|
supervisionOrderPaginatedListRD,
|
||||||
supervisionOrderPaginatedListRD$
|
supervisionOrderPaginatedListRD$,
|
||||||
} from '../../../../../shared/testing/supervision-order.mock';
|
} from '../../../../../shared/testing/supervision-order.mock';
|
||||||
import { SupervisionOrderDataService } from '../../../../../core/supervision-order/supervision-order-data.service';
|
import { SupervisionOrderDataService } from '../../../../../core/supervision-order/supervision-order-data.service';
|
||||||
import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
|
||||||
@@ -79,17 +79,17 @@ describe('WorkspaceItemSearchResultAdminWorkflowGridElementComponent', () => {
|
|||||||
{
|
{
|
||||||
provide: TruncatableService, useValue: {
|
provide: TruncatableService, useValue: {
|
||||||
isCollapsed: () => observableOf(true),
|
isCollapsed: () => observableOf(true),
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{ provide: BitstreamDataService, useValue: {} },
|
{ provide: BitstreamDataService, useValue: {} },
|
||||||
{ provide: SupervisionOrderDataService, useValue: supervisionOrderDataService }
|
{ provide: SupervisionOrderDataService, useValue: supervisionOrderDataService },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.overrideComponent(WorkspaceItemSearchResultAdminWorkflowGridElementComponent, {
|
.overrideComponent(WorkspaceItemSearchResultAdminWorkflowGridElementComponent, {
|
||||||
set: {
|
set: {
|
||||||
entryComponents: [ItemGridElementComponent]
|
entryComponents: [ItemGridElementComponent],
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -7,17 +7,17 @@ import { Item } from '../../../../../core/shared/item.model';
|
|||||||
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
||||||
import {
|
import {
|
||||||
getListableObjectComponent,
|
getListableObjectComponent,
|
||||||
listableObjectComponent
|
listableObjectComponent,
|
||||||
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
|
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
|
||||||
import { Context } from '../../../../../core/shared/context.model';
|
import { Context } from '../../../../../core/shared/context.model';
|
||||||
import {
|
import {
|
||||||
SearchResultGridElementComponent
|
SearchResultGridElementComponent,
|
||||||
} from '../../../../../shared/object-grid/search-result-grid-element/search-result-grid-element.component';
|
} from '../../../../../shared/object-grid/search-result-grid-element/search-result-grid-element.component';
|
||||||
import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
|
import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
|
||||||
import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
|
import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
|
||||||
import { GenericConstructor } from '../../../../../core/shared/generic-constructor';
|
import { GenericConstructor } from '../../../../../core/shared/generic-constructor';
|
||||||
import {
|
import {
|
||||||
ListableObjectDirective
|
ListableObjectDirective,
|
||||||
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.directive';
|
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.directive';
|
||||||
import { WorkspaceItem } from '../../../../../core/submission/models/workspaceitem.model';
|
import { WorkspaceItem } from '../../../../../core/submission/models/workspaceitem.model';
|
||||||
import { LinkService } from '../../../../../core/cache/builders/link.service';
|
import { LinkService } from '../../../../../core/cache/builders/link.service';
|
||||||
@@ -26,10 +26,10 @@ import { RemoteData } from '../../../../../core/data/remote-data';
|
|||||||
import {
|
import {
|
||||||
getAllSucceededRemoteData,
|
getAllSucceededRemoteData,
|
||||||
getFirstCompletedRemoteData,
|
getFirstCompletedRemoteData,
|
||||||
getRemoteDataPayload
|
getRemoteDataPayload,
|
||||||
} from '../../../../../core/shared/operators';
|
} from '../../../../../core/shared/operators';
|
||||||
import {
|
import {
|
||||||
WorkspaceItemSearchResult
|
WorkspaceItemSearchResult,
|
||||||
} from '../../../../../shared/object-collection/shared/workspace-item-search-result.model';
|
} from '../../../../../shared/object-collection/shared/workspace-item-search-result.model';
|
||||||
import { ThemeService } from '../../../../../shared/theme-support/theme.service';
|
import { ThemeService } from '../../../../../shared/theme-support/theme.service';
|
||||||
import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
|
||||||
@@ -42,7 +42,7 @@ import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workflow-item-search-result-admin-workflow-grid-element',
|
selector: 'ds-workflow-item-search-result-admin-workflow-grid-element',
|
||||||
styleUrls: ['./workspace-item-search-result-admin-workflow-grid-element.component.scss'],
|
styleUrls: ['./workspace-item-search-result-admin-workflow-grid-element.component.scss'],
|
||||||
templateUrl: './workspace-item-search-result-admin-workflow-grid-element.component.html'
|
templateUrl: './workspace-item-search-result-admin-workflow-grid-element.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying a grid element for an workflow item on the admin workflow search page
|
* The component for displaying a grid element for an workflow item on the admin workflow search page
|
||||||
@@ -111,20 +111,20 @@ export class WorkspaceItemSearchResultAdminWorkflowGridElementComponent extends
|
|||||||
undefined,
|
undefined,
|
||||||
[
|
[
|
||||||
[this.badges.nativeElement],
|
[this.badges.nativeElement],
|
||||||
[this.buttons.nativeElement]
|
[this.buttons.nativeElement],
|
||||||
]);
|
]);
|
||||||
(componentRef.instance as any).object = item;
|
(componentRef.instance as any).object = item;
|
||||||
(componentRef.instance as any).index = this.index;
|
(componentRef.instance as any).index = this.index;
|
||||||
(componentRef.instance as any).linkType = this.linkType;
|
(componentRef.instance as any).linkType = this.linkType;
|
||||||
(componentRef.instance as any).listID = this.listID;
|
(componentRef.instance as any).listID = this.listID;
|
||||||
componentRef.changeDetectorRef.detectChanges();
|
componentRef.changeDetectorRef.detectChanges();
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
this.item$.pipe(
|
this.item$.pipe(
|
||||||
take(1),
|
take(1),
|
||||||
tap((item: Item) => this.itemId = item.id),
|
tap((item: Item) => this.itemId = item.id),
|
||||||
mergeMap((item: Item) => this.retrieveSupervisorOrders(item.id))
|
mergeMap((item: Item) => this.retrieveSupervisorOrders(item.id)),
|
||||||
).subscribe((supervisionOrderList: SupervisionOrder[]) => {
|
).subscribe((supervisionOrderList: SupervisionOrder[]) => {
|
||||||
this.supervisionOrder$.next(supervisionOrderList);
|
this.supervisionOrder$.next(supervisionOrderList);
|
||||||
});
|
});
|
||||||
@@ -147,10 +147,10 @@ export class WorkspaceItemSearchResultAdminWorkflowGridElementComponent extends
|
|||||||
*/
|
*/
|
||||||
private retrieveSupervisorOrders(itemId): Observable<SupervisionOrder[]> {
|
private retrieveSupervisorOrders(itemId): Observable<SupervisionOrder[]> {
|
||||||
return this.supervisionOrderDataService.searchByItem(
|
return this.supervisionOrderDataService.searchByItem(
|
||||||
itemId, false, true, followLink('group')
|
itemId, false, true, followLink('group'),
|
||||||
).pipe(
|
).pipe(
|
||||||
getFirstCompletedRemoteData(),
|
getFirstCompletedRemoteData(),
|
||||||
map((soRD: RemoteData<PaginatedList<SupervisionOrder>>) => soRD.hasSucceeded && !soRD.hasNoContent ? soRD.payload.page : [])
|
map((soRD: RemoteData<PaginatedList<SupervisionOrder>>) => soRD.hasSucceeded && !soRD.hasNoContent ? soRD.payload.page : []),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,13 +10,13 @@ import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
|||||||
import { RouterTestingModule } from '@angular/router/testing';
|
import { RouterTestingModule } from '@angular/router/testing';
|
||||||
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
||||||
import {
|
import {
|
||||||
WorkflowItemSearchResultAdminWorkflowListElementComponent
|
WorkflowItemSearchResultAdminWorkflowListElementComponent,
|
||||||
} from './workflow-item-search-result-admin-workflow-list-element.component';
|
} from './workflow-item-search-result-admin-workflow-list-element.component';
|
||||||
import { LinkService } from '../../../../../core/cache/builders/link.service';
|
import { LinkService } from '../../../../../core/cache/builders/link.service';
|
||||||
import { followLink } from '../../../../../shared/utils/follow-link-config.model';
|
import { followLink } from '../../../../../shared/utils/follow-link-config.model';
|
||||||
import { Item } from '../../../../../core/shared/item.model';
|
import { Item } from '../../../../../core/shared/item.model';
|
||||||
import {
|
import {
|
||||||
WorkflowItemSearchResult
|
WorkflowItemSearchResult,
|
||||||
} from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
} from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
||||||
import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
|
import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
|
||||||
import { getMockLinkService } from '../../../../../shared/mocks/link-service.mock';
|
import { getMockLinkService } from '../../../../../shared/mocks/link-service.mock';
|
||||||
@@ -58,9 +58,9 @@ describe('WorkflowItemSearchResultAdminWorkflowListElementComponent', () => {
|
|||||||
{ provide: TruncatableService, useValue: mockTruncatableService },
|
{ provide: TruncatableService, useValue: mockTruncatableService },
|
||||||
{ provide: LinkService, useValue: linkService },
|
{ provide: LinkService, useValue: linkService },
|
||||||
{ provide: DSONameService, useClass: DSONameServiceMock },
|
{ provide: DSONameService, useClass: DSONameServiceMock },
|
||||||
{ provide: APP_CONFIG, useValue: environment }
|
{ provide: APP_CONFIG, useValue: environment },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Component, Inject, OnInit } from '@angular/core';
|
import { Component, Inject, OnInit } from '@angular/core';
|
||||||
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
||||||
import {
|
import {
|
||||||
listableObjectComponent
|
listableObjectComponent,
|
||||||
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
|
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
|
||||||
import { Context } from '../../../../../core/shared/context.model';
|
import { Context } from '../../../../../core/shared/context.model';
|
||||||
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
||||||
@@ -12,11 +12,11 @@ import { RemoteData } from '../../../../../core/data/remote-data';
|
|||||||
import { getAllSucceededRemoteData, getRemoteDataPayload } from '../../../../../core/shared/operators';
|
import { getAllSucceededRemoteData, getRemoteDataPayload } from '../../../../../core/shared/operators';
|
||||||
import { Item } from '../../../../../core/shared/item.model';
|
import { Item } from '../../../../../core/shared/item.model';
|
||||||
import {
|
import {
|
||||||
SearchResultListElementComponent
|
SearchResultListElementComponent,
|
||||||
} from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component';
|
} from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component';
|
||||||
import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
|
import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
|
||||||
import {
|
import {
|
||||||
WorkflowItemSearchResult
|
WorkflowItemSearchResult,
|
||||||
} from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
} from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
||||||
import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service';
|
import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service';
|
||||||
import { APP_CONFIG, AppConfig } from '../../../../../../config/app-config.interface';
|
import { APP_CONFIG, AppConfig } from '../../../../../../config/app-config.interface';
|
||||||
@@ -25,7 +25,7 @@ import { APP_CONFIG, AppConfig } from '../../../../../../config/app-config.inter
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workflow-item-search-result-admin-workflow-list-element',
|
selector: 'ds-workflow-item-search-result-admin-workflow-list-element',
|
||||||
styleUrls: ['./workflow-item-search-result-admin-workflow-list-element.component.scss'],
|
styleUrls: ['./workflow-item-search-result-admin-workflow-list-element.component.scss'],
|
||||||
templateUrl: './workflow-item-search-result-admin-workflow-list-element.component.html'
|
templateUrl: './workflow-item-search-result-admin-workflow-list-element.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying a list element for a workflow item on the admin workflow search page
|
* The component for displaying a list element for a workflow item on the admin workflow search page
|
||||||
@@ -40,7 +40,7 @@ export class WorkflowItemSearchResultAdminWorkflowListElementComponent extends S
|
|||||||
constructor(private linkService: LinkService,
|
constructor(private linkService: LinkService,
|
||||||
protected truncatableService: TruncatableService,
|
protected truncatableService: TruncatableService,
|
||||||
public dsoNameService: DSONameService,
|
public dsoNameService: DSONameService,
|
||||||
@Inject(APP_CONFIG) protected appConfig: AppConfig
|
@Inject(APP_CONFIG) protected appConfig: AppConfig,
|
||||||
) {
|
) {
|
||||||
super(truncatableService, dsoNameService, appConfig);
|
super(truncatableService, dsoNameService, appConfig);
|
||||||
}
|
}
|
||||||
|
@@ -11,13 +11,13 @@ import { CollectionElementLinkType } from '../../../../../shared/object-collecti
|
|||||||
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
||||||
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
|
||||||
import {
|
import {
|
||||||
WorkspaceItemSearchResultAdminWorkflowListElementComponent
|
WorkspaceItemSearchResultAdminWorkflowListElementComponent,
|
||||||
} from './workspace-item-search-result-admin-workflow-list-element.component';
|
} from './workspace-item-search-result-admin-workflow-list-element.component';
|
||||||
import { LinkService } from '../../../../../core/cache/builders/link.service';
|
import { LinkService } from '../../../../../core/cache/builders/link.service';
|
||||||
import { followLink } from '../../../../../shared/utils/follow-link-config.model';
|
import { followLink } from '../../../../../shared/utils/follow-link-config.model';
|
||||||
import { Item } from '../../../../../core/shared/item.model';
|
import { Item } from '../../../../../core/shared/item.model';
|
||||||
import {
|
import {
|
||||||
WorkflowItemSearchResult
|
WorkflowItemSearchResult,
|
||||||
} from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
} from '../../../../../shared/object-collection/shared/workflow-item-search-result.model';
|
||||||
import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
|
import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
|
||||||
import { getMockLinkService } from '../../../../../shared/mocks/link-service.mock';
|
import { getMockLinkService } from '../../../../../shared/mocks/link-service.mock';
|
||||||
@@ -28,7 +28,7 @@ import { environment } from '../../../../../../environments/environment';
|
|||||||
import { SupervisionOrderDataService } from '../../../../../core/supervision-order/supervision-order-data.service';
|
import { SupervisionOrderDataService } from '../../../../../core/supervision-order/supervision-order-data.service';
|
||||||
import {
|
import {
|
||||||
supervisionOrderPaginatedListRD,
|
supervisionOrderPaginatedListRD,
|
||||||
supervisionOrderPaginatedListRD$
|
supervisionOrderPaginatedListRD$,
|
||||||
} from '../../../../../shared/testing/supervision-order.mock';
|
} from '../../../../../shared/testing/supervision-order.mock';
|
||||||
import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
|
||||||
|
|
||||||
@@ -71,9 +71,9 @@ describe('WorkspaceItemSearchResultAdminWorkflowListElementComponent', () => {
|
|||||||
{ provide: LinkService, useValue: linkService },
|
{ provide: LinkService, useValue: linkService },
|
||||||
{ provide: DSONameService, useClass: DSONameServiceMock },
|
{ provide: DSONameService, useClass: DSONameServiceMock },
|
||||||
{ provide: SupervisionOrderDataService, useValue: supervisionOrderDataService },
|
{ provide: SupervisionOrderDataService, useValue: supervisionOrderDataService },
|
||||||
{ provide: APP_CONFIG, useValue: environment }
|
{ provide: APP_CONFIG, useValue: environment },
|
||||||
],
|
],
|
||||||
schemas: [NO_ERRORS_SCHEMA]
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
.compileComponents();
|
.compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -5,7 +5,7 @@ import { map, mergeMap, take, tap } from 'rxjs/operators';
|
|||||||
|
|
||||||
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
import { ViewMode } from '../../../../../core/shared/view-mode.model';
|
||||||
import {
|
import {
|
||||||
listableObjectComponent
|
listableObjectComponent,
|
||||||
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
|
} from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
|
||||||
import { Context } from '../../../../../core/shared/context.model';
|
import { Context } from '../../../../../core/shared/context.model';
|
||||||
import { WorkspaceItem } from '../../../../../core/submission/models/workspaceitem.model';
|
import { WorkspaceItem } from '../../../../../core/submission/models/workspaceitem.model';
|
||||||
@@ -15,17 +15,17 @@ import { RemoteData } from '../../../../../core/data/remote-data';
|
|||||||
import {
|
import {
|
||||||
getAllSucceededRemoteData,
|
getAllSucceededRemoteData,
|
||||||
getFirstCompletedRemoteData,
|
getFirstCompletedRemoteData,
|
||||||
getRemoteDataPayload
|
getRemoteDataPayload,
|
||||||
} from '../../../../../core/shared/operators';
|
} from '../../../../../core/shared/operators';
|
||||||
import { Item } from '../../../../../core/shared/item.model';
|
import { Item } from '../../../../../core/shared/item.model';
|
||||||
import {
|
import {
|
||||||
SearchResultListElementComponent
|
SearchResultListElementComponent,
|
||||||
} from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component';
|
} from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component';
|
||||||
import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
|
import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
|
||||||
import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service';
|
import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service';
|
||||||
import { APP_CONFIG, AppConfig } from '../../../../../../config/app-config.interface';
|
import { APP_CONFIG, AppConfig } from '../../../../../../config/app-config.interface';
|
||||||
import {
|
import {
|
||||||
WorkspaceItemSearchResult
|
WorkspaceItemSearchResult,
|
||||||
} from '../../../../../shared/object-collection/shared/workspace-item-search-result.model';
|
} from '../../../../../shared/object-collection/shared/workspace-item-search-result.model';
|
||||||
import { SupervisionOrder } from '../../../../../core/supervision-order/models/supervision-order.model';
|
import { SupervisionOrder } from '../../../../../core/supervision-order/models/supervision-order.model';
|
||||||
import { SupervisionOrderDataService } from '../../../../../core/supervision-order/supervision-order-data.service';
|
import { SupervisionOrderDataService } from '../../../../../core/supervision-order/supervision-order-data.service';
|
||||||
@@ -36,7 +36,7 @@ import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workflow-item-search-result-admin-workflow-list-element',
|
selector: 'ds-workflow-item-search-result-admin-workflow-list-element',
|
||||||
styleUrls: ['./workspace-item-search-result-admin-workflow-list-element.component.scss'],
|
styleUrls: ['./workspace-item-search-result-admin-workflow-list-element.component.scss'],
|
||||||
templateUrl: './workspace-item-search-result-admin-workflow-list-element.component.html'
|
templateUrl: './workspace-item-search-result-admin-workflow-list-element.component.html',
|
||||||
})
|
})
|
||||||
/**
|
/**
|
||||||
* The component for displaying a list element for a workflow item on the admin workflow search page
|
* The component for displaying a list element for a workflow item on the admin workflow search page
|
||||||
@@ -62,7 +62,7 @@ export class WorkspaceItemSearchResultAdminWorkflowListElementComponent extends
|
|||||||
public dsoNameService: DSONameService,
|
public dsoNameService: DSONameService,
|
||||||
protected supervisionOrderDataService: SupervisionOrderDataService,
|
protected supervisionOrderDataService: SupervisionOrderDataService,
|
||||||
protected truncatableService: TruncatableService,
|
protected truncatableService: TruncatableService,
|
||||||
@Inject(APP_CONFIG) protected appConfig: AppConfig
|
@Inject(APP_CONFIG) protected appConfig: AppConfig,
|
||||||
) {
|
) {
|
||||||
super(truncatableService, dsoNameService, appConfig);
|
super(truncatableService, dsoNameService, appConfig);
|
||||||
}
|
}
|
||||||
@@ -78,7 +78,7 @@ export class WorkspaceItemSearchResultAdminWorkflowListElementComponent extends
|
|||||||
this.item$.pipe(
|
this.item$.pipe(
|
||||||
take(1),
|
take(1),
|
||||||
tap((item: Item) => this.itemId = item.id),
|
tap((item: Item) => this.itemId = item.id),
|
||||||
mergeMap((item: Item) => this.retrieveSupervisorOrders(item.id))
|
mergeMap((item: Item) => this.retrieveSupervisorOrders(item.id)),
|
||||||
).subscribe((supervisionOrderList: SupervisionOrder[]) => {
|
).subscribe((supervisionOrderList: SupervisionOrder[]) => {
|
||||||
this.supervisionOrder$.next(supervisionOrderList);
|
this.supervisionOrder$.next(supervisionOrderList);
|
||||||
});
|
});
|
||||||
@@ -92,10 +92,10 @@ export class WorkspaceItemSearchResultAdminWorkflowListElementComponent extends
|
|||||||
*/
|
*/
|
||||||
private retrieveSupervisorOrders(itemId): Observable<SupervisionOrder[]> {
|
private retrieveSupervisorOrders(itemId): Observable<SupervisionOrder[]> {
|
||||||
return this.supervisionOrderDataService.searchByItem(
|
return this.supervisionOrderDataService.searchByItem(
|
||||||
itemId, false, true, followLink('group')
|
itemId, false, true, followLink('group'),
|
||||||
).pipe(
|
).pipe(
|
||||||
getFirstCompletedRemoteData(),
|
getFirstCompletedRemoteData(),
|
||||||
map((soRD: RemoteData<PaginatedList<SupervisionOrder>>) => soRD.hasSucceeded && !soRD.hasNoContent ? soRD.payload.page : [])
|
map((soRD: RemoteData<PaginatedList<SupervisionOrder>>) => soRD.hasSucceeded && !soRD.hasNoContent ? soRD.payload.page : []),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2,30 +2,30 @@ import { NgModule } from '@angular/core';
|
|||||||
|
|
||||||
import { SharedModule } from '../../shared/shared.module';
|
import { SharedModule } from '../../shared/shared.module';
|
||||||
import {
|
import {
|
||||||
WorkflowItemSearchResultAdminWorkflowGridElementComponent
|
WorkflowItemSearchResultAdminWorkflowGridElementComponent,
|
||||||
} from './admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-search-result-admin-workflow-grid-element.component';
|
} from './admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-search-result-admin-workflow-grid-element.component';
|
||||||
import {
|
import {
|
||||||
WorkflowItemAdminWorkflowActionsComponent
|
WorkflowItemAdminWorkflowActionsComponent,
|
||||||
} from './admin-workflow-search-results/actions/workflow-item/workflow-item-admin-workflow-actions.component';
|
} from './admin-workflow-search-results/actions/workflow-item/workflow-item-admin-workflow-actions.component';
|
||||||
import {
|
import {
|
||||||
WorkflowItemSearchResultAdminWorkflowListElementComponent
|
WorkflowItemSearchResultAdminWorkflowListElementComponent,
|
||||||
} from './admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-search-result-admin-workflow-list-element.component';
|
} from './admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-search-result-admin-workflow-list-element.component';
|
||||||
import { AdminWorkflowPageComponent } from './admin-workflow-page.component';
|
import { AdminWorkflowPageComponent } from './admin-workflow-page.component';
|
||||||
import { SearchModule } from '../../shared/search/search.module';
|
import { SearchModule } from '../../shared/search/search.module';
|
||||||
import {
|
import {
|
||||||
WorkspaceItemAdminWorkflowActionsComponent
|
WorkspaceItemAdminWorkflowActionsComponent,
|
||||||
} from './admin-workflow-search-results/actions/workspace-item/workspace-item-admin-workflow-actions.component';
|
} from './admin-workflow-search-results/actions/workspace-item/workspace-item-admin-workflow-actions.component';
|
||||||
import {
|
import {
|
||||||
WorkspaceItemSearchResultAdminWorkflowListElementComponent
|
WorkspaceItemSearchResultAdminWorkflowListElementComponent,
|
||||||
} from './admin-workflow-search-results/admin-workflow-search-result-list-element/workspace-item/workspace-item-search-result-admin-workflow-list-element.component';
|
} from './admin-workflow-search-results/admin-workflow-search-result-list-element/workspace-item/workspace-item-search-result-admin-workflow-list-element.component';
|
||||||
import {
|
import {
|
||||||
WorkspaceItemSearchResultAdminWorkflowGridElementComponent
|
WorkspaceItemSearchResultAdminWorkflowGridElementComponent,
|
||||||
} from './admin-workflow-search-results/admin-workflow-search-result-grid-element/workspace-item/workspace-item-search-result-admin-workflow-grid-element.component';
|
} from './admin-workflow-search-results/admin-workflow-search-result-grid-element/workspace-item/workspace-item-search-result-admin-workflow-grid-element.component';
|
||||||
import {
|
import {
|
||||||
SupervisionOrderGroupSelectorComponent
|
SupervisionOrderGroupSelectorComponent,
|
||||||
} from './admin-workflow-search-results/actions/workspace-item/supervision-order-group-selector/supervision-order-group-selector.component';
|
} from './admin-workflow-search-results/actions/workspace-item/supervision-order-group-selector/supervision-order-group-selector.component';
|
||||||
import {
|
import {
|
||||||
SupervisionOrderStatusComponent
|
SupervisionOrderStatusComponent,
|
||||||
} from './admin-workflow-search-results/actions/workspace-item/supervision-order-status/supervision-order-status.component';
|
} from './admin-workflow-search-results/actions/workspace-item/supervision-order-status/supervision-order-status.component';
|
||||||
|
|
||||||
const ENTRY_COMPONENTS = [
|
const ENTRY_COMPONENTS = [
|
||||||
@@ -33,13 +33,13 @@ const ENTRY_COMPONENTS = [
|
|||||||
WorkflowItemSearchResultAdminWorkflowListElementComponent,
|
WorkflowItemSearchResultAdminWorkflowListElementComponent,
|
||||||
WorkflowItemSearchResultAdminWorkflowGridElementComponent,
|
WorkflowItemSearchResultAdminWorkflowGridElementComponent,
|
||||||
WorkspaceItemSearchResultAdminWorkflowListElementComponent,
|
WorkspaceItemSearchResultAdminWorkflowListElementComponent,
|
||||||
WorkspaceItemSearchResultAdminWorkflowGridElementComponent
|
WorkspaceItemSearchResultAdminWorkflowGridElementComponent,
|
||||||
];
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
SearchModule,
|
SearchModule,
|
||||||
SharedModule.withEntryComponents()
|
SharedModule.withEntryComponents(),
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
AdminWorkflowPageComponent,
|
AdminWorkflowPageComponent,
|
||||||
@@ -47,11 +47,11 @@ const ENTRY_COMPONENTS = [
|
|||||||
SupervisionOrderStatusComponent,
|
SupervisionOrderStatusComponent,
|
||||||
WorkflowItemAdminWorkflowActionsComponent,
|
WorkflowItemAdminWorkflowActionsComponent,
|
||||||
WorkspaceItemAdminWorkflowActionsComponent,
|
WorkspaceItemAdminWorkflowActionsComponent,
|
||||||
...ENTRY_COMPONENTS
|
...ENTRY_COMPONENTS,
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
AdminWorkflowPageComponent
|
AdminWorkflowPageComponent,
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
export class AdminWorkflowModuleModule {
|
export class AdminWorkflowModuleModule {
|
||||||
/**
|
/**
|
||||||
@@ -61,7 +61,7 @@ export class AdminWorkflowModuleModule {
|
|||||||
static withEntryComponents() {
|
static withEntryComponents() {
|
||||||
return {
|
return {
|
||||||
ngModule: SharedModule,
|
ngModule: SharedModule,
|
||||||
providers: ENTRY_COMPONENTS.map((component) => ({provide: component}))
|
providers: ENTRY_COMPONENTS.map((component) => ({provide: component})),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -34,8 +34,8 @@ const ENTRY_COMPONENTS = [
|
|||||||
declarations: [
|
declarations: [
|
||||||
AdminCurationTasksComponent,
|
AdminCurationTasksComponent,
|
||||||
MetadataImportPageComponent,
|
MetadataImportPageComponent,
|
||||||
BatchImportPageComponent
|
BatchImportPageComponent,
|
||||||
]
|
],
|
||||||
})
|
})
|
||||||
export class AdminModule {
|
export class AdminModule {
|
||||||
/**
|
/**
|
||||||
@@ -45,7 +45,7 @@ export class AdminModule {
|
|||||||
static withEntryComponents() {
|
static withEntryComponents() {
|
||||||
return {
|
return {
|
||||||
ngModule: AdminModule,
|
ngModule: AdminModule,
|
||||||
providers: ENTRY_COMPONENTS.map((component) => ({provide: component}))
|
providers: ENTRY_COMPONENTS.map((component) => ({provide: component})),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user