1
0

Merge branch 'w2p-97184_theme-feedback_contribute-7.2' into w2p-97184_theme-feedback_contribute-7.4

This commit is contained in:
lotte
2023-01-24 13:47:35 +01:00
95 changed files with 283 additions and 409 deletions

View File

@@ -1,7 +1,6 @@
<ds-themed-listable-object-component-loader [object]="object" <ds-listable-object-component-loader [object]="object"
[viewMode]="viewModes.ListElement" [viewMode]="viewModes.ListElement"
[index]="index" [index]="index"
[linkType]="linkType" [linkType]="linkType"
[listID]="listID" [listID]="listID"></ds-listable-object-component-loader>
[hideBadges]="true"></ds-themed-listable-object-component-loader>
<ds-item-admin-search-result-actions-element [item]="dso" [small]="false"></ds-item-admin-search-result-actions-element> <ds-item-admin-search-result-actions-element [item]="dso" [small]="false"></ds-item-admin-search-result-actions-element>

View File

@@ -1,10 +1,10 @@
<div class="workflow-badge"> <div class="workflow-badge">
<span class="badge badge-info">{{ "admin.workflow.item.workflow" | translate }}</span> <span class="badge badge-info">{{ "admin.workflow.item.workflow" | translate }}</span>
</div> </div>
<ds-themed-listable-object-component-loader *ngIf="item$ | async" <ds-listable-object-component-loader *ngIf="item$ | async"
[object]="item$ | async" [object]="item$ | async"
[viewMode]="viewModes.ListElement" [viewMode]="viewModes.ListElement"
[index]="index" [index]="index"
[linkType]="linkType" [linkType]="linkType"
[listID]="listID"></ds-themed-listable-object-component-loader> [listID]="listID"></ds-listable-object-component-loader>
<ds-workflow-item-admin-workflow-actions-element [wfi]="dso" [small]="false"></ds-workflow-item-admin-workflow-actions-element> <ds-workflow-item-admin-workflow-actions-element [wfi]="dso" [small]="false"></ds-workflow-item-admin-workflow-actions-element>

View File

@@ -17,9 +17,6 @@ import { HostWindowService } from '../../shared/host-window.service';
import { HostWindowServiceStub } from '../../shared/testing/host-window-service.stub'; import { HostWindowServiceStub } from '../../shared/testing/host-window-service.stub';
import { CommunityDataService } from '../../core/data/community-data.service'; import { CommunityDataService } from '../../core/data/community-data.service';
import { SelectableListService } from '../../shared/object-list/selectable-list/selectable-list.service'; import { SelectableListService } from '../../shared/object-list/selectable-list/selectable-list.service';
import { of as observableOf } from 'rxjs';
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { getMockThemeService } from '../../shared/mocks/theme-service.mock'; import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
import { ThemeService } from '../../shared/theme-support/theme.service'; import { ThemeService } from '../../shared/theme-support/theme.service';

View File

@@ -31,11 +31,11 @@
class="d-flex flex-row"> class="d-flex flex-row">
<ng-container *ngVar="(getRelatedItem(relationship) | async) as relatedItem"> <ng-container *ngVar="(getRelatedItem(relationship) | async) as relatedItem">
<ds-themed-listable-object-component-loader <ds-listable-object-component-loader
*ngIf="relatedItem" *ngIf="relatedItem"
[object]="relatedItem" [object]="relatedItem"
[viewMode]="viewMode"> [viewMode]="viewMode">
</ds-themed-listable-object-component-loader> </ds-listable-object-component-loader>
<div class="ml-auto"> <div class="ml-auto">
<div class="btn-group"> <div class="btn-group">
<button class="btn btn-outline-info btn-sm" <button class="btn btn-outline-info btn-sm"
@@ -55,11 +55,11 @@
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<ds-themed-listable-object-component-loader <ds-listable-object-component-loader
*ngIf="relatedItem" *ngIf="relatedItem"
[object]="relatedItem" [object]="relatedItem"
[viewMode]="viewMode"> [viewMode]="viewMode">
</ds-themed-listable-object-component-loader> </ds-listable-object-component-loader>
<div *ngFor="let metadata of (getVirtualMetadata(relationship) | async)"> <div *ngFor="let metadata of (getVirtualMetadata(relationship) | async)">
<div> <div>
<div class="font-weight-bold"> <div class="font-weight-bold">

View File

@@ -1,11 +1,11 @@
<div class="row" *ngIf="relatedItem$ | async"> <div class="row" *ngIf="relatedItem$ | async">
<div class="col-10 relationship"> <div class="col-10 relationship">
<ds-themed-listable-object-component-loader <ds-listable-object-component-loader
[object]="relatedItem$ | async" [object]="relatedItem$ | async"
[viewMode]="viewMode" [viewMode]="viewMode"
[value]="nameVariant" [value]="nameVariant"
> >
</ds-themed-listable-object-component-loader> </ds-listable-object-component-loader>
</div> </div>
<div class="col-2"> <div class="col-2">
<div class="btn-group relationship-action-buttons"> <div class="btn-group relationship-action-buttons">

View File

@@ -15,8 +15,8 @@
</label> </label>
</div> </div>
<div class="flex-column"> <div class="flex-column">
<ds-themed-listable-object-component-loader [object]="item"> <ds-listable-object-component-loader [object]="item">
</ds-themed-listable-object-component-loader> </ds-listable-object-component-loader>
<div *ngFor="let metadata of virtualMetadata.get(item.uuid)"> <div *ngFor="let metadata of virtualMetadata.get(item.uuid)">
<div class="font-weight-bold"> <div class="font-weight-bold">
{{metadata.metadataField}} {{metadata.metadataField}}

View File

@@ -4,7 +4,7 @@
<ds-item-alerts [item]="item"></ds-item-alerts> <ds-item-alerts [item]="item"></ds-item-alerts>
<ds-item-versions-notice [item]="item"></ds-item-versions-notice> <ds-item-versions-notice [item]="item"></ds-item-versions-notice>
<ds-view-tracker [object]="item"></ds-view-tracker> <ds-view-tracker [object]="item"></ds-view-tracker>
<ds-themed-listable-object-component-loader *ngIf="!item.isWithdrawn || (isAdmin$|async)" [object]="item" [viewMode]="viewMode"></ds-themed-listable-object-component-loader> <ds-listable-object-component-loader *ngIf="!item.isWithdrawn || (isAdmin$|async)" [object]="item" [viewMode]="viewMode"></ds-listable-object-component-loader>
<ds-item-versions class="mt-2" [item]="item" [displayActions]="false"></ds-item-versions> <ds-item-versions class="mt-2" [item]="item" [displayActions]="false"></ds-item-versions>
</div> </div>
</div> </div>

View File

@@ -1,9 +1,9 @@
<ds-metadata-field-wrapper [label]="label" [ngClass]="placeholderFontClass"> <ds-metadata-field-wrapper [label]="label" [ngClass]="placeholderFontClass">
<ng-container *ngFor="let objectPage of objects; let i = index"> <ng-container *ngFor="let objectPage of objects; let i = index">
<ng-container *ngVar="(objectPage | async) as itemsRD"> <ng-container *ngVar="(objectPage | async) as itemsRD">
<ds-themed-listable-object-component-loader *ngFor="let item of itemsRD?.payload?.page" <ds-listable-object-component-loader *ngFor="let item of itemsRD?.payload?.page"
[object]="item" [viewMode]="viewMode"> [object]="item" [viewMode]="viewMode">
</ds-themed-listable-object-component-loader> </ds-listable-object-component-loader>
<ds-themed-loading *ngIf="(i + 1) === objects.length && (itemsRD || i > 0) && !(itemsRD?.hasSucceeded && itemsRD?.payload && itemsRD?.payload?.page?.length > 0)" message="{{'loading.default' | translate}}"></ds-themed-loading> <ds-themed-loading *ngIf="(i + 1) === objects.length && (itemsRD || i > 0) && !(itemsRD?.hasSucceeded && itemsRD?.payload && itemsRD?.payload?.page?.length > 0)" message="{{'loading.default' | translate}}"></ds-themed-loading>
<div class="d-inline-block w-100 mt-2" *ngIf="(i + 1) === objects.length && itemsRD?.payload?.page?.length > 0"> <div class="d-inline-block w-100 mt-2" *ngIf="(i + 1) === objects.length && itemsRD?.payload?.page?.length > 0">
<div *ngIf="itemsRD?.payload?.totalPages > objects.length" class="float-left" id="view-more"> <div *ngIf="itemsRD?.payload?.totalPages > objects.length" class="float-left" id="view-more">

View File

@@ -76,7 +76,7 @@ describe('RelatedItemsComponent', () => {
})); }));
it(`should load ${mockItems.length} item-type-switcher components`, () => { it(`should load ${mockItems.length} item-type-switcher components`, () => {
const fields = fixture.debugElement.queryAll(By.css('ds-themed-listable-object-component-loader')); const fields = fixture.debugElement.queryAll(By.css('ds-listable-object-component-loader'));
expect(fields.length).toBe(mockItems.length); expect(fields.length).toBe(mockItems.length);
}); });

View File

@@ -25,8 +25,8 @@
title="{{ getName(listEntry) }}" title="{{ getName(listEntry) }}"
dsHoverClass="ds-hover" dsHoverClass="ds-hover"
(click)="onSelect.emit(listEntry.indexableObject)" #listEntryElement> (click)="onSelect.emit(listEntry.indexableObject)" #listEntryElement>
<ds-themed-listable-object-component-loader [object]="listEntry" [viewMode]="viewMode" <ds-listable-object-component-loader [object]="listEntry" [viewMode]="viewMode"
[linkType]=linkTypes.None [context]="getContext(listEntry.indexableObject.id)"></ds-themed-listable-object-component-loader> [linkType]=linkTypes.None [context]="getContext(listEntry.indexableObject.id)"></ds-listable-object-component-loader>
</button> </button>
</ng-container> </ng-container>
<button *ngIf="loading" <button *ngIf="loading"

View File

@@ -4,7 +4,7 @@
<ds-themed-loading [showMessage]="false"></ds-themed-loading> <ds-themed-loading [showMessage]="false"></ds-themed-loading>
</ng-container> </ng-container>
<ng-container *ngIf="(relatedItem$ | async)"> <ng-container *ngIf="(relatedItem$ | async)">
<ds-themed-listable-object-component-loader [showLabel]="false" [viewMode]="viewType" [object]="(relatedItem$ | async)"></ds-themed-listable-object-component-loader> <ds-listable-object-component-loader [showLabel]="false" [viewMode]="viewType" [object]="(relatedItem$ | async)"></ds-listable-object-component-loader>
</ng-container> </ng-container>
</span> </span>
<button type="button" class="btn btn-secondary" <button type="button" class="btn btn-secondary"

View File

@@ -14,7 +14,7 @@
<div class="dropdown-list"> <div class="dropdown-list">
<div *ngFor="let suggestionOption of suggestions"> <div *ngFor="let suggestionOption of suggestions">
<button class="d-block dropdown-item" (click)="onClickSuggestion(suggestionOption)" #suggestion> <button class="d-block dropdown-item" (click)="onClickSuggestion(suggestionOption)" #suggestion>
<ds-themed-listable-object-component-loader [object]="suggestionOption" [viewMode]="viewMode" [linkType]="linkTypes.None"></ds-themed-listable-object-component-loader> <ds-listable-object-component-loader [object]="suggestionOption" [viewMode]="viewMode" [linkType]="linkTypes.None"></ds-listable-object-component-loader>
</button> </button>
</div> </div>
</div> </div>

View File

@@ -0,0 +1,5 @@
<ds-themed-status-badge [object]="object"></ds-themed-status-badge>
<ng-container *ngIf="myDSpaceStatus">
<ds-themed-my-dspace-status-badge [status]="myDSpaceStatus"></ds-themed-my-dspace-status-badge>
</ng-container>
<ds-themed-type-badge [object]="object"></ds-themed-type-badge>

View File

@@ -1,6 +1,9 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { BadgesComponent } from './badges.component'; import { BadgesComponent } from './badges.component';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { ThemeService } from '../../../theme-support/theme.service';
import { getMockThemeService } from '../../../mocks/theme-service.mock';
describe('BadgesComponent', () => { describe('BadgesComponent', () => {
let component: BadgesComponent; let component: BadgesComponent;
@@ -8,7 +11,9 @@ describe('BadgesComponent', () => {
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ BadgesComponent ] declarations: [ BadgesComponent ],
providers: [{provide: ThemeService, useValue: getMockThemeService()}],
schemas: [NO_ERRORS_SCHEMA]
}) })
.compileComponents(); .compileComponents();
}); });

View File

@@ -1,5 +1,6 @@
import { Component, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { DSpaceObject } from '../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../../core/shared/dspace-object.model';
import { MyDspaceItemStatusType } from './my-dspace-status-badge/my-dspace-item-status-type';
@Component({ @Component({
selector: 'ds-badges', selector: 'ds-badges',
@@ -8,4 +9,5 @@ import { DSpaceObject } from '../../../core/shared/dspace-object.model';
}) })
export class BadgesComponent { export class BadgesComponent {
@Input() object: DSpaceObject; @Input() object: DSpaceObject;
@Input() myDSpaceStatus?: MyDspaceItemStatusType;
} }

View File

@@ -4,17 +4,17 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';
import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model'; import { PoolTask } from '../../../../../core/tasks/models/pool-task-object.model';
import { EPersonMock } from '../../../testing/eperson.mock'; import { EPersonMock } from '../../../../testing/eperson.mock';
import { MyDSpaceItemStatusComponent } from './my-dspace-item-status.component'; import { MyDSpaceStatusBadgeComponent } from './my-dspace-status-badge.component';
import { MyDspaceItemStatusType } from './my-dspace-item-status-type'; import { MyDspaceItemStatusType } from './my-dspace-item-status-type';
import { TranslateLoaderMock } from '../../../mocks/translate-loader.mock'; import { TranslateLoaderMock } from '../../../../mocks/translate-loader.mock';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../../remote-data.utils';
let component: MyDSpaceItemStatusComponent; let component: MyDSpaceStatusBadgeComponent;
let fixture: ComponentFixture<MyDSpaceItemStatusComponent>; let fixture: ComponentFixture<MyDSpaceStatusBadgeComponent>;
let mockResultObject: PoolTask; let mockResultObject: PoolTask;
@@ -34,15 +34,15 @@ describe('MyDSpaceItemStatusComponent', () => {
} }
}) })
], ],
declarations: [MyDSpaceItemStatusComponent], declarations: [MyDSpaceStatusBadgeComponent],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(MyDSpaceItemStatusComponent, { }).overrideComponent(MyDSpaceStatusBadgeComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(MyDSpaceItemStatusComponent); fixture = TestBed.createComponent(MyDSpaceStatusBadgeComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
}); });

View File

@@ -5,11 +5,11 @@ import { MyDspaceItemStatusType } from './my-dspace-item-status-type';
* This component represents a badge with mydspace item status * This component represents a badge with mydspace item status
*/ */
@Component({ @Component({
selector: 'ds-mydspace-item-status', selector: 'ds-my-dspace-status-badge',
styleUrls: ['./my-dspace-item-status.component.scss'], styleUrls: ['./my-dspace-status-badge.component.scss'],
templateUrl: './my-dspace-item-status.component.html' templateUrl: './my-dspace-status-badge.component.html'
}) })
export class MyDSpaceItemStatusComponent implements OnInit { export class MyDSpaceStatusBadgeComponent implements OnInit {
/** /**
* This mydspace item status * This mydspace item status

View File

@@ -0,0 +1,30 @@
import { Component, Input } from '@angular/core';
import { ThemedComponent } from '../../../../theme-support/themed.component';
import { MyDspaceItemStatusType } from './my-dspace-item-status-type';
import { MyDSpaceStatusBadgeComponent } from './my-dspace-status-badge.component';
/**
* Themed wrapper for MyDSpaceStatusBadge
*/
@Component({
selector: 'ds-themed-my-dspace-status-badge',
styleUrls: [],
templateUrl: '../../../../theme-support/themed.component.html',
})
export class ThemedMyDSpaceStatusBadgeComponent extends ThemedComponent<MyDSpaceStatusBadgeComponent> {
@Input() status: MyDspaceItemStatusType;
protected inAndOutputNames: (keyof MyDSpaceStatusBadgeComponent & keyof this)[] = ['status'];
protected getComponentName(): string {
return 'MyDSpaceStatusBadgeComponent';
}
protected importThemedComponent(themeName: string): Promise<any> {
return import(`../../../../../../themes/${themeName}/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component`);
}
protected importUnthemedComponent(): Promise<any> {
return import(`./my-dspace-status-badge.component`);
}
}

View File

@@ -1,6 +1,6 @@
<span *ngIf="privateBadge" class="private-badge"> <div *ngIf="privateBadge" class="private-badge">
<span class="badge badge-danger">{{ "item.badge.private" | translate }}</span> <span class="badge badge-danger">{{ "item.badge.private" | translate }}</span>
</span> </div>
<span *ngIf="withdrawnBadge" class="withdrawn-badge"> <div *ngIf="withdrawnBadge" class="withdrawn-badge">
<span class="badge badge-warning">{{ "item.badge.withdrawn" | translate }}</span> <span class="badge badge-warning">{{ "item.badge.withdrawn" | translate }}</span>
</span> </div>

View File

@@ -0,0 +1,91 @@
import { Item } from '../../../../../core/shared/item.model';
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { TranslateModule } from '@ngx-translate/core';
import { TruncatePipe } from '../../../../utils/truncate.pipe';
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { By } from '@angular/platform-browser';
import { StatusBadgeComponent } from './status-badge.component';
let comp: StatusBadgeComponent;
let fixture: ComponentFixture<StatusBadgeComponent>;
let withdrawnItem = Object.assign(new Item(), { isWithdrawn: true });
let notWithdrawnItem = Object.assign(new Item(), { isWithdrawn: false });
let privateItem = Object.assign(new Item(), { isDiscoverable: false });
let notPrivateItem = Object.assign(new Item(), { isDiscoverable: true });
describe('ItemStatusBadgeComponent', () => {
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
imports: [TranslateModule.forRoot()],
declarations: [StatusBadgeComponent, TruncatePipe],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(StatusBadgeComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents();
init();
}));
function init() {
withdrawnItem = Object.assign(new Item(), { isWithdrawn: true });
notWithdrawnItem = Object.assign(new Item(), { isWithdrawn: false });
privateItem = Object.assign(new Item(), { isDiscoverable: false });
notPrivateItem = Object.assign(new Item(), { isDiscoverable: true });
}
beforeEach(waitForAsync(() => {
fixture = TestBed.createComponent(StatusBadgeComponent);
comp = fixture.componentInstance;
}));
describe('when the item is not withdrawn', () => {
beforeEach(() => {
comp.object = notWithdrawnItem;
comp.ngOnInit();
fixture.detectChanges();
});
it('should not show the withdrawn badge', () => {
const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
expect(badge).toBeNull();
});
});
describe('when the item is withdrawn', () => {
beforeEach(() => {
comp.object = withdrawnItem;
comp.ngOnInit();
fixture.detectChanges();
});
it('should show the withdrawn badge', () => {
const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
expect(badge).not.toBeNull();
});
});
describe('when the item is not private', () => {
beforeEach(() => {
comp.object = notPrivateItem;
comp.ngOnInit();
fixture.detectChanges();
});
it('should not show the private badge', () => {
const badge = fixture.debugElement.query(By.css('div.private-badge'));
expect(badge).toBeNull();
});
});
describe('when the item is private', () => {
beforeEach(() => {
comp.object = privateItem;
comp.ngOnInit();
fixture.detectChanges();
});
it('should show the private badge', () => {
const badge = fixture.debugElement.query(By.css('div.private-badge'));
expect(badge).not.toBeNull();
});
});
});

View File

@@ -1,6 +1,6 @@
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
import { hasValue } from '../../../empty.util'; import { hasValue } from '../../../../empty.util';
@Component({ @Component({
selector: 'ds-status-badge', selector: 'ds-status-badge',

View File

@@ -1,8 +1,7 @@
import { Component, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { ThemedComponent } from '../../../theme-support/themed.component'; import { ThemedComponent } from '../../../../theme-support/themed.component';
import { StatusBadgeComponent } from './status-badge.component'; import { StatusBadgeComponent } from './status-badge.component';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
import { TypeBadgeComponent } from '../type-badge/type-badge.component';
/** /**
* Themed wrapper for StatusBadgeComponent * Themed wrapper for StatusBadgeComponent
@@ -10,7 +9,7 @@ import { TypeBadgeComponent } from '../type-badge/type-badge.component';
@Component({ @Component({
selector: 'ds-themed-status-badge', selector: 'ds-themed-status-badge',
styleUrls: [], styleUrls: [],
templateUrl: '../../../../shared/theme-support/themed.component.html', templateUrl: '../../../../theme-support/themed.component.html',
}) })
export class ThemedStatusBadgeComponent extends ThemedComponent<StatusBadgeComponent> { export class ThemedStatusBadgeComponent extends ThemedComponent<StatusBadgeComponent> {
@Input() object: DSpaceObject; @Input() object: DSpaceObject;
@@ -22,7 +21,7 @@ export class ThemedStatusBadgeComponent extends ThemedComponent<StatusBadgeCompo
} }
protected importThemedComponent(themeName: string): Promise<any> { protected importThemedComponent(themeName: string): Promise<any> {
return import(`../../../../../themes/${themeName}/app/shared/object-list/badges/status-badge/status-badge.component`); return import(`../../../../../../themes/${themeName}/app/shared/object-collection/shared/badges/status-badge/status-badge.component`);
} }
protected importUnthemedComponent(): Promise<any> { protected importUnthemedComponent(): Promise<any> {

View File

@@ -1,9 +1,8 @@
import { Component, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { BadgesComponent } from './badges.component'; import { BadgesComponent } from './badges.component';
import { ThemedComponent } from '../../theme-support/themed.component'; import { ThemedComponent } from '../../../theme-support/themed.component';
import { Observable } from 'rxjs/internal/Observable'; import { DSpaceObject } from '../../../../core/shared/dspace-object.model';
import { SearchFiltersComponent } from '../../search/search-filters/search-filters.component'; import { MyDspaceItemStatusType } from './my-dspace-status-badge/my-dspace-item-status-type';
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
/** /**
* Themed wrapper for BadgesComponent * Themed wrapper for BadgesComponent
@@ -11,19 +10,20 @@ import { DSpaceObject } from '../../../core/shared/dspace-object.model';
@Component({ @Component({
selector: 'ds-themed-badges', selector: 'ds-themed-badges',
styleUrls: [], styleUrls: [],
templateUrl: '../../../shared/theme-support/themed.component.html', templateUrl: '../../../theme-support/themed.component.html',
}) })
export class ThemedBadgesComponent extends ThemedComponent<BadgesComponent> { export class ThemedBadgesComponent extends ThemedComponent<BadgesComponent> {
@Input() object: DSpaceObject; @Input() object: DSpaceObject;
@Input() myDSpaceStatus: MyDspaceItemStatusType;
protected inAndOutputNames: (keyof BadgesComponent & keyof this)[] = ['object']; protected inAndOutputNames: (keyof BadgesComponent & keyof this)[] = ['object', 'myDSpaceStatus'];
protected getComponentName(): string { protected getComponentName(): string {
return 'BadgesComponent'; return 'BadgesComponent';
} }
protected importThemedComponent(themeName: string): Promise<any> { protected importThemedComponent(themeName: string): Promise<any> {
return import(`../../../../themes/${themeName}/app/shared/object-list/badges/badges.component`); return import(`../../../../../themes/${themeName}/app/shared/object-collection/shared/badges/badges.component`);
} }
protected importUnthemedComponent(): Promise<any> { protected importUnthemedComponent(): Promise<any> {

View File

@@ -1,8 +1,7 @@
import { Component, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { ThemedComponent } from '../../../theme-support/themed.component'; import { ThemedComponent } from '../../../../theme-support/themed.component';
import { TypeBadgeComponent } from './type-badge.component'; import { TypeBadgeComponent } from './type-badge.component';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
import { BadgesComponent } from '../badges.component';
/** /**
* Themed wrapper for TypeBadgeComponent * Themed wrapper for TypeBadgeComponent
@@ -10,7 +9,7 @@ import { BadgesComponent } from '../badges.component';
@Component({ @Component({
selector: 'ds-themed-type-badge', selector: 'ds-themed-type-badge',
styleUrls: [], styleUrls: [],
templateUrl: '../../../../shared/theme-support/themed.component.html', templateUrl: '../../../../theme-support/themed.component.html',
}) })
export class ThemedTypeBadgeComponent extends ThemedComponent<TypeBadgeComponent> { export class ThemedTypeBadgeComponent extends ThemedComponent<TypeBadgeComponent> {
@Input() object: DSpaceObject; @Input() object: DSpaceObject;
@@ -22,7 +21,7 @@ export class ThemedTypeBadgeComponent extends ThemedComponent<TypeBadgeComponent
} }
protected importThemedComponent(themeName: string): Promise<any> { protected importThemedComponent(themeName: string): Promise<any> {
return import(`../../../../../themes/${themeName}/app/shared/object-list/badges/type-badge/type-badge.component`); return import(`../../../../../../themes/${themeName}/app/shared/object-collection/shared/badges/type-badge/type-badge.component`);
} }
protected importUnthemedComponent(): Promise<any> { protected importUnthemedComponent(): Promise<any> {

View File

@@ -1,3 +1,3 @@
<span *ngIf="typeMessage"> <div *ngIf="typeMessage">
<span class="badge badge-info">{{ typeMessage | translate }}</span> <span class="badge badge-info">{{ typeMessage | translate }}</span>
</span> </div>

View File

@@ -1,8 +1,8 @@
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../../core/shared/item.model';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { TruncatePipe } from '../../../utils/truncate.pipe'; import { TruncatePipe } from '../../../../utils/truncate.pipe';
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { TypeBadgeComponent } from './type-badge.component'; import { TypeBadgeComponent } from './type-badge.component';

View File

@@ -1,7 +1,7 @@
import { Component, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
import { hasValue, isEmpty } from '../../../empty.util'; import { hasValue, isEmpty } from '../../../../empty.util';
import { getResourceTypeValueFor } from '../../../../core/cache/object-cache.reducer'; import { getResourceTypeValueFor } from '../../../../../core/cache/object-cache.reducer';
@Component({ @Component({
selector: 'ds-type-badge', selector: 'ds-type-badge',

View File

@@ -1,9 +1 @@
<div [ngClass]="{'d-none' : hideBadges}" #badges>
<div *ngIf="privateBadge" class="private-badge">
<span class="badge badge-danger">{{ "item.badge.private" | translate }}</span>
</div>
<div *ngIf="withdrawnBadge" class="withdrawn-badge">
<span class="badge badge-warning">{{ "item.badge.withdrawn" | translate }}</span>
</div>
</div>
<ng-template dsListableObject></ng-template> <ng-template dsListableObject></ng-template>

View File

@@ -74,64 +74,6 @@ describe('ListableObjectComponentLoaderComponent', () => {
}); });
}); });
describe('when the object is an item and viewMode is a list', () => {
beforeEach(() => {
comp.object = Object.assign(new Item());
comp.viewMode = ViewMode.ListElement;
});
describe('when the item is not withdrawn', () => {
beforeEach(() => {
(comp.object as any).isWithdrawn = false;
comp.initBadges();
fixture.detectChanges();
});
it('should not show the withdrawn badge', () => {
const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
expect(badge).toBeNull();
});
});
describe('when the item is withdrawn', () => {
beforeEach(() => {
(comp.object as any).isWithdrawn = true;
comp.initBadges();
fixture.detectChanges();
});
it('should show the withdrawn badge', () => {
const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
expect(badge).not.toBeNull();
});
});
describe('when the item is not private', () => {
beforeEach(() => {
(comp.object as any).isDiscoverable = true;
comp.initBadges();
fixture.detectChanges();
});
it('should not show the private badge', () => {
const badge = fixture.debugElement.query(By.css('div.private-badge'));
expect(badge).toBeNull();
});
});
describe('when the item is private', () => {
beforeEach(() => {
(comp.object as any).isDiscoverable = false;
comp.initBadges();
fixture.detectChanges();
});
it('should show the private badge', () => {
const badge = fixture.debugElement.query(By.css('div.private-badge'));
expect(badge).not.toBeNull();
});
});
});
describe('When a reloadedObject is emitted', () => { describe('When a reloadedObject is emitted', () => {
let listableComponent; let listableComponent;
let reloadedObject: any; let reloadedObject: any;

View File

@@ -76,22 +76,11 @@ export class ListableObjectComponentLoaderComponent implements OnInit, OnChanges
*/ */
@Input() value: string; @Input() value: string;
/**
* Whether or not informational badges (e.g. Private, Withdrawn) should be hidden
*/
@Input() hideBadges = false;
/** /**
* Directive hook used to place the dynamic child component * Directive hook used to place the dynamic child component
*/ */
@ViewChild(ListableObjectDirective, { static: true }) listableObjectDirective: ListableObjectDirective; @ViewChild(ListableObjectDirective, { static: true }) listableObjectDirective: ListableObjectDirective;
/**
* View on the badges template, to be passed on to the loaded component (which will place the badges in the desired
* location, or on top if not specified)
*/
@ViewChild('badges', { static: true }) badges: ElementRef;
/** /**
* Emit when the listable object has been reloaded. * Emit when the listable object has been reloaded.
*/ */
@@ -159,10 +148,7 @@ export class ListableObjectComponentLoaderComponent implements OnInit, OnChanges
this.compRef = viewContainerRef.createComponent( this.compRef = viewContainerRef.createComponent(
component, { component, {
index: 0, index: 0,
injector: undefined, injector: undefined
projectableNodes: [
[this.badges.nativeElement],
]
} }
); );

View File

@@ -1,43 +0,0 @@
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
import { ListableObjectComponentLoaderComponent } from './listable-object-component-loader.component';
import { ThemedComponent } from '../../../theme-support/themed.component';
import { ListableObject } from '../listable-object.model';
import { ViewMode } from '../../../../core/shared/view-mode.model';
import { Context } from '../../../../core/shared/context.model';
import { CollectionElementLinkType } from '../../collection-element-link.type';
/**
* Themed wrapper for ListableObjectComponentLoaderComponent
*/
@Component({
selector: 'ds-themed-listable-object-component-loader',
styleUrls: [],
templateUrl: '../../../theme-support/themed.component.html',
})
export class ThemedListableObjectComponentLoaderComponent extends ThemedComponent<ListableObjectComponentLoaderComponent> {
protected inAndOutputNames: (keyof ListableObjectComponentLoaderComponent & keyof this)[] = [
'object', 'index', 'viewMode', 'context', 'linkType', 'listID', 'linkType', 'showLabel', 'value', 'hideBadges', 'contentChange'];
@Input() object: ListableObject;
@Input() index: number;
@Input() viewMode: ViewMode;
@Input() context: Context;
@Input() linkType: CollectionElementLinkType;
@Input() listID: string;
@Input() showLabel = true;
@Input() value: string;
@Input() hideBadges = false;
@Output() contentChange = new EventEmitter<ListableObject>();
protected getComponentName(): string {
return 'ListableObjectComponentLoaderComponent';
}
protected importThemedComponent(themeName: string): Promise<any> {
return import(`../../../../../themes/${themeName}/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component`);
}
protected importUnthemedComponent(): Promise<any> {
return import('./listable-object-component-loader.component');
}
}

View File

@@ -7,9 +7,7 @@ import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ClaimedTaskSearchResultDetailElementComponent } from './claimed-task-search-result-detail-element.component'; import { ClaimedTaskSearchResultDetailElementComponent } from './claimed-task-search-result-detail-element.component';
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model'; import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
import { import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
MyDspaceItemStatusType
} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model'; import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model';

View File

@@ -8,9 +8,7 @@ import { ViewMode } from '../../../../core/shared/view-mode.model';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model'; import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
import { SearchResultDetailElementComponent } from '../search-result-detail-element.component'; import { SearchResultDetailElementComponent } from '../search-result-detail-element.component';
import { import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
MyDspaceItemStatusType
} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model'; import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model';
import { followLink } from '../../../utils/follow-link-config.model'; import { followLink } from '../../../utils/follow-link-config.model';

View File

@@ -1,7 +1,5 @@
<div *ngIf="item" class="item-page" @fadeInOut> <div *ngIf="item" class="item-page" @fadeInOut>
<ng-container *ngIf="status"> <ds-themed-badges [object]="object" [myDSpaceStatus]="status"></ds-themed-badges>
<ds-mydspace-item-status [status]="status"></ds-mydspace-item-status>
</ng-container>
<div *ngIf="item"> <div *ngIf="item">
<ds-item-page-title-field [item]="item"> <ds-item-page-title-field [item]="item">
</ds-item-page-title-field> </ds-item-page-title-field>

View File

@@ -6,7 +6,7 @@ import { BitstreamDataService } from '../../../../core/data/bitstream-data.servi
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { getFirstSucceededRemoteListPayload } from '../../../../core/shared/operators'; import { getFirstSucceededRemoteListPayload } from '../../../../core/shared/operators';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { fadeInOut } from '../../../animations/fade'; import { fadeInOut } from '../../../animations/fade';
import { Bitstream } from '../../../../core/shared/bitstream.model'; import { Bitstream } from '../../../../core/shared/bitstream.model';
import { FileService } from '../../../../core/shared/file.service'; import { FileService } from '../../../../core/shared/file.service';

View File

@@ -6,7 +6,7 @@ import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ItemSearchResultDetailElementComponent } from './item-search-result-detail-element.component'; import { ItemSearchResultDetailElementComponent } from './item-search-result-detail-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
let component: ItemSearchResultDetailElementComponent; let component: ItemSearchResultDetailElementComponent;

View File

@@ -3,9 +3,7 @@ import { Component } from '@angular/core';
import { ViewMode } from '../../../../core/shared/view-mode.model'; import { ViewMode } from '../../../../core/shared/view-mode.model';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { SearchResultDetailElementComponent } from '../search-result-detail-element.component'; import { SearchResultDetailElementComponent } from '../search-result-detail-element.component';
import { import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
MyDspaceItemStatusType
} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
import { Context } from '../../../../core/shared/context.model'; import { Context } from '../../../../core/shared/context.model';

View File

@@ -6,9 +6,7 @@ import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model'; import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
MyDspaceItemStatusType
} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { PoolSearchResultDetailElementComponent } from './pool-search-result-detail-element.component'; import { PoolSearchResultDetailElementComponent } from './pool-search-result-detail-element.component';

View File

@@ -6,9 +6,7 @@ import { mergeMap, tap } from 'rxjs/operators';
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model'; import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { SearchResultDetailElementComponent } from '../search-result-detail-element.component'; import { SearchResultDetailElementComponent } from '../search-result-detail-element.component';
import { import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
MyDspaceItemStatusType
} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { ViewMode } from '../../../../core/shared/view-mode.model'; import { ViewMode } from '../../../../core/shared/view-mode.model';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';

View File

@@ -7,7 +7,7 @@ import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { WorkflowItemSearchResultDetailElementComponent } from './workflow-item-search-result-detail-element.component'; import { WorkflowItemSearchResultDetailElementComponent } from './workflow-item-search-result-detail-element.component';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model';
import { getMockLinkService } from '../../../mocks/link-service.mock'; import { getMockLinkService } from '../../../mocks/link-service.mock';

View File

@@ -4,7 +4,7 @@ import { ViewMode } from '../../../../core/shared/view-mode.model';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { SearchResultDetailElementComponent } from '../search-result-detail-element.component'; import { SearchResultDetailElementComponent } from '../search-result-detail-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { find } from 'rxjs/operators'; import { find } from 'rxjs/operators';

View File

@@ -7,7 +7,7 @@ import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { WorkspaceItemSearchResultDetailElementComponent } from './workspace-item-search-result-detail-element.component'; import { WorkspaceItemSearchResultDetailElementComponent } from './workspace-item-search-result-detail-element.component';
import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model'; import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model';
import { getMockLinkService } from '../../../mocks/link-service.mock'; import { getMockLinkService } from '../../../mocks/link-service.mock';

View File

@@ -8,7 +8,7 @@ import { Item } from '../../../../core/shared/item.model';
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { isNotUndefined } from '../../../empty.util'; import { isNotUndefined } from '../../../empty.util';
import { SearchResultDetailElementComponent } from '../search-result-detail-element.component'; import { SearchResultDetailElementComponent } from '../search-result-detail-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { ViewMode } from '../../../../core/shared/view-mode.model'; import { ViewMode } from '../../../../core/shared/view-mode.model';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { WorkspaceItemSearchResult } from '../../../object-collection/shared/workspace-item-search-result.model'; import { WorkspaceItemSearchResult } from '../../../object-collection/shared/workspace-item-search-result.model';

View File

@@ -18,10 +18,10 @@
<div class="row mt-2" *ngIf="objects?.hasSucceeded" @fadeIn> <div class="row mt-2" *ngIf="objects?.hasSucceeded" @fadeIn>
<div class="col" <div class="col"
*ngFor="let object of objects?.payload?.page"> *ngFor="let object of objects?.payload?.page">
<ds-themed-listable-object-component-loader [object]="object" <ds-listable-object-component-loader [object]="object"
[viewMode]="viewMode" [viewMode]="viewMode"
[context]="context" [context]="context"
(contentChange)="contentChange.emit($event)"></ds-themed-listable-object-component-loader> (contentChange)="contentChange.emit($event)"></ds-listable-object-component-loader>
</div> </div>
</div> </div>
<ds-error *ngIf="objects.hasFailed" message="{{'error.objects' | translate}}"></ds-error> <ds-error *ngIf="objects.hasFailed" message="{{'error.objects' | translate}}"></ds-error>

View File

@@ -19,7 +19,7 @@
<div class="card-columns row" *ngIf="objects?.hasSucceeded"> <div class="card-columns row" *ngIf="objects?.hasSucceeded">
<div class="card-column col col-sm-6 col-lg-4" *ngFor="let column of (columns$ | async)" @fadeIn> <div class="card-column col col-sm-6 col-lg-4" *ngFor="let column of (columns$ | async)" @fadeIn>
<div class="card-element" *ngFor="let object of column" [attr.data-test]="'grid-object' | dsBrowserOnly"> <div class="card-element" *ngFor="let object of column" [attr.data-test]="'grid-object' | dsBrowserOnly">
<ds-themed-listable-object-component-loader [object]="object" [viewMode]="viewMode" [context]="context" [linkType]="linkType"></ds-themed-listable-object-component-loader> <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [context]="context" [linkType]="linkType"></ds-listable-object-component-loader>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,6 +0,0 @@
<div>
<ds-themed-status-badge [object]="object"></ds-themed-status-badge>
</div>
<div>
<ds-themed-type-badge [object]="object"></ds-themed-type-badge>
</div>

View File

@@ -1,78 +0,0 @@
import { Item } from '../../../../core/shared/item.model';
import { of as observableOf } from 'rxjs';
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { TranslateModule } from '@ngx-translate/core';
import { TruncatePipe } from '../../../utils/truncate.pipe';
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { By } from '@angular/platform-browser';
import { StatusBadgeComponent } from './status-badge.component';
let comp: StatusBadgeComponent;
let fixture: ComponentFixture<StatusBadgeComponent>;
const type = 'authorOfPublication';
const mockItemWithEntityType = Object.assign(new Item(), {
bundles: observableOf({}),
metadata: {
'dspace.entity.type': [
{
language: 'en_US',
value: type
}
]
}
});
const mockItemWithoutEntityType = Object.assign(new Item(), {
bundles: observableOf({}),
metadata: {
'dc.title': [
{
language: 'en_US',
value: 'This is just another title'
}
]
}
});
describe('ItemTypeBadgeComponent', () => {
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
imports: [TranslateModule.forRoot()],
declarations: [StatusBadgeComponent, TruncatePipe],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(StatusBadgeComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents();
}));
beforeEach(waitForAsync(() => {
fixture = TestBed.createComponent(StatusBadgeComponent);
comp = fixture.componentInstance;
}));
describe('When the item has an entity type', () => {
beforeEach(() => {
comp.object = mockItemWithEntityType;
fixture.detectChanges();
});
it('should show the entity type badge', () => {
const badge = fixture.debugElement.query(By.css('span.badge'));
expect(badge.nativeElement.textContent).toContain(type.toLowerCase());
});
});
describe('When the item has no entity type', () => {
beforeEach(() => {
comp.object = mockItemWithoutEntityType;
fixture.detectChanges();
});
it('should show an item badge', () => {
const badge = fixture.debugElement.query(By.css('span.badge'));
expect(badge.nativeElement.textContent).toContain('item');
});
});
});

View File

@@ -1 +1 @@
<ds-themed-listable-object-component-loader [object]="metadataRepresentation" [viewMode]="viewMode"></ds-themed-listable-object-component-loader> <ds-listable-object-component-loader [object]="metadataRepresentation" [viewMode]="viewMode"></ds-listable-object-component-loader>

View File

@@ -28,7 +28,7 @@ describe('ItemMetadataListElementComponent', () => {
})); }));
it('should call a listable-object-component-loader component and pass the item-metadata-representation', () => { it('should call a listable-object-component-loader component and pass the item-metadata-representation', () => {
const objectLoader = fixture.debugElement.query(By.css('ds-themed-listable-object-component-loader')).nativeElement; const objectLoader = fixture.debugElement.query(By.css('ds-listable-object-component-loader')).nativeElement;
expect(objectLoader.object).toBe(mockItemMetadataRepresentation); expect(objectLoader.object).toBe(mockItemMetadataRepresentation);
}); });

View File

@@ -12,7 +12,7 @@ import { getMockLinkService } from '../../../../mocks/link-service.mock';
import { VarDirective } from '../../../../utils/var.directive'; import { VarDirective } from '../../../../utils/var.directive';
import { TruncatableService } from '../../../../truncatable/truncatable.service'; import { TruncatableService } from '../../../../truncatable/truncatable.service';
import { LinkService } from '../../../../../core/cache/builders/link.service'; import { LinkService } from '../../../../../core/cache/builders/link.service';
import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { ClaimedApprovedTaskSearchResult } from '../../../../object-collection/shared/claimed-approved-task-search-result.model'; import { ClaimedApprovedTaskSearchResult } from '../../../../object-collection/shared/claimed-approved-task-search-result.model';
import { ClaimedApprovedSearchResultListElementComponent } from './claimed-approved-search-result-list-element.component'; import { ClaimedApprovedSearchResultListElementComponent } from './claimed-approved-search-result-list-element.component';
import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service';

View File

@@ -4,7 +4,7 @@ import { ClaimedApprovedTaskSearchResult } from '../../../../object-collection/s
import { listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator'; import { listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator';
import { LinkService } from '../../../../../core/cache/builders/link.service'; import { LinkService } from '../../../../../core/cache/builders/link.service';
import { TruncatableService } from '../../../../truncatable/truncatable.service'; import { TruncatableService } from '../../../../truncatable/truncatable.service';
import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { RemoteData } from '../../../../../core/data/remote-data'; import { RemoteData } from '../../../../../core/data/remote-data';
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';

View File

@@ -14,7 +14,7 @@ import { getMockLinkService } from '../../../../mocks/link-service.mock';
import { VarDirective } from '../../../../utils/var.directive'; import { VarDirective } from '../../../../utils/var.directive';
import { TruncatableService } from '../../../../truncatable/truncatable.service'; import { TruncatableService } from '../../../../truncatable/truncatable.service';
import { LinkService } from '../../../../../core/cache/builders/link.service'; import { LinkService } from '../../../../../core/cache/builders/link.service';
import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../mocks/dso-name.service.mock';
import { APP_CONFIG } from '../../../../../../config/app-config.interface'; import { APP_CONFIG } from '../../../../../../config/app-config.interface';

View File

@@ -5,7 +5,7 @@ import { ClaimedDeclinedTaskSearchResult } from '../../../../object-collection/s
import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { ViewMode } from '../../../../../core/shared/view-mode.model';
import { LinkService } from '../../../../../core/cache/builders/link.service'; import { LinkService } from '../../../../../core/cache/builders/link.service';
import { TruncatableService } from '../../../../truncatable/truncatable.service'; import { TruncatableService } from '../../../../truncatable/truncatable.service';
import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { RemoteData } from '../../../../../core/data/remote-data'; import { RemoteData } from '../../../../../core/data/remote-data';
import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model';

View File

@@ -7,9 +7,7 @@ import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ClaimedSearchResultListElementComponent } from './claimed-search-result-list-element.component'; import { ClaimedSearchResultListElementComponent } from './claimed-search-result-list-element.component';
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model'; import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
import { import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
MyDspaceItemStatusType
} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model'; import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model';

View File

@@ -5,9 +5,7 @@ import { listableObjectComponent } from '../../../object-collection/shared/lista
import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model'; import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model';
import { LinkService } from '../../../../core/cache/builders/link.service'; import { LinkService } from '../../../../core/cache/builders/link.service';
import { TruncatableService } from '../../../truncatable/truncatable.service'; import { TruncatableService } from '../../../truncatable/truncatable.service';
import { import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
MyDspaceItemStatusType
} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { BehaviorSubject, EMPTY, Observable } from 'rxjs'; import { BehaviorSubject, EMPTY, Observable } from 'rxjs';
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';

View File

@@ -5,11 +5,8 @@
</div> </div>
<div [ngClass]="showThumbnails ? 'col-9' : 'col-md-12'"> <div [ngClass]="showThumbnails ? 'col-9' : 'col-md-12'">
<div *ngIf="item" @fadeInOut> <div *ngIf="item" @fadeInOut>
<ng-container *ngIf="status">
<ds-mydspace-item-status [status]="status"></ds-mydspace-item-status>
</ng-container>
<div class="d-flex"> <div class="d-flex">
<ds-themed-badges [object]="item"></ds-themed-badges> <ds-themed-badges [object]="item" [myDSpaceStatus]="status"></ds-themed-badges>
<ds-access-status-badge [item]="item" class="pl-1"></ds-access-status-badge> <ds-access-status-badge [item]="item" class="pl-1"></ds-access-status-badge>
</div> </div>
<ds-truncatable [id]="item.id"> <ds-truncatable [id]="item.id">

View File

@@ -178,8 +178,8 @@ describe('ItemListPreviewComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
}); });
it('should show the entity type span', () => { it('should show the badges', () => {
const entityField = fixture.debugElement.query(By.css('ds-type-badge')); const entityField = fixture.debugElement.query(By.css('ds-themed-badges'));
expect(entityField).not.toBeNull(); expect(entityField).not.toBeNull();
}); });
}); });

View File

@@ -2,9 +2,7 @@ import { Component, Inject, Input, OnInit } 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 { import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
MyDspaceItemStatusType
} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SearchResult } from '../../../search/models/search-result.model'; import { SearchResult } from '../../../search/models/search-result.model';
import { APP_CONFIG, AppConfig } from '../../../../../config/app-config.interface'; import { APP_CONFIG, AppConfig } from '../../../../../config/app-config.interface';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';

View File

@@ -2,7 +2,7 @@ import { Component, Input } from '@angular/core';
import { ThemedComponent } from '../../../theme-support/themed.component'; import { ThemedComponent } from '../../../theme-support/themed.component';
import { ItemListPreviewComponent } from './item-list-preview.component'; import { ItemListPreviewComponent } from './item-list-preview.component';
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/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { SearchResult } from '../../../search/models/search-result.model'; import { SearchResult } from '../../../search/models/search-result.model';
/** /**

View File

@@ -5,7 +5,7 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
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/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
import { ItemSearchResultListElementSubmissionComponent } from './item-search-result-list-element-submission.component'; import { ItemSearchResultListElementSubmissionComponent } from './item-search-result-list-element-submission.component';
import { TruncatableService } from '../../../truncatable/truncatable.service'; import { TruncatableService } from '../../../truncatable/truncatable.service';

View File

@@ -1,7 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
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/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { ViewMode } from '../../../../core/shared/view-mode.model'; import { ViewMode } from '../../../../core/shared/view-mode.model';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { Context } from '../../../../core/shared/context.model'; import { Context } from '../../../../core/shared/context.model';

View File

@@ -1,5 +1,5 @@
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { ComponentFixture, fakeAsync, flush, TestBed, tick, waitForAsync } from '@angular/core/testing'; import { waitForAsync, ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
@@ -7,9 +7,7 @@ import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { PoolSearchResultListElementComponent } from './pool-search-result-list-element.component'; import { PoolSearchResultListElementComponent } from './pool-search-result-list-element.component';
import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model'; import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
MyDspaceItemStatusType
} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { PoolTaskSearchResult } from '../../../object-collection/shared/pool-task-search-result.model'; import { PoolTaskSearchResult } from '../../../object-collection/shared/pool-task-search-result.model';
@@ -20,8 +18,6 @@ import { getMockLinkService } from '../../../mocks/link-service.mock';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock';
import { APP_CONFIG } from '../../../../../config/app-config.interface';
import { ObjectCacheService } from '../../../../core/cache/object-cache.service';
let component: PoolSearchResultListElementComponent; let component: PoolSearchResultListElementComponent;
let fixture: ComponentFixture<PoolSearchResultListElementComponent>; let fixture: ComponentFixture<PoolSearchResultListElementComponent>;
@@ -58,21 +54,11 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const environmentUseThumbs = {
browseBy: {
showThumbnails: true
}
};
const rdItem = createSuccessfulRemoteDataObject(item); const rdItem = createSuccessfulRemoteDataObject(item);
const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) }); const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) });
const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem); const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject.indexableObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) }); mockResultObject.indexableObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
const linkService = getMockLinkService(); const linkService = getMockLinkService();
const objectCacheServiceMock = jasmine.createSpyObj('ObjectCacheService', {
remove: jasmine.createSpy('remove')
});
describe('PoolSearchResultListElementComponent', () => { describe('PoolSearchResultListElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
@@ -82,9 +68,7 @@ describe('PoolSearchResultListElementComponent', () => {
providers: [ providers: [
{ provide: TruncatableService, useValue: {} }, { provide: TruncatableService, useValue: {} },
{ provide: LinkService, useValue: linkService }, { provide: LinkService, useValue: linkService },
{ provide: DSONameService, useClass: DSONameServiceMock }, { provide: DSONameService, useClass: DSONameServiceMock }
{ provide: APP_CONFIG, useValue: environmentUseThumbs },
{ provide: ObjectCacheService, useValue: objectCacheServiceMock }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(PoolSearchResultListElementComponent, { }).overrideComponent(PoolSearchResultListElementComponent, {
@@ -102,16 +86,17 @@ describe('PoolSearchResultListElementComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
}); });
it('should init workflowitem properly', fakeAsync(() => { it('should init workflowitem properly', (done) => {
flush(); component.workflowitemRD$.subscribe((workflowitemRD) => {
expect(linkService.resolveLinks).toHaveBeenCalledWith( expect(linkService.resolveLinks).toHaveBeenCalledWith(
component.dso, component.dso,
jasmine.objectContaining({ name: 'workflowitem' }), jasmine.objectContaining({ name: 'workflowitem' }),
jasmine.objectContaining({ name: 'action' }) jasmine.objectContaining({ name: 'action' })
); );
expect(component.workflowitem$.value).toEqual(workflowitem); expect(workflowitemRD.payload).toEqual(workflowitem);
expect(component.item$.value).toEqual(item); done();
})); });
});
it('should have properly status', () => { it('should have properly status', () => {
expect(component.status).toEqual(MyDspaceItemStatusType.WAITING_CONTROLLER); expect(component.status).toEqual(MyDspaceItemStatusType.WAITING_CONTROLLER);
@@ -127,9 +112,4 @@ describe('PoolSearchResultListElementComponent', () => {
expect(component.reloadedObject.emit).toHaveBeenCalledWith(actionPayload.reloadedObject); expect(component.reloadedObject.emit).toHaveBeenCalledWith(actionPayload.reloadedObject);
})); }));
it('should add an offset to the actions element', () => {
const thumbnail = fixture.debugElement.query(By.css('.offset-3'));
expect(thumbnail).toBeTruthy();
});
}); });

View File

@@ -7,9 +7,7 @@ import { ViewMode } from '../../../../core/shared/view-mode.model';
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model'; import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
MyDspaceItemStatusType
} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { PoolTaskSearchResult } from '../../../object-collection/shared/pool-task-search-result.model'; import { PoolTaskSearchResult } from '../../../object-collection/shared/pool-task-search-result.model';
import { import {

View File

@@ -10,7 +10,7 @@ import { ItemDataService } from '../../../../core/data/item-data.service';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { getMockLinkService } from '../../../mocks/link-service.mock'; import { getMockLinkService } from '../../../mocks/link-service.mock';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { TruncatableService } from '../../../truncatable/truncatable.service'; import { TruncatableService } from '../../../truncatable/truncatable.service';

View File

@@ -8,7 +8,7 @@ import { Item } from '../../../../core/shared/item.model';
import { ViewMode } from '../../../../core/shared/view-mode.model'; import { ViewMode } from '../../../../core/shared/view-mode.model';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model';
import { TruncatableService } from '../../../truncatable/truncatable.service'; import { TruncatableService } from '../../../truncatable/truncatable.service';
import { followLink } from '../../../utils/follow-link-config.model'; import { followLink } from '../../../utils/follow-link-config.model';

View File

@@ -10,7 +10,7 @@ import { ItemDataService } from '../../../../core/data/item-data.service';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model'; import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model';
import { getMockLinkService } from '../../../mocks/link-service.mock'; import { getMockLinkService } from '../../../mocks/link-service.mock';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { TruncatableService } from '../../../truncatable/truncatable.service'; import { TruncatableService } from '../../../truncatable/truncatable.service';

View File

@@ -7,7 +7,7 @@ import { Item } from '../../../../core/shared/item.model';
import { ViewMode } from '../../../../core/shared/view-mode.model'; import { ViewMode } from '../../../../core/shared/view-mode.model';
import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model'; import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type';
import { WorkspaceItemSearchResult } from '../../../object-collection/shared/workspace-item-search-result.model'; import { WorkspaceItemSearchResult } from '../../../object-collection/shared/workspace-item-search-result.model';
import { TruncatableService } from '../../../truncatable/truncatable.service'; import { TruncatableService } from '../../../truncatable/truncatable.service';
import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component'; import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component';

View File

@@ -25,9 +25,9 @@
<ds-importable-list-item-control *ngIf="importable" [object]="object" <ds-importable-list-item-control *ngIf="importable" [object]="object"
[importConfig]="importConfig" [importConfig]="importConfig"
(importObject)="importObject.emit($event)"></ds-importable-list-item-control> (importObject)="importObject.emit($event)"></ds-importable-list-item-control>
<ds-themed-listable-object-component-loader [object]="object" [viewMode]="viewMode" [index]="i" [context]="context" [linkType]="linkType" <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [index]="i" [context]="context" [linkType]="linkType"
[listID]="selectionConfig?.listId" [listID]="selectionConfig?.listId"
(contentChange)="contentChange.emit($event)"></ds-themed-listable-object-component-loader> (contentChange)="contentChange.emit($event)"></ds-listable-object-component-loader>
</li> </li>
</ul> </ul>
</ds-pagination> </ds-pagination>

View File

@@ -87,9 +87,7 @@ import { ObjectDetailComponent } from './object-detail/object-detail.component';
import { import {
ItemDetailPreviewComponent ItemDetailPreviewComponent
} from './object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component'; } from './object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component';
import { import { MyDSpaceStatusBadgeComponent } from './object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component';
MyDSpaceItemStatusComponent
} from './object-collection/shared/mydspace-item-status/my-dspace-item-status.component';
import { WorkspaceitemActionsComponent } from './mydspace-actions/workspaceitem/workspaceitem-actions.component'; import { WorkspaceitemActionsComponent } from './mydspace-actions/workspaceitem/workspaceitem-actions.component';
import { WorkflowitemActionsComponent } from './mydspace-actions/workflowitem/workflowitem-actions.component'; import { WorkflowitemActionsComponent } from './mydspace-actions/workflowitem/workflowitem-actions.component';
import { ItemSubmitterComponent } from './object-collection/shared/mydspace-item-submitter/item-submitter.component'; import { ItemSubmitterComponent } from './object-collection/shared/mydspace-item-submitter/item-submitter.component';
@@ -205,7 +203,7 @@ import {
DsoInputSuggestionsComponent DsoInputSuggestionsComponent
} from './input-suggestions/dso-input-suggestions/dso-input-suggestions.component'; } from './input-suggestions/dso-input-suggestions/dso-input-suggestions.component';
import { ItemGridElementComponent } from './object-grid/item-grid-element/item-types/item/item-grid-element.component'; import { ItemGridElementComponent } from './object-grid/item-grid-element/item-types/item/item-grid-element.component';
import { TypeBadgeComponent } from './object-list/badges/type-badge/type-badge.component'; import { TypeBadgeComponent } from './object-collection/shared/badges/type-badge/type-badge.component';
import { AccessStatusBadgeComponent } from './object-list/access-status-badge/access-status-badge.component'; import { AccessStatusBadgeComponent } from './object-list/access-status-badge/access-status-badge.component';
import { import {
MetadataRepresentationLoaderComponent MetadataRepresentationLoaderComponent
@@ -324,12 +322,12 @@ import {
} from '../item-page/simple/field-components/specific-field/title/item-page-title-field.component'; } from '../item-page/simple/field-components/specific-field/title/item-page-title-field.component';
import { MarkdownPipe } from './utils/markdown.pipe'; import { MarkdownPipe } from './utils/markdown.pipe';
import { GoogleRecaptchaModule } from '../core/google-recaptcha/google-recaptcha.module'; import { GoogleRecaptchaModule } from '../core/google-recaptcha/google-recaptcha.module';
import { ThemedListableObjectComponentLoaderComponent } from './object-collection/shared/listable-object/themed-listable-object-component-loader.component'; import { StatusBadgeComponent } from './object-collection/shared/badges/status-badge/status-badge.component';
import { StatusBadgeComponent } from './object-list/badges/status-badge/status-badge.component'; import { BadgesComponent } from './object-collection/shared/badges/badges.component';
import { BadgesComponent } from './object-list/badges/badges.component'; import { ThemedBadgesComponent } from './object-collection/shared/badges/themed-badges.component';
import { ThemedBadgesComponent } from './object-list/badges/themed-badges.component'; import { ThemedStatusBadgeComponent } from './object-collection/shared/badges/status-badge/themed-status-badge.component';
import { ThemedStatusBadgeComponent } from './object-list/badges/status-badge/themed-status-badge.component'; import { ThemedTypeBadgeComponent } from './object-collection/shared/badges/type-badge/themed-type-badge.component';
import { ThemedTypeBadgeComponent } from './object-list/badges/type-badge/themed-type-badge.component'; import { ThemedMyDSpaceStatusBadgeComponent } from './object-collection/shared/badges/my-dspace-status-badge/themed-my-dspace-status-badge.component';
const MODULES = [ const MODULES = [
CommonModule, CommonModule,
@@ -411,7 +409,8 @@ const COMPONENTS = [
FileDropzoneNoUploaderComponent, FileDropzoneNoUploaderComponent,
ItemListPreviewComponent, ItemListPreviewComponent,
ThemedItemListPreviewComponent, ThemedItemListPreviewComponent,
MyDSpaceItemStatusComponent, MyDSpaceStatusBadgeComponent,
ThemedMyDSpaceStatusBadgeComponent,
ItemSubmitterComponent, ItemSubmitterComponent,
ItemDetailPreviewComponent, ItemDetailPreviewComponent,
ItemDetailPreviewFieldComponent, ItemDetailPreviewFieldComponent,
@@ -455,7 +454,6 @@ const COMPONENTS = [
SearchExportCsvComponent, SearchExportCsvComponent,
PageSizeSelectorComponent, PageSizeSelectorComponent,
ListableObjectComponentLoaderComponent, ListableObjectComponentLoaderComponent,
ThemedListableObjectComponentLoaderComponent,
CollectionListElementComponent, CollectionListElementComponent,
CommunityListElementComponent, CommunityListElementComponent,
CollectionGridElementComponent, CollectionGridElementComponent,

View File

@@ -1,11 +1,11 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { BadgesComponent as BaseComponent } from 'src/app/shared/object-list/badges/badges.component'; import { BadgesComponent as BaseComponent } from 'src/app/shared/object-collection/shared/badges/badges.component';
@Component({ @Component({
selector: 'ds-badges', selector: 'ds-badges',
// styleUrls: ['./badges.component.scss'], // styleUrls: ['./badges.component.scss'],
// templateUrl: './badges.component.html', // templateUrl: './badges.component.html',
templateUrl: '../../../../../../app/shared/object-list/badges/badges.component.html', templateUrl: '../../../../../../../app/shared/object-collection/shared/badges/badges.component.html',
}) })
export class BadgesComponent extends BaseComponent { export class BadgesComponent extends BaseComponent {
} }

View File

@@ -0,0 +1,12 @@
import { Component } from '@angular/core';
import { MyDSpaceStatusBadgeComponent as BaseComponent } from 'src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component';
@Component({
selector: 'ds-my-dspace-status-badge',
// styleUrls: ['./my-dspace-status-badge.component.scss'],
styleUrls: ['../../../../../../../../app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.scss'],
// templateUrl: './my-dspace-status-badge.component.html',
templateUrl: '../../../../../../../../app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.html',
})
export class MyDSpaceStatusBadgeComponent extends BaseComponent {
}

View File

@@ -1,11 +1,11 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { StatusBadgeComponent as BaseComponent } from 'src/app/shared/object-list/badges/status-badge/status-badge.component'; import { StatusBadgeComponent as BaseComponent } from 'src/app/shared/object-collection/shared/badges/status-badge/status-badge.component';
@Component({ @Component({
selector: 'ds-status-badge', selector: 'ds-status-badge',
// styleUrls: ['./status-badge.component.scss'], // styleUrls: ['./status-badge.component.scss'],
// templateUrl: './status-badge.component.html', // templateUrl: './status-badge.component.html',
templateUrl: '../../../../../../../app/shared/object-list/badges/status-badge/status-badge.component.html', templateUrl: '../../../../../../../../app/shared/object-collection/shared/badges/status-badge/status-badge.component.html',
}) })
export class StatusBadgeComponent extends BaseComponent { export class StatusBadgeComponent extends BaseComponent {
} }

View File

@@ -1,11 +1,11 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { TypeBadgeComponent as BaseComponent } from 'src/app/shared/object-list/badges/type-badge/type-badge.component'; import { TypeBadgeComponent as BaseComponent } from 'src/app/shared/object-collection/shared/badges/type-badge/type-badge.component';
@Component({ @Component({
selector: 'ds-type-badge', selector: 'ds-type-badge',
// styleUrls: ['./type-badge.component.scss'], // styleUrls: ['./type-badge.component.scss'],
// templateUrl: './type-badge.component.html', // templateUrl: './type-badge.component.html',
templateUrl: '../../../../../../../app/shared/object-list/badges/type-badge/type-badge.component.html', templateUrl: '../../../../../../../../app/shared/object-collection/shared/badges/type-badge/type-badge.component.html',
}) })
export class TypeBadgeComponent extends BaseComponent { export class TypeBadgeComponent extends BaseComponent {
} }

View File

@@ -1,13 +0,0 @@
import { Component } from '@angular/core';
import { ListableObjectComponentLoaderComponent as BaseComponent } from 'src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component';
@Component({
selector: 'ds-listable-object-component-loader',
// styleUrls: ['./listable-object-component-loader.component.scss'],
styleUrls: ['../../../../../../../app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.scss'],
// templateUrl: './listable-object-component-loader.component.html'
templateUrl: '../../../../../../../app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.html'
})
export class ListableObjectComponentLoaderComponent extends BaseComponent {
}

View File

@@ -116,10 +116,10 @@ import { BrowseByDatePageComponent } from './app/browse-by/browse-by-date-page/b
import { BrowseByTitlePageComponent } from './app/browse-by/browse-by-title-page/browse-by-title-page.component'; import { BrowseByTitlePageComponent } from './app/browse-by/browse-by-title-page/browse-by-title-page.component';
import { SearchFiltersComponent } from './app/shared/search/search-filters/search-filters.component'; import { SearchFiltersComponent } from './app/shared/search/search-filters/search-filters.component';
import { SearchSidebarComponent } from './app/shared/search/search-sidebar/search-sidebar.component'; import { SearchSidebarComponent } from './app/shared/search/search-sidebar/search-sidebar.component';
import { ListableObjectComponentLoaderComponent } from './app/shared/object-collection/shared/listable-object/listable-object-component-loader.component'; import { MyDSpaceStatusBadgeComponent } from './app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component';
import { BadgesComponent } from './app/shared/object-list/badges/badges.component'; import { TypeBadgeComponent } from './app/shared/object-collection/shared/badges/type-badge/type-badge.component';
import { StatusBadgeComponent } from './app/shared/object-list/badges/status-badge/status-badge.component'; import { StatusBadgeComponent } from './app/shared/object-collection/shared/badges/status-badge/status-badge.component';
import { TypeBadgeComponent } from './app/shared/object-list/badges/type-badge/type-badge.component'; import { BadgesComponent } from './app/shared/object-collection/shared/badges/badges.component';
const DECLARATIONS = [ const DECLARATIONS = [
FileSectionComponent, FileSectionComponent,
@@ -176,10 +176,10 @@ const DECLARATIONS = [
BrowseByTitlePageComponent, BrowseByTitlePageComponent,
SearchFiltersComponent, SearchFiltersComponent,
SearchSidebarComponent, SearchSidebarComponent,
ListableObjectComponentLoaderComponent,
BadgesComponent, BadgesComponent,
StatusBadgeComponent, StatusBadgeComponent,
TypeBadgeComponent, TypeBadgeComponent,
MyDSpaceStatusBadgeComponent,
]; ];
@NgModule({ @NgModule({