Skip to content
Snippets Groups Projects
Commit f0a6d7ac authored by Giuseppe Digilio's avatar Giuseppe Digilio
Browse files

Added mydspace results components

parent d7ba427f
No related branches found
No related tags found
No related merge requests found
Showing
with 312 additions and 9 deletions
<ds-object-list [config]="config"
[sortConfig]="sortConfig"
[objects]="objects"
[hasBorder]="hasBorder"
[hideGear]="hideGear"
*ngIf="getViewMode()===viewModeEnum.List">
</ds-object-list>
......@@ -12,4 +13,11 @@
*ngIf="getViewMode()===viewModeEnum.Grid">
</ds-object-grid>
<ds-object-detail [config]="config"
[sortConfig]="sortConfig"
[objects]="objects"
[hideGear]="hideGear"
*ngIf="getViewMode()===viewModeEnum.Detail">
</ds-object-detail>
import {map} from 'rxjs/operators';
import { Component, EventEmitter,
import {
ChangeDetectorRef,
Component,
EventEmitter,
Input,
OnChanges,
OnInit,
Output, SimpleChanges, OnChanges, ChangeDetectorRef } from '@angular/core';
Output,
SimpleChanges
} from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { RemoteData } from '../../core/data/remote-data';
import { PageInfo } from '../../core/shared/page-info.model';
import { PaginationComponentOptions } from '../pagination/pagination-component-options.model';
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
import { ListableObject } from './shared/listable-object.model';
import { hasValue, isNotEmpty } from '../empty.util';
import { ViewMode } from '../../core/shared/view-mode.model';
......@@ -29,6 +31,7 @@ export class ObjectCollectionComponent implements OnChanges, OnInit {
@Input() objects: RemoteData<ListableObject[]>;
@Input() config?: PaginationComponentOptions;
@Input() sortConfig: SortOptions;
@Input() hasBorder = false;
@Input() hideGear = false;
pageInfo: Observable<PageInfo>;
private sub;
......@@ -80,13 +83,17 @@ export class ObjectCollectionComponent implements OnChanges, OnInit {
}
/**
* @param cdRef
* ChangeDetectorRef service provided by Angular.
* @param route
* Route is a singleton service provided by Angular.
* @param router
* Router is a singleton service provided by Angular.
*/
constructor(private cdRef: ChangeDetectorRef, private route: ActivatedRoute,
private router: Router) {
constructor(
private cdRef: ChangeDetectorRef,
private route: ActivatedRoute,
private router: Router) {
}
getViewMode(): ViewMode {
......
import { ClaimedTask } from '../../../core/tasks/models/claimed-task-object.model';
import { SearchResult } from '../../../+search-page/search-result.model';
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
@searchResultFor(ClaimedTask, MyDSpaceConfigurationValueType.Workflow)
export class ClaimedTaskMyDSpaceResult extends SearchResult<ClaimedTask> {
}
import { Item } from '../../../core/shared/item.model';
import { SearchResult } from '../../../+search-page/search-result.model';
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
@searchResultFor(Item, MyDSpaceConfigurationValueType.Workspace)
export class ItemMyDSpaceResult extends SearchResult<Item> {
}
export enum MyDspaceItemStatusType {
WORKFLOW = 'mydspace.status.workflow',
REJECTED = 'mydspace.status.rejected',
VALIDATION = 'mydspace.status.validation',
WAITING_CONTROLLER = 'mydspace.status.waiting-for-controller',
IN_PROGRESS = 'mydspace.status.in-progress',
ACCEPTED = 'mydspace.status.accepted'
}
<div>
<span [className]="badgeClass">
{{badgeContent | translate}}
</span>
</div>
import { Component, Input, OnInit } from '@angular/core';
import { MyDspaceItemStatusType } from './my-dspace-item-status-type';
@Component({
selector: 'ds-mydspace-item-status',
styleUrls: ['./my-dspace-item-status.component.scss'],
templateUrl: './my-dspace-item-status.component.html'
})
export class MyDSpaceItemStatusComponent implements OnInit {
@Input() status: MyDspaceItemStatusType;
public badgeClass: string;
public badgeContent: string;
ngOnInit() {
this.badgeContent = this.status;
this.badgeClass = 'text-light badge ';
switch (this.status) {
case MyDspaceItemStatusType.REJECTED:
this.badgeClass += 'badge-danger';
break;
case MyDspaceItemStatusType.VALIDATION:
this.badgeClass += 'badge-warning';
break;
case MyDspaceItemStatusType.WAITING_CONTROLLER:
this.badgeClass += 'badge-info';
break;
case MyDspaceItemStatusType.IN_PROGRESS:
this.badgeClass += 'badge-primary';
break;
case MyDspaceItemStatusType.ACCEPTED:
this.badgeClass += 'badge-success';
break;
case MyDspaceItemStatusType.WORKFLOW:
this.badgeClass += 'badge-info';
break;
}
}
}
<div class="mt-2 mb-2">
<span class="text-muted">{{'submission.workflow.tasks.generic.submitter' | translate}} : <span class="badge badge-pill badge-light">{{(submitter | async)?.name}}</span></span>
</div>
import { Component, Input, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { filter, find, flatMap, map } from 'rxjs/operators';
import { EPerson } from '../../../../core/eperson/models/eperson.model';
import { RemoteData } from '../../../../core/data/remote-data';
import { isNotEmpty, isNotUndefined } from '../../../empty.util';
import { Workflowitem } from '../../../../core/submission/models/workflowitem.model';
@Component({
selector: 'ds-item-submitter',
styleUrls: ['./item-submitter.component.scss'],
templateUrl: './item-submitter.component.html'
})
export class ItemSubmitterComponent implements OnInit {
@Input() object: any;
submitter: Observable<EPerson>;
ngOnInit() {
this.submitter = (this.object.workflowitem as Observable<RemoteData<Workflowitem>>).pipe(
filter((rd: RemoteData<Workflowitem>) => (rd.hasSucceeded && isNotUndefined(rd.payload))),
flatMap((rd: RemoteData<Workflowitem>) => rd.payload.submitter as Observable<RemoteData<EPerson>>),
find((rd: RemoteData<EPerson>) => rd.hasSucceeded && isNotEmpty(rd.payload)),
map((rd: RemoteData<EPerson>) => rd.payload));
}
}
import { PoolTask } from '../../../core/tasks/models/pool-task-object.model';
import { SearchResult } from '../../../+search-page/search-result.model';
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
@searchResultFor(PoolTask, MyDSpaceConfigurationValueType.Workflow)
export class PoolTaskMyDSpaceResult extends SearchResult<PoolTask> {
}
import { Workflowitem } from '../../../core/submission/models/workflowitem.model';
import { SearchResult } from '../../../+search-page/search-result.model';
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
@searchResultFor(Workflowitem, MyDSpaceConfigurationValueType.Workspace)
export class WorkflowitemMyDSpaceResult extends SearchResult<Workflowitem> {
}
import { Workspaceitem } from '../../../core/submission/models/workspaceitem.model';
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
import { SearchResult } from '../../../+search-page/search-result.model';
@searchResultFor(Workspaceitem, MyDSpaceConfigurationValueType.Workspace)
export class WorkspaceitemMyDSpaceResult extends SearchResult<Workspaceitem> {
}
<ds-item-detail-preview *ngIf="workFlow"
[item]="(workFlow.item | async)?.payload"
[object]="object"
[status]="status"></ds-item-detail-preview>
<ds-claimed-task-actions *ngIf="workFlow" [object]="dso"></ds-claimed-task-actions>
import { Component, Inject } from '@angular/core';
import { Observable } from 'rxjs';
import { find } from 'rxjs/operators';
import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator';
import { RemoteData } from '../../../../core/data/remote-data';
import { ViewMode } from '../../../../core/shared/view-mode.model';
import { isNotUndefined } from '../../../empty.util';
import { ListableObject } from '../../../object-collection/shared/listable-object.model';
import { Workflowitem } from '../../../../core/submission/models/workflowitem.model';
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.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 { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
@Component({
selector: 'ds-claimtask-my-dspace-result-detail-element',
styleUrls: ['../my-dspace-result-detail-element.component.scss'],
templateUrl: './ct-my-dspace-result-detail-element.component.html',
providers: [Location, {provide: LocationStrategy, useClass: PathLocationStrategy}]
})
@renderElementsFor(ClaimedTaskMyDSpaceResult, ViewMode.Detail)
@renderElementsFor(ClaimedTask, ViewMode.Detail)
export class ClaimedTaskMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<ClaimedTaskMyDSpaceResult, ClaimedTask> {
public status = MyDspaceItemStatusType.VALIDATION;
public workFlow: Workflowitem;
public rejectForm: FormGroup;
constructor(private ctDataService: ClaimedTaskDataService,
private modalService: NgbModal,
private formBuilder: FormBuilder,
@Inject('objectElementProvider') public listable: ListableObject) {
super(listable);
this.rejectForm = this.formBuilder.group({
reason: ['', Validators.required]
});
}
ngOnInit() {
this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<Workflowitem>>);
}
initWorkflowItem(wfi$: Observable<RemoteData<Workflowitem>>) {
wfi$.pipe(
find((rd: RemoteData<Workflowitem>) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
).subscribe((rd: RemoteData<Workflowitem>) => {
this.workFlow = rd.payload;
});
}
}
<div class="item-page" @fadeInOut>
<ng-container *ngIf="status">
<ds-mydspace-item-status [status]="status"></ds-mydspace-item-status>
</ng-container>
<div *ngIf="item">
<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]="thumbnail$ | async"></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"></ds-item-page-collections>
<div>
<ng-content></ng-content>
</div>
</div>
</div>
</div>
</div>
<!--<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>-->
import { Component, Input } from '@angular/core';
import { Observable } from 'rxjs';
import { Item } from '../../../../core/shared/item.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { fadeInOut } from '../../../animations/fade';
import { Bitstream } from '../../../../core/shared/bitstream.model';
@Component({
selector: 'ds-item-detail-preview',
styleUrls: ['./item-detail-preview.component.scss'],
templateUrl: './item-detail-preview.component.html',
animations: [fadeInOut]
})
export class ItemDetailPreviewComponent<T> {
@Input() item: Item;
@Input() object: any;
@Input() status: MyDspaceItemStatusType;
public ALL_STATUS = [];
public thumbnail$: Observable<Bitstream>;
ngOnInit() {
Object.keys(MyDspaceItemStatusType).forEach((s) => {
this.ALL_STATUS.push(MyDspaceItemStatusType[s]);
});
this.thumbnail$ = this.item.getThumbnail();
}
}
<ds-item-detail-preview [item]="dso"
[object]="object"
[status]="status">
</ds-item-detail-preview>
<ds-item-actions [object]="dso"></ds-item-actions>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment