mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
Added more tests and comments
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
<ds-item-detail-preview *ngIf="workFlow"
|
<ds-item-detail-preview *ngIf="workflowitem"
|
||||||
[item]="(workFlow.item | async)?.payload"
|
[item]="(workflowitem.item | async)?.payload"
|
||||||
[object]="object"
|
[object]="object"
|
||||||
[status]="status"></ds-item-detail-preview>
|
[showSubmitter]="showSubmitter"
|
||||||
|
[status]="status">
|
||||||
|
</ds-item-detail-preview>
|
||||||
|
|
||||||
<ds-claimed-task-actions *ngIf="workFlow" [object]="dso"></ds-claimed-task-actions>
|
<ds-claimed-task-actions *ngIf="workflowitem" [object]="dso"></ds-claimed-task-actions>
|
||||||
|
@@ -0,0 +1,89 @@
|
|||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { ClaimedMyDSpaceResultDetailElementComponent } from './claimed-my-dspace-result-detail-element.component';
|
||||||
|
import { ClaimedTaskMyDSpaceResult } from '../../../object-collection/shared/claimed-task-my-dspace-result.model';
|
||||||
|
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
|
||||||
|
import { RemoteData } from '../../../../core/data/remote-data';
|
||||||
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
import { Workflowitem } from '../../../../core/submission/models/workflowitem.model';
|
||||||
|
|
||||||
|
let component: ClaimedMyDSpaceResultDetailElementComponent;
|
||||||
|
let fixture: ComponentFixture<ClaimedMyDSpaceResultDetailElementComponent>;
|
||||||
|
|
||||||
|
const compIndex = 1;
|
||||||
|
|
||||||
|
const mockResultObject: ClaimedTaskMyDSpaceResult = new ClaimedTaskMyDSpaceResult();
|
||||||
|
mockResultObject.hitHighlights = {};
|
||||||
|
|
||||||
|
const item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const rdItem = new RemoteData(false, false, true, null, item);
|
||||||
|
const workflowitem = Object.assign(new Workflowitem(), { item: observableOf(rdItem) });
|
||||||
|
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem);
|
||||||
|
mockResultObject.dspaceObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) });
|
||||||
|
|
||||||
|
describe('ClaimedMyDSpaceResultDetailElementComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [NoopAnimationsModule],
|
||||||
|
declarations: [ClaimedMyDSpaceResultDetailElementComponent],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
|
||||||
|
{ provide: 'indexElementProvider', useValue: (compIndex) }
|
||||||
|
],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(ClaimedMyDSpaceResultDetailElementComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(ClaimedMyDSpaceResultDetailElementComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.dso = mockResultObject.dspaceObject;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init item properly', () => {
|
||||||
|
expect(component.workflowitem).toEqual(workflowitem);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should have properly status', () => {
|
||||||
|
expect(component.status).toEqual(MyDspaceItemStatusType.VALIDATION);
|
||||||
|
});
|
||||||
|
});
|
@@ -11,47 +11,56 @@ import { ListableObject } from '../../../object-collection/shared/listable-objec
|
|||||||
import { Workflowitem } from '../../../../core/submission/models/workflowitem.model';
|
import { Workflowitem } from '../../../../core/submission/models/workflowitem.model';
|
||||||
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
|
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
|
||||||
import { ClaimedTaskMyDSpaceResult } from '../../../object-collection/shared/claimed-task-my-dspace-result.model';
|
import { ClaimedTaskMyDSpaceResult } from '../../../object-collection/shared/claimed-task-my-dspace-result.model';
|
||||||
import { ClaimedTaskDataService } from '../../../../core/tasks/claimed-task-data.service';
|
|
||||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
|
||||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
|
||||||
import { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';
|
|
||||||
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
|
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
|
||||||
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component renders claimed task object for the mydspace result in the detail view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-claimed-my-dspace-result-detail-element',
|
selector: 'ds-claimed-my-dspace-result-detail-element',
|
||||||
styleUrls: ['../my-dspace-result-detail-element.component.scss'],
|
styleUrls: ['../my-dspace-result-detail-element.component.scss'],
|
||||||
templateUrl: './claimed-my-dspace-result-detail-element.component.html',
|
templateUrl: './claimed-my-dspace-result-detail-element.component.html'
|
||||||
providers: [Location, {provide: LocationStrategy, useClass: PathLocationStrategy}]
|
|
||||||
})
|
})
|
||||||
|
|
||||||
@renderElementsFor(ClaimedTaskMyDSpaceResult, ViewMode.Detail)
|
@renderElementsFor(ClaimedTaskMyDSpaceResult, ViewMode.Detail)
|
||||||
@renderElementsFor(ClaimedTask, ViewMode.Detail)
|
@renderElementsFor(ClaimedTask, ViewMode.Detail)
|
||||||
export class ClaimedMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<ClaimedTaskMyDSpaceResult, ClaimedTask> {
|
export class ClaimedMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<ClaimedTaskMyDSpaceResult, ClaimedTask> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A boolean representing if to show submitter information
|
||||||
|
*/
|
||||||
|
public showSubmitter = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
public status = MyDspaceItemStatusType.VALIDATION;
|
public status = MyDspaceItemStatusType.VALIDATION;
|
||||||
public workFlow: Workflowitem;
|
|
||||||
public rejectForm: FormGroup;
|
|
||||||
|
|
||||||
constructor(private ctDataService: ClaimedTaskDataService,
|
/**
|
||||||
private modalService: NgbModal,
|
* The workflowitem object that belonging to the result object
|
||||||
private formBuilder: FormBuilder,
|
*/
|
||||||
@Inject('objectElementProvider') public listable: ListableObject) {
|
public workflowitem: Workflowitem;
|
||||||
|
|
||||||
|
constructor(@Inject('objectElementProvider') public listable: ListableObject) {
|
||||||
super(listable);
|
super(listable);
|
||||||
|
|
||||||
this.rejectForm = this.formBuilder.group({
|
|
||||||
reason: ['', Validators.required]
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize all instance variables
|
||||||
|
*/
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<Workflowitem>>);
|
this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<Workflowitem>>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve workflowitem from result object
|
||||||
|
*/
|
||||||
initWorkflowItem(wfi$: Observable<RemoteData<Workflowitem>>) {
|
initWorkflowItem(wfi$: Observable<RemoteData<Workflowitem>>) {
|
||||||
wfi$.pipe(
|
wfi$.pipe(
|
||||||
find((rd: RemoteData<Workflowitem>) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
|
find((rd: RemoteData<Workflowitem>) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
|
||||||
).subscribe((rd: RemoteData<Workflowitem>) => {
|
).subscribe((rd: RemoteData<Workflowitem>) => {
|
||||||
this.workFlow = rd.payload;
|
this.workflowitem = rd.payload;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,35 +24,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<ds-item-submitter *ngIf="showSubmitter" [object]="object.dspaceObject"></ds-item-submitter>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--<ng-container @fadeInOut>
|
|
||||||
<ng-container *ngIf="status">
|
|
||||||
<ds-item-status [status]="status"></ds-item-status>
|
|
||||||
</ng-container>
|
|
||||||
<ds-item-page-title-field [item]="item"></ds-item-page-title-field>
|
|
||||||
|
|
||||||
<div class="row mb-1">
|
|
||||||
<div class="col-xs-12 col-md-4">
|
|
||||||
<ds-metadata-field-wrapper>
|
|
||||||
<ds-thumbnail [thumbnail]="item.getThumbnail()"></ds-thumbnail>
|
|
||||||
</ds-metadata-field-wrapper>
|
|
||||||
<ds-item-page-file-section [item]="item"></ds-item-page-file-section>
|
|
||||||
<ds-item-page-date-field [item]="item"></ds-item-page-date-field>
|
|
||||||
<ds-item-page-author-field [item]="item"></ds-item-page-author-field>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-12 col-md-6">
|
|
||||||
<ds-item-page-abstract-field [item]="item"></ds-item-page-abstract-field>
|
|
||||||
<ds-item-page-uri-field [item]="item"></ds-item-page-uri-field>
|
|
||||||
<ds-item-page-collections [item]="item" *ngIf="item.owner"></ds-item-page-collections>
|
|
||||||
<div>
|
|
||||||
|
|
||||||
|
|
||||||
<ng-content></ng-content>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</ng-container>-->
|
|
||||||
|
|
||||||
|
@@ -0,0 +1,90 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
||||||
|
|
||||||
|
import { TruncatePipe } from '../../../utils/truncate.pipe';
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { ItemDetailPreviewComponent } from './item-detail-preview.component';
|
||||||
|
import { MockTranslateLoader } from '../../../mocks/mock-translate-loader';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
let component: ItemDetailPreviewComponent;
|
||||||
|
let fixture: ComponentFixture<ItemDetailPreviewComponent>;
|
||||||
|
|
||||||
|
const mockItemWithAuthorAndDate: Item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const mockItemWithoutAuthorAndDate: Item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('ItemDetailPreviewComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [
|
||||||
|
NoopAnimationsModule,
|
||||||
|
TranslateModule.forRoot({
|
||||||
|
loader: {
|
||||||
|
provide: TranslateLoader,
|
||||||
|
useClass: MockTranslateLoader
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
declarations: [ItemDetailPreviewComponent, TruncatePipe],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: { mockItemWithAuthorAndDate } }
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(ItemDetailPreviewComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(ItemDetailPreviewComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.object = { hitHighlights: {} };
|
||||||
|
component.item = mockItemWithAuthorAndDate;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init thumbnail on init', () => {
|
||||||
|
expect(component.thumbnail$).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
@@ -7,25 +7,46 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
|
|||||||
import { fadeInOut } from '../../../animations/fade';
|
import { fadeInOut } from '../../../animations/fade';
|
||||||
import { Bitstream } from '../../../../core/shared/bitstream.model';
|
import { Bitstream } from '../../../../core/shared/bitstream.model';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component show metadata for the given item object in the detail view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-item-detail-preview',
|
selector: 'ds-item-detail-preview',
|
||||||
styleUrls: ['./item-detail-preview.component.scss'],
|
styleUrls: ['./item-detail-preview.component.scss'],
|
||||||
templateUrl: './item-detail-preview.component.html',
|
templateUrl: './item-detail-preview.component.html',
|
||||||
animations: [fadeInOut]
|
animations: [fadeInOut]
|
||||||
})
|
})
|
||||||
export class ItemDetailPreviewComponent<T> {
|
export class ItemDetailPreviewComponent {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The item to display
|
||||||
|
*/
|
||||||
@Input() item: Item;
|
@Input() item: Item;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The mydspace result object
|
||||||
|
*/
|
||||||
@Input() object: any;
|
@Input() object: any;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
@Input() status: MyDspaceItemStatusType;
|
@Input() status: MyDspaceItemStatusType;
|
||||||
|
|
||||||
public ALL_STATUS = [];
|
/**
|
||||||
|
* A boolean representing if to show submitter information
|
||||||
|
*/
|
||||||
|
@Input() showSubmitter = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The item's thumbnail
|
||||||
|
*/
|
||||||
public thumbnail$: Observable<Bitstream>;
|
public thumbnail$: Observable<Bitstream>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize all instance variables
|
||||||
|
*/
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
Object.keys(MyDspaceItemStatusType).forEach((s) => {
|
|
||||||
this.ALL_STATUS.push(MyDspaceItemStatusType[s]);
|
|
||||||
});
|
|
||||||
this.thumbnail$ = this.item.getThumbnail();
|
this.thumbnail$ = this.item.getThumbnail();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +1,78 @@
|
|||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { ItemMyDSpaceResultDetailElementComponent } from './item-my-dspace-result-detail-element.component';
|
||||||
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
import { ItemMyDSpaceResult } from '../../../object-collection/shared/item-my-dspace-result.model';
|
||||||
|
|
||||||
|
let component: ItemMyDSpaceResultDetailElementComponent;
|
||||||
|
let fixture: ComponentFixture<ItemMyDSpaceResultDetailElementComponent>;
|
||||||
|
|
||||||
|
const compIndex = 1;
|
||||||
|
|
||||||
|
const mockResultObject: ItemMyDSpaceResult = new ItemMyDSpaceResult();
|
||||||
|
mockResultObject.hitHighlights = {};
|
||||||
|
|
||||||
|
mockResultObject.dspaceObject = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('ItemMyDSpaceResultDetailElementComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [NoopAnimationsModule],
|
||||||
|
declarations: [ItemMyDSpaceResultDetailElementComponent],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
|
||||||
|
{ provide: 'indexElementProvider', useValue: (compIndex) }
|
||||||
|
],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(ItemMyDSpaceResultDetailElementComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(ItemMyDSpaceResultDetailElementComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.dso = mockResultObject.dspaceObject;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should have properly status', () => {
|
||||||
|
expect(component.status).toEqual(MyDspaceItemStatusType.ACCEPTED);
|
||||||
|
});
|
||||||
|
});
|
@@ -7,6 +7,9 @@ import { ItemMyDSpaceResult } from '../../../object-collection/shared/item-my-ds
|
|||||||
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
|
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
|
||||||
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component renders item object for the mydspace result in the detail view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workspaceitem-my-dspace-result-detail-element',
|
selector: 'ds-workspaceitem-my-dspace-result-detail-element',
|
||||||
styleUrls: ['../my-dspace-result-detail-element.component.scss', './item-my-dspace-result-detail-element.component.scss'],
|
styleUrls: ['../my-dspace-result-detail-element.component.scss', './item-my-dspace-result-detail-element.component.scss'],
|
||||||
@@ -16,6 +19,9 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
|
|||||||
@renderElementsFor(ItemMyDSpaceResult, ViewMode.Detail)
|
@renderElementsFor(ItemMyDSpaceResult, ViewMode.Detail)
|
||||||
export class ItemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<ItemMyDSpaceResult, Item> {
|
export class ItemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<ItemMyDSpaceResult, Item> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
public status = MyDspaceItemStatusType.ACCEPTED;
|
public status = MyDspaceItemStatusType.ACCEPTED;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
<ds-item-detail-preview *ngIf="workFlow"
|
<ds-item-detail-preview *ngIf="workflowitem"
|
||||||
[item]="(workFlow.item | async)?.payload"
|
[item]="(workflowitem.item | async)?.payload"
|
||||||
[object]="object"
|
[object]="object"
|
||||||
|
[showSubmitter]="showSubmitter"
|
||||||
[status]="status"></ds-item-detail-preview>
|
[status]="status"></ds-item-detail-preview>
|
||||||
|
|
||||||
<ds-pool-task-actions *ngIf="workFlow" [object]="dso"></ds-pool-task-actions>
|
<ds-pool-task-actions *ngIf="workflowitem" [object]="dso"></ds-pool-task-actions>
|
||||||
|
@@ -0,0 +1,89 @@
|
|||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { PoolMyDSpaceResultDetailElementComponent } from './pool-my-dspace-result-detail-lement.component';
|
||||||
|
import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-task-my-dspace-result.model';
|
||||||
|
import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
|
||||||
|
import { RemoteData } from '../../../../core/data/remote-data';
|
||||||
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
import { Workflowitem } from '../../../../core/submission/models/workflowitem.model';
|
||||||
|
|
||||||
|
let component: PoolMyDSpaceResultDetailElementComponent;
|
||||||
|
let fixture: ComponentFixture<PoolMyDSpaceResultDetailElementComponent>;
|
||||||
|
|
||||||
|
const compIndex = 1;
|
||||||
|
|
||||||
|
const mockResultObject: PoolTaskMyDSpaceResult = new PoolTaskMyDSpaceResult();
|
||||||
|
mockResultObject.hitHighlights = {};
|
||||||
|
|
||||||
|
const item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const rdItem = new RemoteData(false, false, true, null, item);
|
||||||
|
const workflowitem = Object.assign(new Workflowitem(), { item: observableOf(rdItem) });
|
||||||
|
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem);
|
||||||
|
mockResultObject.dspaceObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
|
||||||
|
|
||||||
|
describe('PoolMyDSpaceResultDetailElementComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [NoopAnimationsModule],
|
||||||
|
declarations: [PoolMyDSpaceResultDetailElementComponent],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
|
||||||
|
{ provide: 'indexElementProvider', useValue: (compIndex) }
|
||||||
|
],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(PoolMyDSpaceResultDetailElementComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(PoolMyDSpaceResultDetailElementComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.dso = mockResultObject.dspaceObject;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init item properly', () => {
|
||||||
|
expect(component.workflowitem).toEqual(workflowitem);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should have properly status', () => {
|
||||||
|
expect(component.status).toEqual(MyDspaceItemStatusType.WAITING_CONTROLLER);
|
||||||
|
});
|
||||||
|
});
|
@@ -14,6 +14,9 @@ import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-t
|
|||||||
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
|
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
|
||||||
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component renders pool task object for the mydspace result in the detail view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-pool-my-dspace-result-detail-element',
|
selector: 'ds-pool-my-dspace-result-detail-element',
|
||||||
styleUrls: ['../my-dspace-result-detail-element.component.scss'],
|
styleUrls: ['../my-dspace-result-detail-element.component.scss'],
|
||||||
@@ -23,23 +26,41 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
|
|||||||
@renderElementsFor(PoolTaskMyDSpaceResult, ViewMode.Detail)
|
@renderElementsFor(PoolTaskMyDSpaceResult, ViewMode.Detail)
|
||||||
@renderElementsFor(PoolTask, ViewMode.Detail)
|
@renderElementsFor(PoolTask, ViewMode.Detail)
|
||||||
export class PoolMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<PoolTaskMyDSpaceResult, PoolTask> {
|
export class PoolMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<PoolTaskMyDSpaceResult, PoolTask> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A boolean representing if to show submitter information
|
||||||
|
*/
|
||||||
|
public showSubmitter = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
public status = MyDspaceItemStatusType.WAITING_CONTROLLER;
|
public status = MyDspaceItemStatusType.WAITING_CONTROLLER;
|
||||||
public workFlow: Workflowitem;
|
|
||||||
|
/**
|
||||||
|
* The workflowitem object that belonging to the result object
|
||||||
|
*/
|
||||||
|
public workflowitem: Workflowitem;
|
||||||
|
|
||||||
constructor(@Inject('objectElementProvider') public listable: ListableObject) {
|
constructor(@Inject('objectElementProvider') public listable: ListableObject) {
|
||||||
|
|
||||||
super(listable);
|
super(listable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize all instance variables
|
||||||
|
*/
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<Workflowitem>>);
|
this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<Workflowitem>>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve workflowitem from result object
|
||||||
|
*/
|
||||||
initWorkflowItem(wfi$: Observable<RemoteData<Workflowitem>>) {
|
initWorkflowItem(wfi$: Observable<RemoteData<Workflowitem>>) {
|
||||||
wfi$.pipe(
|
wfi$.pipe(
|
||||||
find((rd: RemoteData<Workflowitem>) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
|
find((rd: RemoteData<Workflowitem>) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
|
||||||
).subscribe((rd: RemoteData<Workflowitem>) => {
|
).subscribe((rd: RemoteData<Workflowitem>) => {
|
||||||
this.workFlow = rd.payload;
|
this.workflowitem = rd.payload;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +1,86 @@
|
|||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { WorkflowitemMyDSpaceResultDetailElementComponent } from './workflowitem-my-dspace-result-detail-element.component';
|
||||||
|
import { WorkflowitemMyDSpaceResult } from '../../../object-collection/shared/workflowitem-my-dspace-result.model';
|
||||||
|
import { Workflowitem } from '../../../../core/submission/models/workflowitem.model';
|
||||||
|
import { RemoteData } from '../../../../core/data/remote-data';
|
||||||
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
let component: WorkflowitemMyDSpaceResultDetailElementComponent;
|
||||||
|
let fixture: ComponentFixture<WorkflowitemMyDSpaceResultDetailElementComponent>;
|
||||||
|
|
||||||
|
const compIndex = 1;
|
||||||
|
|
||||||
|
const mockResultObject: WorkflowitemMyDSpaceResult = new WorkflowitemMyDSpaceResult();
|
||||||
|
mockResultObject.hitHighlights = {};
|
||||||
|
|
||||||
|
const item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const rd = new RemoteData(false, false, true, null, item);
|
||||||
|
mockResultObject.dspaceObject = Object.assign(new Workflowitem(), { item: observableOf(rd) });
|
||||||
|
|
||||||
|
describe('WorkflowitemMyDSpaceResultDetailElementComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [NoopAnimationsModule],
|
||||||
|
declarations: [WorkflowitemMyDSpaceResultDetailElementComponent],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
|
||||||
|
{ provide: 'indexElementProvider', useValue: (compIndex) }
|
||||||
|
],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(WorkflowitemMyDSpaceResultDetailElementComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(WorkflowitemMyDSpaceResultDetailElementComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.dso = mockResultObject.dspaceObject;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init item properly', () => {
|
||||||
|
expect(component.item).toEqual(item);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should have properly status', () => {
|
||||||
|
expect(component.status).toEqual(MyDspaceItemStatusType.WORKFLOW);
|
||||||
|
});
|
||||||
|
});
|
@@ -13,6 +13,9 @@ import { RemoteData } from '../../../../core/data/remote-data';
|
|||||||
import { find } from 'rxjs/operators';
|
import { find } from 'rxjs/operators';
|
||||||
import { isNotUndefined } from '../../../empty.util';
|
import { isNotUndefined } from '../../../empty.util';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component renders workflowitem object for the mydspace result in the detail view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workflowitem-my-dspace-result-detail-element',
|
selector: 'ds-workflowitem-my-dspace-result-detail-element',
|
||||||
styleUrls: ['../my-dspace-result-detail-element.component.scss'],
|
styleUrls: ['../my-dspace-result-detail-element.component.scss'],
|
||||||
@@ -23,17 +26,30 @@ import { isNotUndefined } from '../../../empty.util';
|
|||||||
@renderElementsFor(Workflowitem, ViewMode.Detail)
|
@renderElementsFor(Workflowitem, ViewMode.Detail)
|
||||||
export class WorkflowitemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<WorkflowitemMyDSpaceResult, Workflowitem> {
|
export class WorkflowitemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<WorkflowitemMyDSpaceResult, Workflowitem> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The item object that belonging to the result object
|
||||||
|
*/
|
||||||
public item: Item;
|
public item: Item;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
public status = MyDspaceItemStatusType.WORKFLOW;
|
public status = MyDspaceItemStatusType.WORKFLOW;
|
||||||
|
|
||||||
constructor(@Inject('objectElementProvider') public listable: ListableObject) {
|
constructor(@Inject('objectElementProvider') public listable: ListableObject) {
|
||||||
super(listable);
|
super(listable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize all instance variables
|
||||||
|
*/
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.initItem(this.dso.item as Observable<RemoteData<Item>>);
|
this.initItem(this.dso.item as Observable<RemoteData<Item>>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve item from result object
|
||||||
|
*/
|
||||||
initItem(item$: Observable<RemoteData<Item>>) {
|
initItem(item$: Observable<RemoteData<Item>>) {
|
||||||
item$.pipe(
|
item$.pipe(
|
||||||
find((rd: RemoteData<Item>) => rd.hasSucceeded && isNotUndefined(rd.payload))
|
find((rd: RemoteData<Item>) => rd.hasSucceeded && isNotUndefined(rd.payload))
|
||||||
|
@@ -0,0 +1,86 @@
|
|||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { WorkspaceitemMyDSpaceResultDetailElementComponent } from './workspaceitem-my-dspace-result-detail-element.component';
|
||||||
|
import { WorkspaceitemMyDSpaceResult } from '../../../object-collection/shared/workspaceitem-my-dspace-result.model';
|
||||||
|
import { Workspaceitem } from '../../../../core/submission/models/workspaceitem.model';
|
||||||
|
import { RemoteData } from '../../../../core/data/remote-data';
|
||||||
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
let component: WorkspaceitemMyDSpaceResultDetailElementComponent;
|
||||||
|
let fixture: ComponentFixture<WorkspaceitemMyDSpaceResultDetailElementComponent>;
|
||||||
|
|
||||||
|
const compIndex = 1;
|
||||||
|
|
||||||
|
const mockResultObject: WorkspaceitemMyDSpaceResult = new WorkspaceitemMyDSpaceResult();
|
||||||
|
mockResultObject.hitHighlights = {};
|
||||||
|
|
||||||
|
const item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const rd = new RemoteData(false, false, true, null, item);
|
||||||
|
mockResultObject.dspaceObject = Object.assign(new Workspaceitem(), { item: observableOf(rd) });
|
||||||
|
|
||||||
|
describe('WorkspaceitemMyDSpaceResultDetailElementComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [NoopAnimationsModule],
|
||||||
|
declarations: [WorkspaceitemMyDSpaceResultDetailElementComponent],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
|
||||||
|
{ provide: 'indexElementProvider', useValue: (compIndex) }
|
||||||
|
],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(WorkspaceitemMyDSpaceResultDetailElementComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(WorkspaceitemMyDSpaceResultDetailElementComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.dso = mockResultObject.dspaceObject;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init item properly', () => {
|
||||||
|
expect(component.item).toEqual(item);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should have properly status', () => {
|
||||||
|
expect(component.status).toEqual(MyDspaceItemStatusType.IN_PROGRESS);
|
||||||
|
});
|
||||||
|
});
|
@@ -14,6 +14,9 @@ import { ListableObject } from '../../../object-collection/shared/listable-objec
|
|||||||
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
|
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
|
||||||
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component renders workspaceitem object for the mydspace result in the detail view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workspaceitem-my-dspace-result-detail-element',
|
selector: 'ds-workspaceitem-my-dspace-result-detail-element',
|
||||||
styleUrls: ['../my-dspace-result-detail-element.component.scss', './workspaceitem-my-dspace-result-detail-element.component.scss'],
|
styleUrls: ['../my-dspace-result-detail-element.component.scss', './workspaceitem-my-dspace-result-detail-element.component.scss'],
|
||||||
@@ -23,17 +26,31 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
|
|||||||
@renderElementsFor(WorkspaceitemMyDSpaceResult, ViewMode.Detail)
|
@renderElementsFor(WorkspaceitemMyDSpaceResult, ViewMode.Detail)
|
||||||
@renderElementsFor(Workspaceitem, ViewMode.Detail)
|
@renderElementsFor(Workspaceitem, ViewMode.Detail)
|
||||||
export class WorkspaceitemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<WorkspaceitemMyDSpaceResult, Workspaceitem> {
|
export class WorkspaceitemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<WorkspaceitemMyDSpaceResult, Workspaceitem> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The item object that belonging to the result object
|
||||||
|
*/
|
||||||
public item: Item;
|
public item: Item;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
status = MyDspaceItemStatusType.IN_PROGRESS;
|
status = MyDspaceItemStatusType.IN_PROGRESS;
|
||||||
|
|
||||||
constructor(@Inject('objectElementProvider') public listable: ListableObject) {
|
constructor(@Inject('objectElementProvider') public listable: ListableObject) {
|
||||||
super(listable);
|
super(listable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize all instance variables
|
||||||
|
*/
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.initItem(this.dso.item as Observable<RemoteData<Item>>);
|
this.initItem(this.dso.item as Observable<RemoteData<Item>>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve item from result object
|
||||||
|
*/
|
||||||
initItem(item$: Observable<RemoteData<Item>>) {
|
initItem(item$: Observable<RemoteData<Item>>) {
|
||||||
item$.pipe(
|
item$.pipe(
|
||||||
find((rd: RemoteData<Item>) => rd.hasSucceeded && isNotUndefined(rd.payload))
|
find((rd: RemoteData<Item>) => rd.hasSucceeded && isNotUndefined(rd.payload))
|
||||||
|
@@ -1,5 +0,0 @@
|
|||||||
@import '../../../../styles/_variables.scss';
|
|
||||||
|
|
||||||
.h3-title {
|
|
||||||
color: $link-color;
|
|
||||||
}
|
|
@@ -1,7 +1,7 @@
|
|||||||
<ds-item-list-preview *ngIf="workFlow"
|
<ds-item-list-preview *ngIf="workflowitem"
|
||||||
[item]="(workFlow.item | async)?.payload"
|
[item]="(workflowitem.item | async)?.payload"
|
||||||
[object]="object"
|
[object]="object"
|
||||||
[showSubmitter]="showSubmitter"
|
[showSubmitter]="showSubmitter"
|
||||||
[status]="status"></ds-item-list-preview>
|
[status]="status"></ds-item-list-preview>
|
||||||
|
|
||||||
<ds-claimed-task-actions *ngIf="workFlow" [object]="dso"></ds-claimed-task-actions>
|
<ds-claimed-task-actions *ngIf="workflowitem" [object]="dso"></ds-claimed-task-actions>
|
||||||
|
@@ -0,0 +1,89 @@
|
|||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { ClaimedMyDSpaceResultListElementComponent } from './claimed-my-dspace-result-list-element.component';
|
||||||
|
import { ClaimedTaskMyDSpaceResult } from '../../../object-collection/shared/claimed-task-my-dspace-result.model';
|
||||||
|
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
|
||||||
|
import { RemoteData } from '../../../../core/data/remote-data';
|
||||||
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
import { Workflowitem } from '../../../../core/submission/models/workflowitem.model';
|
||||||
|
|
||||||
|
let component: ClaimedMyDSpaceResultListElementComponent;
|
||||||
|
let fixture: ComponentFixture<ClaimedMyDSpaceResultListElementComponent>;
|
||||||
|
|
||||||
|
const compIndex = 1;
|
||||||
|
|
||||||
|
const mockResultObject: ClaimedTaskMyDSpaceResult = new ClaimedTaskMyDSpaceResult();
|
||||||
|
mockResultObject.hitHighlights = {};
|
||||||
|
|
||||||
|
const item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const rdItem = new RemoteData(false, false, true, null, item);
|
||||||
|
const workflowitem = Object.assign(new Workflowitem(), { item: observableOf(rdItem) });
|
||||||
|
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem);
|
||||||
|
mockResultObject.dspaceObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) });
|
||||||
|
|
||||||
|
describe('ClaimedMyDSpaceResultListElementComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [NoopAnimationsModule],
|
||||||
|
declarations: [ClaimedMyDSpaceResultListElementComponent],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
|
||||||
|
{ provide: 'indexElementProvider', useValue: (compIndex) }
|
||||||
|
],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(ClaimedMyDSpaceResultListElementComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(ClaimedMyDSpaceResultListElementComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.dso = mockResultObject.dspaceObject;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init item properly', () => {
|
||||||
|
expect(component.workflowitem).toEqual(workflowitem);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should have properly status', () => {
|
||||||
|
expect(component.status).toEqual(MyDspaceItemStatusType.VALIDATION);
|
||||||
|
});
|
||||||
|
});
|
@@ -14,6 +14,9 @@ import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.m
|
|||||||
import { ClaimedTaskMyDSpaceResult } from '../../../object-collection/shared/claimed-task-my-dspace-result.model';
|
import { ClaimedTaskMyDSpaceResult } from '../../../object-collection/shared/claimed-task-my-dspace-result.model';
|
||||||
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component renders claimed task object for the mydspace result in the list view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-claimed-my-dspace-result-list-element',
|
selector: 'ds-claimed-my-dspace-result-list-element',
|
||||||
styleUrls: ['../my-dspace-result-list-element.component.scss'],
|
styleUrls: ['../my-dspace-result-list-element.component.scss'],
|
||||||
@@ -24,19 +27,37 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
|
|||||||
@renderElementsFor(ClaimedTaskMyDSpaceResult, ViewMode.List)
|
@renderElementsFor(ClaimedTaskMyDSpaceResult, ViewMode.List)
|
||||||
@renderElementsFor(ClaimedTask, ViewMode.List)
|
@renderElementsFor(ClaimedTask, ViewMode.List)
|
||||||
export class ClaimedMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<ClaimedTaskMyDSpaceResult, ClaimedTask> {
|
export class ClaimedMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<ClaimedTaskMyDSpaceResult, ClaimedTask> {
|
||||||
public showSubmitter = true;
|
|
||||||
public status = MyDspaceItemStatusType.VALIDATION;
|
|
||||||
public workFlow: Workflowitem;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A boolean representing if to show submitter information
|
||||||
|
*/
|
||||||
|
public showSubmitter = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
|
public status = MyDspaceItemStatusType.VALIDATION;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The workflowitem object that belonging to the result object
|
||||||
|
*/
|
||||||
|
public workflowitem: Workflowitem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize all instance variables
|
||||||
|
*/
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<Workflowitem>>);
|
this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<Workflowitem>>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve workflowitem from result object
|
||||||
|
*/
|
||||||
initWorkflowItem(wfi$: Observable<RemoteData<Workflowitem>>) {
|
initWorkflowItem(wfi$: Observable<RemoteData<Workflowitem>>) {
|
||||||
wfi$.pipe(
|
wfi$.pipe(
|
||||||
find((rd: RemoteData<Workflowitem>) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
|
find((rd: RemoteData<Workflowitem>) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
|
||||||
).subscribe((rd: RemoteData<Workflowitem>) => {
|
).subscribe((rd: RemoteData<Workflowitem>) => {
|
||||||
this.workFlow = rd.payload;
|
this.workflowitem = rd.payload;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,5 @@
|
|||||||
|
@import '../../../../../styles/variables';
|
||||||
|
|
||||||
|
.h3-title {
|
||||||
|
color: $link-color;
|
||||||
|
}
|
@@ -0,0 +1,131 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
import { By } from '@angular/platform-browser';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
|
import { TruncatePipe } from '../../../utils/truncate.pipe';
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { ItemListPreviewComponent } from './item-list-preview.component';
|
||||||
|
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { MockTranslateLoader } from '../../../mocks/mock-translate-loader';
|
||||||
|
|
||||||
|
let component: ItemListPreviewComponent;
|
||||||
|
let fixture: ComponentFixture<ItemListPreviewComponent>;
|
||||||
|
|
||||||
|
const mockItemWithAuthorAndDate: Item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const mockItemWithoutAuthorAndDate: Item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('ItemListPreviewComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [
|
||||||
|
TranslateModule.forRoot({
|
||||||
|
loader: {
|
||||||
|
provide: TranslateLoader,
|
||||||
|
useClass: MockTranslateLoader
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
declarations: [ItemListPreviewComponent, TruncatePipe],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: { mockItemWithAuthorAndDate } }
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(ItemListPreviewComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(ItemListPreviewComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.object = { hitHighlights: {} };
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('When the item has an author', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
component.item = mockItemWithAuthorAndDate;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should show the author paragraph', () => {
|
||||||
|
const itemAuthorField = fixture.debugElement.query(By.css('span.item-list-authors'));
|
||||||
|
expect(itemAuthorField).not.toBeNull();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('When the item has no author', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
component.item = mockItemWithoutAuthorAndDate;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not show the author paragraph', () => {
|
||||||
|
const itemAuthorField = fixture.debugElement.query(By.css('span.item-list-authors'));
|
||||||
|
expect(itemAuthorField).toBeNull();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('When the item has an issuedate', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
component.item = mockItemWithAuthorAndDate;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should show the issuedate span', () => {
|
||||||
|
const dateField = fixture.debugElement.query(By.css('span.item-list-date'));
|
||||||
|
expect(dateField).not.toBeNull();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('When the item has no issuedate', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
component.item = mockItemWithoutAuthorAndDate;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should show the issuedate empty placeholder', () => {
|
||||||
|
const dateField = fixture.debugElement.query(By.css('span.item-list-date'));
|
||||||
|
expect(dateField).not.toBeNull();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@@ -1,21 +1,39 @@
|
|||||||
import { Component, Input } from '@angular/core';
|
import { Component, Input } from '@angular/core';
|
||||||
|
|
||||||
import { Item } from '../../../core/shared/item.model';
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
import { fadeInOut } from '../../animations/fade';
|
import { fadeInOut } from '../../../animations/fade';
|
||||||
import { MyDspaceItemStatusType } from '../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
import { Metadata } from '../../../core/shared/metadata.utils';
|
import { Metadata } from '../../../../core/shared/metadata.utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component show metadata for the given item object in the list view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-item-list-preview',
|
selector: 'ds-item-list-preview',
|
||||||
styleUrls: ['item-list-preview.component.scss'],
|
styleUrls: ['item-list-preview.component.scss'],
|
||||||
templateUrl: 'item-list-preview.component.html',
|
templateUrl: 'item-list-preview.component.html',
|
||||||
animations: [fadeInOut]
|
animations: [fadeInOut]
|
||||||
})
|
})
|
||||||
|
|
||||||
export class ItemListPreviewComponent {
|
export class ItemListPreviewComponent {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The item to display
|
||||||
|
*/
|
||||||
@Input() item: Item;
|
@Input() item: Item;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The mydspace result object
|
||||||
|
*/
|
||||||
@Input() object: any;
|
@Input() object: any;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
@Input() status: MyDspaceItemStatusType;
|
@Input() status: MyDspaceItemStatusType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A boolean representing if to show submitter information
|
||||||
|
*/
|
||||||
@Input() showSubmitter = false;
|
@Input() showSubmitter = false;
|
||||||
|
|
||||||
/**
|
/**
|
@@ -0,0 +1,78 @@
|
|||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { ItemMyDSpaceResultListElementComponent } from './item-my-dspace-result-list-element.component';
|
||||||
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
import { ItemMyDSpaceResult } from '../../../object-collection/shared/item-my-dspace-result.model';
|
||||||
|
|
||||||
|
let component: ItemMyDSpaceResultListElementComponent;
|
||||||
|
let fixture: ComponentFixture<ItemMyDSpaceResultListElementComponent>;
|
||||||
|
|
||||||
|
const compIndex = 1;
|
||||||
|
|
||||||
|
const mockResultObject: ItemMyDSpaceResult = new ItemMyDSpaceResult();
|
||||||
|
mockResultObject.hitHighlights = {};
|
||||||
|
|
||||||
|
mockResultObject.dspaceObject = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('ItemMyDSpaceResultListElementComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [NoopAnimationsModule],
|
||||||
|
declarations: [ItemMyDSpaceResultListElementComponent],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
|
||||||
|
{ provide: 'indexElementProvider', useValue: (compIndex) }
|
||||||
|
],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(ItemMyDSpaceResultListElementComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(ItemMyDSpaceResultListElementComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.dso = mockResultObject.dspaceObject;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should have properly status', () => {
|
||||||
|
expect(component.status).toEqual(MyDspaceItemStatusType.ACCEPTED);
|
||||||
|
});
|
||||||
|
});
|
@@ -7,6 +7,9 @@ import { Item } from '../../../../core/shared/item.model';
|
|||||||
import { ItemMyDSpaceResult } from '../../../object-collection/shared/item-my-dspace-result.model';
|
import { ItemMyDSpaceResult } from '../../../object-collection/shared/item-my-dspace-result.model';
|
||||||
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component renders item object for the mydspace result in the list view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workspaceitem-my-dspace-result-list-element',
|
selector: 'ds-workspaceitem-my-dspace-result-list-element',
|
||||||
styleUrls: ['../my-dspace-result-list-element.component.scss', './item-my-dspace-result-list-element.component.scss'],
|
styleUrls: ['../my-dspace-result-list-element.component.scss', './item-my-dspace-result-list-element.component.scss'],
|
||||||
@@ -16,6 +19,9 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
|
|||||||
@renderElementsFor(ItemMyDSpaceResult, ViewMode.List)
|
@renderElementsFor(ItemMyDSpaceResult, ViewMode.List)
|
||||||
export class ItemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<ItemMyDSpaceResult, Item> {
|
export class ItemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<ItemMyDSpaceResult, Item> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
public status = MyDspaceItemStatusType.ACCEPTED;
|
public status = MyDspaceItemStatusType.ACCEPTED;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<ds-item-list-preview *ngIf="workFlow"
|
<ds-item-list-preview *ngIf="workflowitem"
|
||||||
[item]="(workFlow.item | async)?.payload"
|
[item]="(workflowitem.item | async)?.payload"
|
||||||
[object]="object"
|
[object]="object"
|
||||||
[showSubmitter]="true"
|
[showSubmitter]="showSubmitter"
|
||||||
[status]="status"></ds-item-list-preview>
|
[status]="status"></ds-item-list-preview>
|
||||||
|
|
||||||
<ds-pool-task-actions [object]="dso"></ds-pool-task-actions>
|
<ds-pool-task-actions [object]="dso"></ds-pool-task-actions>
|
||||||
|
@@ -0,0 +1,89 @@
|
|||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { PoolMyDSpaceResultListElementComponent } from './pool-my-dspace-result-list-element.component';
|
||||||
|
import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-task-my-dspace-result.model';
|
||||||
|
import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
|
||||||
|
import { RemoteData } from '../../../../core/data/remote-data';
|
||||||
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
import { Workflowitem } from '../../../../core/submission/models/workflowitem.model';
|
||||||
|
|
||||||
|
let component: PoolMyDSpaceResultListElementComponent;
|
||||||
|
let fixture: ComponentFixture<PoolMyDSpaceResultListElementComponent>;
|
||||||
|
|
||||||
|
const compIndex = 1;
|
||||||
|
|
||||||
|
const mockResultObject: PoolTaskMyDSpaceResult = new PoolTaskMyDSpaceResult();
|
||||||
|
mockResultObject.hitHighlights = {};
|
||||||
|
|
||||||
|
const item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const rdItem = new RemoteData(false, false, true, null, item);
|
||||||
|
const workflowitem = Object.assign(new Workflowitem(), { item: observableOf(rdItem) });
|
||||||
|
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem);
|
||||||
|
mockResultObject.dspaceObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
|
||||||
|
|
||||||
|
describe('PoolMyDSpaceResultListElementComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [NoopAnimationsModule],
|
||||||
|
declarations: [PoolMyDSpaceResultListElementComponent],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
|
||||||
|
{ provide: 'indexElementProvider', useValue: (compIndex) }
|
||||||
|
],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(PoolMyDSpaceResultListElementComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(PoolMyDSpaceResultListElementComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.dso = mockResultObject.dspaceObject;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init item properly', () => {
|
||||||
|
expect(component.workflowitem).toEqual(workflowitem);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should have properly status', () => {
|
||||||
|
expect(component.status).toEqual(MyDspaceItemStatusType.WAITING_CONTROLLER);
|
||||||
|
});
|
||||||
|
});
|
@@ -14,6 +14,9 @@ import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
|
|||||||
import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-task-my-dspace-result.model';
|
import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-task-my-dspace-result.model';
|
||||||
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component renders pool task object for the mydspace result in the list view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-pool-my-dspace-result-list-element',
|
selector: 'ds-pool-my-dspace-result-list-element',
|
||||||
styleUrls: ['../my-dspace-result-list-element.component.scss'],
|
styleUrls: ['../my-dspace-result-list-element.component.scss'],
|
||||||
@@ -23,23 +26,42 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
|
|||||||
@renderElementsFor(PoolTaskMyDSpaceResult, ViewMode.List)
|
@renderElementsFor(PoolTaskMyDSpaceResult, ViewMode.List)
|
||||||
@renderElementsFor(PoolTask, ViewMode.List)
|
@renderElementsFor(PoolTask, ViewMode.List)
|
||||||
export class PoolMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<PoolTaskMyDSpaceResult, PoolTask> implements OnInit {
|
export class PoolMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<PoolTaskMyDSpaceResult, PoolTask> implements OnInit {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A boolean representing if to show submitter information
|
||||||
|
*/
|
||||||
|
public showSubmitter = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
public status = MyDspaceItemStatusType.WAITING_CONTROLLER;
|
public status = MyDspaceItemStatusType.WAITING_CONTROLLER;
|
||||||
public workFlow: Workflowitem;
|
|
||||||
|
/**
|
||||||
|
* The workflowitem object that belonging to the result object
|
||||||
|
*/
|
||||||
|
public workflowitem: Workflowitem;
|
||||||
|
|
||||||
constructor(@Inject('objectElementProvider') public listable: ListableObject,
|
constructor(@Inject('objectElementProvider') public listable: ListableObject,
|
||||||
@Inject('indexElementProvider') public index: number) {
|
@Inject('indexElementProvider') public index: number) {
|
||||||
super(listable, index);
|
super(listable, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize all instance variables
|
||||||
|
*/
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<Workflowitem>>);
|
this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<Workflowitem>>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve workflowitem from result object
|
||||||
|
*/
|
||||||
initWorkflowItem(wfi$: Observable<RemoteData<Workflowitem>>) {
|
initWorkflowItem(wfi$: Observable<RemoteData<Workflowitem>>) {
|
||||||
wfi$.pipe(
|
wfi$.pipe(
|
||||||
find((rd: RemoteData<Workflowitem>) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
|
find((rd: RemoteData<Workflowitem>) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
|
||||||
).subscribe((rd: RemoteData<Workflowitem>) => {
|
).subscribe((rd: RemoteData<Workflowitem>) => {
|
||||||
this.workFlow = rd.payload;
|
this.workflowitem = rd.payload;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,86 @@
|
|||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { WorkflowitemMyDSpaceResultListElementComponent } from './workflowitem-my-dspace-result-list-element.component';
|
||||||
|
import { WorkflowitemMyDSpaceResult } from '../../../object-collection/shared/workflowitem-my-dspace-result.model';
|
||||||
|
import { Workflowitem } from '../../../../core/submission/models/workflowitem.model';
|
||||||
|
import { RemoteData } from '../../../../core/data/remote-data';
|
||||||
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
let component: WorkflowitemMyDSpaceResultListElementComponent;
|
||||||
|
let fixture: ComponentFixture<WorkflowitemMyDSpaceResultListElementComponent>;
|
||||||
|
|
||||||
|
const compIndex = 1;
|
||||||
|
|
||||||
|
const mockResultObject: WorkflowitemMyDSpaceResult = new WorkflowitemMyDSpaceResult();
|
||||||
|
mockResultObject.hitHighlights = {};
|
||||||
|
|
||||||
|
const item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const rd = new RemoteData(false, false, true, null, item);
|
||||||
|
mockResultObject.dspaceObject = Object.assign(new Workflowitem(), { item: observableOf(rd) });
|
||||||
|
|
||||||
|
describe('WorkflowitemMyDSpaceResultListElementComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [NoopAnimationsModule],
|
||||||
|
declarations: [WorkflowitemMyDSpaceResultListElementComponent],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
|
||||||
|
{ provide: 'indexElementProvider', useValue: (compIndex) }
|
||||||
|
],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(WorkflowitemMyDSpaceResultListElementComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(WorkflowitemMyDSpaceResultListElementComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.dso = mockResultObject.dspaceObject;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init item properly', () => {
|
||||||
|
expect(component.item).toEqual(item);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should have properly status', () => {
|
||||||
|
expect(component.status).toEqual(MyDspaceItemStatusType.WORKFLOW);
|
||||||
|
});
|
||||||
|
});
|
@@ -13,6 +13,9 @@ import { Workflowitem } from '../../../../core/submission/models/workflowitem.mo
|
|||||||
import { Item } from '../../../../core/shared/item.model';
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component renders workflowitem object for the mydspace result in the list view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workflowitem-my-dspace-result-list-element',
|
selector: 'ds-workflowitem-my-dspace-result-list-element',
|
||||||
styleUrls: ['../my-dspace-result-list-element.component.scss'],
|
styleUrls: ['../my-dspace-result-list-element.component.scss'],
|
||||||
@@ -22,13 +25,27 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
|
|||||||
@renderElementsFor(WorkflowitemMyDSpaceResult, ViewMode.List)
|
@renderElementsFor(WorkflowitemMyDSpaceResult, ViewMode.List)
|
||||||
@renderElementsFor(Workflowitem, ViewMode.List)
|
@renderElementsFor(Workflowitem, ViewMode.List)
|
||||||
export class WorkflowitemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<WorkflowitemMyDSpaceResult, Workflowitem> {
|
export class WorkflowitemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<WorkflowitemMyDSpaceResult, Workflowitem> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The item object that belonging to the result object
|
||||||
|
*/
|
||||||
public item: Item;
|
public item: Item;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
public status = MyDspaceItemStatusType.WORKFLOW;
|
public status = MyDspaceItemStatusType.WORKFLOW;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize all instance variables
|
||||||
|
*/
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.initItem(this.dso.item as Observable<RemoteData<Item>>);
|
this.initItem(this.dso.item as Observable<RemoteData<Item>>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve item from result object
|
||||||
|
*/
|
||||||
initItem(item$: Observable<RemoteData<Item>>) {
|
initItem(item$: Observable<RemoteData<Item>>) {
|
||||||
item$.pipe(
|
item$.pipe(
|
||||||
find((rd: RemoteData<Item>) => rd.hasSucceeded && isNotUndefined(rd.payload))
|
find((rd: RemoteData<Item>) => rd.hasSucceeded && isNotUndefined(rd.payload))
|
||||||
|
@@ -0,0 +1,86 @@
|
|||||||
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
import { WorkspaceitemMyDSpaceResultListElementComponent } from './workspaceitem-my-dspace-result-list-element.component';
|
||||||
|
import { WorkspaceitemMyDSpaceResult } from '../../../object-collection/shared/workspaceitem-my-dspace-result.model';
|
||||||
|
import { Workspaceitem } from '../../../../core/submission/models/workspaceitem.model';
|
||||||
|
import { RemoteData } from '../../../../core/data/remote-data';
|
||||||
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
let component: WorkspaceitemMyDSpaceResultListElementComponent;
|
||||||
|
let fixture: ComponentFixture<WorkspaceitemMyDSpaceResultListElementComponent>;
|
||||||
|
|
||||||
|
const compIndex = 1;
|
||||||
|
|
||||||
|
const mockResultObject: WorkspaceitemMyDSpaceResult = new WorkspaceitemMyDSpaceResult();
|
||||||
|
mockResultObject.hitHighlights = {};
|
||||||
|
|
||||||
|
const item = Object.assign(new Item(), {
|
||||||
|
bitstreams: observableOf({}),
|
||||||
|
metadata: {
|
||||||
|
'dc.title': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'This is just another title'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.type': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: 'Article'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.contributor.author': [
|
||||||
|
{
|
||||||
|
language: 'en_US',
|
||||||
|
value: 'Smith, Donald'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'dc.date.issued': [
|
||||||
|
{
|
||||||
|
language: null,
|
||||||
|
value: '2015-06-26'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const rd = new RemoteData(false, false, true, null, item);
|
||||||
|
mockResultObject.dspaceObject = Object.assign(new Workspaceitem(), { item: observableOf(rd) });
|
||||||
|
|
||||||
|
describe('WorkspaceitemMyDSpaceResultListElementComponent', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [NoopAnimationsModule],
|
||||||
|
declarations: [WorkspaceitemMyDSpaceResultListElementComponent],
|
||||||
|
providers: [
|
||||||
|
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
|
||||||
|
{ provide: 'indexElementProvider', useValue: (compIndex) }
|
||||||
|
],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(WorkspaceitemMyDSpaceResultListElementComponent, {
|
||||||
|
set: { changeDetection: ChangeDetectionStrategy.Default }
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
fixture = TestBed.createComponent(WorkspaceitemMyDSpaceResultListElementComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
component.dso = mockResultObject.dspaceObject;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init item properly', () => {
|
||||||
|
expect(component.item).toEqual(item);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should have properly status', () => {
|
||||||
|
expect(component.status).toEqual(MyDspaceItemStatusType.IN_PROGRESS);
|
||||||
|
});
|
||||||
|
});
|
@@ -13,6 +13,9 @@ import { isNotUndefined } from '../../../empty.util';
|
|||||||
import { Item } from '../../../../core/shared/item.model';
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component renders workspaceitem object for the mydspace result in the list view.
|
||||||
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-workspaceitem-my-dspace-result-list-element',
|
selector: 'ds-workspaceitem-my-dspace-result-list-element',
|
||||||
styleUrls: ['../my-dspace-result-list-element.component.scss', './workspaceitem-my-dspace-result-list-element.component.scss'],
|
styleUrls: ['../my-dspace-result-list-element.component.scss', './workspaceitem-my-dspace-result-list-element.component.scss'],
|
||||||
@@ -22,13 +25,26 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
|
|||||||
@renderElementsFor(WorkspaceitemMyDSpaceResult, ViewMode.List)
|
@renderElementsFor(WorkspaceitemMyDSpaceResult, ViewMode.List)
|
||||||
export class WorkspaceitemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<WorkspaceitemMyDSpaceResult, Workspaceitem> {
|
export class WorkspaceitemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<WorkspaceitemMyDSpaceResult, Workspaceitem> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The item object that belonging to the result object
|
||||||
|
*/
|
||||||
item: Item;
|
item: Item;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent item's status
|
||||||
|
*/
|
||||||
status = MyDspaceItemStatusType.IN_PROGRESS;
|
status = MyDspaceItemStatusType.IN_PROGRESS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize all instance variables
|
||||||
|
*/
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.initItem(this.dso.item as Observable<RemoteData<Item>>);
|
this.initItem(this.dso.item as Observable<RemoteData<Item>>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve item from result object
|
||||||
|
*/
|
||||||
initItem(item$: Observable<RemoteData<Item>>) {
|
initItem(item$: Observable<RemoteData<Item>>) {
|
||||||
item$.pipe(
|
item$.pipe(
|
||||||
find((rd: RemoteData<Item>) => rd.hasSucceeded && isNotUndefined(rd.payload))
|
find((rd: RemoteData<Item>) => rd.hasSucceeded && isNotUndefined(rd.payload))
|
||||||
|
@@ -126,7 +126,7 @@ import { ItemSearchResultListElementComponent } from './object-list/search-resul
|
|||||||
import { EditItemSelectorComponent } from './dso-selector/modal-wrappers/edit-item-selector/edit-item-selector.component';
|
import { EditItemSelectorComponent } from './dso-selector/modal-wrappers/edit-item-selector/edit-item-selector.component';
|
||||||
import { EditCommunitySelectorComponent } from './dso-selector/modal-wrappers/edit-community-selector/edit-community-selector.component';
|
import { EditCommunitySelectorComponent } from './dso-selector/modal-wrappers/edit-community-selector/edit-community-selector.component';
|
||||||
import { EditCollectionSelectorComponent } from './dso-selector/modal-wrappers/edit-collection-selector/edit-collection-selector.component';
|
import { EditCollectionSelectorComponent } from './dso-selector/modal-wrappers/edit-collection-selector/edit-collection-selector.component';
|
||||||
import { ItemListPreviewComponent } from './object-list/item-list-preview/item-list-preview.component';
|
import { ItemListPreviewComponent } from './object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component';
|
||||||
import { ItemPageAuthorFieldComponent } from '../+item-page/simple/field-components/specific-field/author/item-page-author-field.component';
|
import { ItemPageAuthorFieldComponent } from '../+item-page/simple/field-components/specific-field/author/item-page-author-field.component';
|
||||||
import { ItemPageDateFieldComponent } from '../+item-page/simple/field-components/specific-field/date/item-page-date-field.component';
|
import { ItemPageDateFieldComponent } from '../+item-page/simple/field-components/specific-field/date/item-page-date-field.component';
|
||||||
import { ItemPageAbstractFieldComponent } from '../+item-page/simple/field-components/specific-field/abstract/item-page-abstract-field.component';
|
import { ItemPageAbstractFieldComponent } from '../+item-page/simple/field-components/specific-field/abstract/item-page-abstract-field.component';
|
||||||
|
Reference in New Issue
Block a user