diff --git a/src/app/admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.spec.ts b/src/app/admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.spec.ts index e478aa3ef3..ee3de42131 100644 --- a/src/app/admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.spec.ts +++ b/src/app/admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.spec.ts @@ -19,7 +19,7 @@ import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote- import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock'; import { ThemeService } from '../../../../../shared/theme-support/theme.service'; import { AccessStatusDataService } from '../../../../../core/data/access-status-data.service'; -import { AccessStatusObject } from '../../../../../shared/object-list/access-status-badge/access-status.model'; +import { AccessStatusObject } from '../../../../../shared/object-collection/shared/badges/access-status-badge/access-status.model'; import { AuthService } from '../../../../../core/auth/auth.service'; import { AuthServiceStub } from '../../../../../shared/testing/auth-service.stub'; import { FileService } from '../../../../../core/shared/file.service'; diff --git a/src/app/admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.html b/src/app/admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.html index 259512552c..991508335f 100644 --- a/src/app/admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.html +++ b/src/app/admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.html @@ -2,6 +2,5 @@ [viewMode]="viewModes.ListElement" [index]="index" [linkType]="linkType" - [listID]="listID" - [hideBadges]="true"> + [listID]="listID"> diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts index 319b42d58b..d35900ebe2 100644 --- a/src/app/core/core.module.ts +++ b/src/app/core/core.module.ts @@ -160,7 +160,7 @@ import { SubmissionAccessesModel } from './config/models/config-submission-acces import { RatingAdvancedWorkflowInfo } from './tasks/models/rating-advanced-workflow-info.model'; import { AdvancedWorkflowInfo } from './tasks/models/advanced-workflow-info.model'; import { SelectReviewerAdvancedWorkflowInfo } from './tasks/models/select-reviewer-advanced-workflow-info.model'; -import { AccessStatusObject } from '../shared/object-list/access-status-badge/access-status.model'; +import { AccessStatusObject } from '../shared/object-collection/shared/badges/access-status-badge/access-status.model'; import { AccessStatusDataService } from './data/access-status-data.service'; import { LinkHeadService } from './services/link-head.service'; import { ResearcherProfileDataService } from './profile/researcher-profile-data.service'; diff --git a/src/app/core/data/access-status-data.service.ts b/src/app/core/data/access-status-data.service.ts index 2f641456fa..e8b77245e8 100644 --- a/src/app/core/data/access-status-data.service.ts +++ b/src/app/core/data/access-status-data.service.ts @@ -3,8 +3,8 @@ import { RemoteDataBuildService } from '../cache/builders/remote-data-build.serv import { ObjectCacheService } from '../cache/object-cache.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { RequestService } from './request.service'; -import { AccessStatusObject } from 'src/app/shared/object-list/access-status-badge/access-status.model'; -import { ACCESS_STATUS } from 'src/app/shared/object-list/access-status-badge/access-status.resource-type'; +import { AccessStatusObject } from 'src/app/shared/object-collection/shared/badges/access-status-badge/access-status.model'; +import { ACCESS_STATUS } from 'src/app/shared/object-collection/shared/badges/access-status-badge/access-status.resource-type'; import { Observable } from 'rxjs'; import { RemoteData } from './remote-data'; import { Item } from '../shared/item.model'; diff --git a/src/app/core/shared/context.model.ts b/src/app/core/shared/context.model.ts index dbe5a64552..756fe5c673 100644 --- a/src/app/core/shared/context.model.ts +++ b/src/app/core/shared/context.model.ts @@ -3,17 +3,38 @@ */ export enum Context { + /** Default context */ Any = 'undefined', + + /** General item page context */ ItemPage = 'itemPage', + + /** General search page context */ Search = 'search', + Workflow = 'workflow', Workspace = 'workspace', SupervisedItems = 'supervisedWorkspace', + + /** Administrative menu context */ AdminMenu = 'adminMenu', + EntitySearchModalWithNameVariants = 'EntitySearchModalWithNameVariants', EntitySearchModal = 'EntitySearchModal', + + /** Administrative search page context */ AdminSearch = 'adminSearch', AdminWorkflowSearch = 'adminWorkflowSearch', + SideBarSearchModal = 'sideBarSearchModal', SideBarSearchModalCurrent = 'sideBarSearchModalCurrent', + + /** The MyDSpace* Context values below are used for badge display in MyDSpace. */ + MyDSpaceArchived = 'mydspaceArchived', + MyDSpaceWorkspace = 'mydspaceWorkspace', + MyDSpaceWorkflow = 'mydspaceWorkflow', + MyDSpaceDeclined = 'mydspaceDeclined', + MyDSpaceApproved = 'mydspaceApproved', + MyDSpaceWaitingController = 'mydspaceWaitingController', + MyDSpaceValidation = 'mydspaceValidation', } diff --git a/src/app/core/shared/item.model.ts b/src/app/core/shared/item.model.ts index 3441896ed1..20fc275ee2 100644 --- a/src/app/core/shared/item.model.ts +++ b/src/app/core/shared/item.model.ts @@ -21,8 +21,8 @@ import { Version } from './version.model'; import { VERSION } from './version.resource-type'; import { BITSTREAM } from './bitstream.resource-type'; import { Bitstream } from './bitstream.model'; -import { ACCESS_STATUS } from 'src/app/shared/object-list/access-status-badge/access-status.resource-type'; -import { AccessStatusObject } from 'src/app/shared/object-list/access-status-badge/access-status.model'; +import { ACCESS_STATUS } from 'src/app/shared/object-collection/shared/badges/access-status-badge/access-status.resource-type'; +import { AccessStatusObject } from 'src/app/shared/object-collection/shared/badges/access-status-badge/access-status.model'; import { HandleObject } from './handle-object.model'; import { IDENTIFIERS } from '../../shared/object-list/identifier-data/identifier-data.resource-type'; import { IdentifierData } from '../../shared/object-list/identifier-data/identifier-data.model'; diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.html b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.html index f54dde4971..525b42610b 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.html +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.html @@ -7,7 +7,7 @@ [dsDebounce]="300" (onDebounce)="confirm.emit(false)">
{{ mdRepresentationName$ | async }} - +
diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.spec.ts b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.spec.ts index 10b3016a52..67a6f98ac0 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.spec.ts +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.spec.ts @@ -68,7 +68,7 @@ describe('DsoEditMetadataValueComponent', () => { }); it('should not show a badge', () => { - expect(fixture.debugElement.query(By.css('ds-type-badge'))).toBeNull(); + expect(fixture.debugElement.query(By.css('ds-themed-type-badge'))).toBeNull(); }); describe('when no changes have been made', () => { @@ -134,7 +134,7 @@ describe('DsoEditMetadataValueComponent', () => { }); it('should show a badge', () => { - expect(fixture.debugElement.query(By.css('ds-type-badge'))).toBeTruthy(); + expect(fixture.debugElement.query(By.css('ds-themed-type-badge'))).toBeTruthy(); }); assertButton(EDIT_BTN, true, true); diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html index c6c29c2f1a..f379efbaf1 100644 --- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html +++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html @@ -19,7 +19,7 @@
- +

diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html index 5849105f96..0477ef2324 100644 --- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html +++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html @@ -19,7 +19,7 @@
- +

diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html index 9a3ea95c07..d994ae8411 100644 --- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html +++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html @@ -19,7 +19,7 @@
- +

diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html index 36b7e98c51..9d02a5d837 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html @@ -12,7 +12,7 @@
- +
- +
- +
- +

diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html index 853a717965..a11cd384e0 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html @@ -19,7 +19,7 @@
- +

diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html index a54d136de2..60c9db31f9 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html @@ -19,7 +19,7 @@
- +

diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html index 0bba83a209..9495577c01 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html @@ -18,7 +18,7 @@
- +
- +
- + - +
diff --git a/src/app/home-page/home-page.module.ts b/src/app/home-page/home-page.module.ts index 3418437d3c..1681abd805 100644 --- a/src/app/home-page/home-page.module.ts +++ b/src/app/home-page/home-page.module.ts @@ -12,11 +12,13 @@ import { ThemedHomePageComponent } from './themed-home-page.component'; import { RecentItemListComponent } from './recent-item-list/recent-item-list.component'; import { JournalEntitiesModule } from '../entity-groups/journal-entities/journal-entities.module'; import { ResearchEntitiesModule } from '../entity-groups/research-entities/research-entities.module'; +import { ThemedTopLevelCommunityListComponent } from './top-level-community-list/themed-top-level-community-list.component'; const DECLARATIONS = [ HomePageComponent, ThemedHomePageComponent, TopLevelCommunityListComponent, + ThemedTopLevelCommunityListComponent, ThemedHomeNewsComponent, HomeNewsComponent, RecentItemListComponent diff --git a/src/app/home-page/top-level-community-list/themed-top-level-community-list.component.ts b/src/app/home-page/top-level-community-list/themed-top-level-community-list.component.ts new file mode 100644 index 0000000000..6eb74cc0a9 --- /dev/null +++ b/src/app/home-page/top-level-community-list/themed-top-level-community-list.component.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; +import { TopLevelCommunityListComponent } from './top-level-community-list.component'; +import { ThemedComponent } from '../../shared/theme-support/themed.component'; + +@Component({ + selector: 'ds-themed-top-level-community-list', + styleUrls: [], + templateUrl: '../../shared/theme-support/themed.component.html', +}) +export class ThemedTopLevelCommunityListComponent extends ThemedComponent { + protected inAndOutputNames: (keyof TopLevelCommunityListComponent & keyof this)[]; + + protected getComponentName(): string { + return 'TopLevelCommunityListComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../themes/${themeName}/app/home-page/top-level-community-list/top-level-community-list.component`); + } + + protected importUnthemedComponent(): Promise { + return import(`./top-level-community-list.component`); + } + +} diff --git a/src/app/my-dspace-page/my-dspace-search.module.ts b/src/app/my-dspace-page/my-dspace-search.module.ts index f3775214d5..71d1343a30 100644 --- a/src/app/my-dspace-page/my-dspace-search.module.ts +++ b/src/app/my-dspace-page/my-dspace-search.module.ts @@ -23,7 +23,6 @@ import { ItemDetailPreviewComponent } from '../shared/object-detail/my-dspace-re import { ItemDetailPreviewFieldComponent } from '../shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component'; import { ItemListPreviewComponent } from '../shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component'; import { ThemedItemListPreviewComponent } from '../shared/object-list/my-dspace-result-list-element/item-list-preview/themed-item-list-preview.component'; -import { MyDSpaceItemStatusComponent } from '../shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component'; import { JournalEntitiesModule } from '../entity-groups/journal-entities/journal-entities.module'; import { MyDSpaceActionsModule } from '../shared/mydspace-actions/mydspace-actions.module'; import { ClaimedDeclinedTaskSearchResultListElementComponent } from '../shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component'; @@ -52,7 +51,6 @@ const DECLARATIONS = [ ItemDetailPreviewFieldComponent, ItemListPreviewComponent, ThemedItemListPreviewComponent, - MyDSpaceItemStatusComponent, ]; @NgModule({ diff --git a/src/app/process-page/process-page-shared.module.ts b/src/app/process-page/process-page-shared.module.ts new file mode 100644 index 0000000000..e666283e03 --- /dev/null +++ b/src/app/process-page/process-page-shared.module.ts @@ -0,0 +1,48 @@ +import { NgModule } from '@angular/core'; +import { SharedModule } from '../shared/shared.module'; +import { NewProcessComponent } from './new/new-process.component'; +import { ScriptsSelectComponent } from './form/scripts-select/scripts-select.component'; +import { ScriptHelpComponent } from './form/script-help/script-help.component'; +import { ParameterSelectComponent } from './form/process-parameters/parameter-select/parameter-select.component'; +import { ProcessParametersComponent } from './form/process-parameters/process-parameters.component'; +import { StringValueInputComponent } from './form/process-parameters/parameter-value-input/string-value-input/string-value-input.component'; +import { ParameterValueInputComponent } from './form/process-parameters/parameter-value-input/parameter-value-input.component'; +import { FileValueInputComponent } from './form/process-parameters/parameter-value-input/file-value-input/file-value-input.component'; +import { BooleanValueInputComponent } from './form/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component'; +import { DateValueInputComponent } from './form/process-parameters/parameter-value-input/date-value-input/date-value-input.component'; +import { ProcessOverviewComponent } from './overview/process-overview.component'; +import { ProcessDetailComponent } from './detail/process-detail.component'; +import { ProcessDetailFieldComponent } from './detail/process-detail-field/process-detail-field.component'; +import { ProcessBreadcrumbsService } from './process-breadcrumbs.service'; +import { ProcessBreadcrumbResolver } from './process-breadcrumb.resolver'; +import { ProcessFormComponent } from './form/process-form.component'; + +@NgModule({ + imports: [ + SharedModule, + ], + declarations: [ + NewProcessComponent, + ScriptsSelectComponent, + ScriptHelpComponent, + ParameterSelectComponent, + ProcessParametersComponent, + StringValueInputComponent, + ParameterValueInputComponent, + FileValueInputComponent, + BooleanValueInputComponent, + DateValueInputComponent, + ProcessOverviewComponent, + ProcessDetailComponent, + ProcessDetailFieldComponent, + ProcessFormComponent + ], + providers: [ + ProcessBreadcrumbResolver, + ProcessBreadcrumbsService + ] +}) + +export class ProcessPageSharedModule { + +} diff --git a/src/app/process-page/process-page.module.ts b/src/app/process-page/process-page.module.ts index ebe03e4537..2587813998 100644 --- a/src/app/process-page/process-page.module.ts +++ b/src/app/process-page/process-page.module.ts @@ -1,47 +1,17 @@ import { NgModule } from '@angular/core'; import { SharedModule } from '../shared/shared.module'; import { ProcessPageRoutingModule } from './process-page-routing.module'; -import { NewProcessComponent } from './new/new-process.component'; -import { ScriptsSelectComponent } from './form/scripts-select/scripts-select.component'; -import { ScriptHelpComponent } from './form/script-help/script-help.component'; -import { ParameterSelectComponent } from './form/process-parameters/parameter-select/parameter-select.component'; -import { ProcessParametersComponent } from './form/process-parameters/process-parameters.component'; -import { StringValueInputComponent } from './form/process-parameters/parameter-value-input/string-value-input/string-value-input.component'; -import { ParameterValueInputComponent } from './form/process-parameters/parameter-value-input/parameter-value-input.component'; -import { FileValueInputComponent } from './form/process-parameters/parameter-value-input/file-value-input/file-value-input.component'; -import { BooleanValueInputComponent } from './form/process-parameters/parameter-value-input/boolean-value-input/boolean-value-input.component'; -import { DateValueInputComponent } from './form/process-parameters/parameter-value-input/date-value-input/date-value-input.component'; -import { ProcessOverviewComponent } from './overview/process-overview.component'; -import { ProcessDetailComponent } from './detail/process-detail.component'; -import { ProcessDetailFieldComponent } from './detail/process-detail-field/process-detail-field.component'; -import { ProcessBreadcrumbsService } from './process-breadcrumbs.service'; -import { ProcessBreadcrumbResolver } from './process-breadcrumb.resolver'; -import { ProcessFormComponent } from './form/process-form.component'; +import { ProcessPageSharedModule } from './process-page-shared.module'; @NgModule({ imports: [ ProcessPageRoutingModule, SharedModule, + ProcessPageSharedModule, ], declarations: [ - NewProcessComponent, - ScriptsSelectComponent, - ScriptHelpComponent, - ParameterSelectComponent, - ProcessParametersComponent, - StringValueInputComponent, - ParameterValueInputComponent, - FileValueInputComponent, - BooleanValueInputComponent, - DateValueInputComponent, - ProcessOverviewComponent, - ProcessDetailComponent, - ProcessDetailFieldComponent, - ProcessFormComponent ], providers: [ - ProcessBreadcrumbResolver, - ProcessBreadcrumbsService ] }) diff --git a/src/app/shared/object-list/access-status-badge/access-status-badge.component.html b/src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.html similarity index 67% rename from src/app/shared/object-list/access-status-badge/access-status-badge.component.html rename to src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.html index 3877663419..a0180a761a 100644 --- a/src/app/shared/object-list/access-status-badge/access-status-badge.component.html +++ b/src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.html @@ -1,5 +1,5 @@ -
+ {{ accessStatus | translate }} -
+
diff --git a/src/app/shared/object-list/access-status-badge/access-status-badge.component.spec.ts b/src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.spec.ts similarity index 94% rename from src/app/shared/object-list/access-status-badge/access-status-badge.component.spec.ts rename to src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.spec.ts index 9101df2f4c..f661ed6e00 100644 --- a/src/app/shared/object-list/access-status-badge/access-status-badge.component.spec.ts +++ b/src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.spec.ts @@ -1,10 +1,10 @@ -import { Item } from '../../../core/shared/item.model'; +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 { TruncatePipe } from '../../../../utils/truncate.pipe'; import { NO_ERRORS_SCHEMA } from '@angular/core'; import { AccessStatusBadgeComponent } from './access-status-badge.component'; -import { createSuccessfulRemoteDataObject$ } from '../../remote-data.utils'; +import { createSuccessfulRemoteDataObject$ } from '../../../../remote-data.utils'; import { By } from '@angular/platform-browser'; import { AccessStatusObject } from './access-status.model'; import { AccessStatusDataService } from 'src/app/core/data/access-status-data.service'; @@ -50,7 +50,8 @@ describe('ItemAccessStatusBadgeComponent', () => { }); item = Object.assign(new Item(), { - uuid: 'item-uuid' + uuid: 'item-uuid', + type: 'item' }); } @@ -69,7 +70,7 @@ describe('ItemAccessStatusBadgeComponent', () => { environment.item.showAccessStatuses = true; fixture = TestBed.createComponent(AccessStatusBadgeComponent); component = fixture.componentInstance; - component.item = item; + component.object = item; fixture.detectChanges(); environment.item.showAccessStatuses = false; } diff --git a/src/app/shared/object-list/access-status-badge/access-status-badge.component.ts b/src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.ts similarity index 73% rename from src/app/shared/object-list/access-status-badge/access-status-badge.component.ts rename to src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.ts index fbca3cb971..2be44669b0 100644 --- a/src/app/shared/object-list/access-status-badge/access-status-badge.component.ts +++ b/src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.ts @@ -2,10 +2,12 @@ import { Component, Input } from '@angular/core'; import { catchError, map } from 'rxjs/operators'; import { Observable, of as observableOf } from 'rxjs'; import { AccessStatusObject } from './access-status.model'; -import { hasValue } from '../../empty.util'; +import { hasValue } from '../../../../empty.util'; import { environment } from 'src/environments/environment'; -import { Item } from 'src/app/core/shared/item.model'; import { AccessStatusDataService } from 'src/app/core/data/access-status-data.service'; +import { DSpaceObject } from '../../../../../core/shared/dspace-object.model'; +import { Item } from '../../../../../core/shared/item.model'; +import { ITEM } from '../../../../../core/shared/item.resource-type'; @Component({ selector: 'ds-access-status-badge', @@ -16,7 +18,7 @@ import { AccessStatusDataService } from 'src/app/core/data/access-status-data.se */ export class AccessStatusBadgeComponent { - @Input() item: Item; + @Input() object: DSpaceObject; accessStatus$: Observable; /** @@ -33,15 +35,17 @@ export class AccessStatusBadgeComponent { ngOnInit(): void { this.showAccessStatus = environment.item.showAccessStatuses; - if (!this.showAccessStatus || this.item == null) { + if (this.object.type.toString() !== ITEM.value || !this.showAccessStatus || this.object == null) { // Do not show the badge if the feature is inactive or if the item is null. return; } - if (this.item.accessStatus == null) { + + const item = this.object as Item; + if (item.accessStatus == null) { // In case the access status has not been loaded, do it individually. - this.item.accessStatus = this.accessStatusDataService.findAccessStatusFor(this.item); + item.accessStatus = this.accessStatusDataService.findAccessStatusFor(item); } - this.accessStatus$ = this.item.accessStatus.pipe( + this.accessStatus$ = item.accessStatus.pipe( map((accessStatusRD) => { if (accessStatusRD.statusCode !== 401 && hasValue(accessStatusRD.payload)) { return accessStatusRD.payload; diff --git a/src/app/shared/object-list/access-status-badge/access-status.model.ts b/src/app/shared/object-collection/shared/badges/access-status-badge/access-status.model.ts similarity index 100% rename from src/app/shared/object-list/access-status-badge/access-status.model.ts rename to src/app/shared/object-collection/shared/badges/access-status-badge/access-status.model.ts diff --git a/src/app/shared/object-list/access-status-badge/access-status.resource-type.ts b/src/app/shared/object-collection/shared/badges/access-status-badge/access-status.resource-type.ts similarity index 100% rename from src/app/shared/object-list/access-status-badge/access-status.resource-type.ts rename to src/app/shared/object-collection/shared/badges/access-status-badge/access-status.resource-type.ts diff --git a/src/app/shared/object-collection/shared/badges/access-status-badge/themed-access-status-badge.component.ts b/src/app/shared/object-collection/shared/badges/access-status-badge/themed-access-status-badge.component.ts new file mode 100644 index 0000000000..ad8dfd7cb0 --- /dev/null +++ b/src/app/shared/object-collection/shared/badges/access-status-badge/themed-access-status-badge.component.ts @@ -0,0 +1,30 @@ +import { Component, Input } from '@angular/core'; +import { ThemedComponent } from '../../../../theme-support/themed.component'; +import { AccessStatusBadgeComponent } from './access-status-badge.component'; +import { DSpaceObject } from '../../../../../core/shared/dspace-object.model'; + +/** + * Themed wrapper for AccessStatusBadgeComponent + */ +@Component({ + selector: 'ds-themed-access-status-badge', + styleUrls: [], + templateUrl: '../../../../theme-support/themed.component.html', +}) +export class ThemedAccessStatusBadgeComponent extends ThemedComponent { + @Input() object: DSpaceObject; + + protected inAndOutputNames: (keyof AccessStatusBadgeComponent & keyof this)[] = ['object']; + + protected getComponentName(): string { + return 'AccessStatusBadgeComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../../../themes/${themeName}/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component`); + } + + protected importUnthemedComponent(): Promise { + return import(`./access-status-badge.component`); + } +} diff --git a/src/app/shared/object-collection/shared/badges/badges.component.html b/src/app/shared/object-collection/shared/badges/badges.component.html new file mode 100644 index 0000000000..7fc08751aa --- /dev/null +++ b/src/app/shared/object-collection/shared/badges/badges.component.html @@ -0,0 +1,10 @@ + + + + +
+ + + + +
diff --git a/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.scss b/src/app/shared/object-collection/shared/badges/badges.component.scss similarity index 100% rename from src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.scss rename to src/app/shared/object-collection/shared/badges/badges.component.scss diff --git a/src/app/shared/object-collection/shared/badges/badges.component.spec.ts b/src/app/shared/object-collection/shared/badges/badges.component.spec.ts new file mode 100644 index 0000000000..9e0c277a08 --- /dev/null +++ b/src/app/shared/object-collection/shared/badges/badges.component.spec.ts @@ -0,0 +1,30 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +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', () => { + let component: BadgesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BadgesComponent ], + providers: [{provide: ThemeService, useValue: getMockThemeService()}], + schemas: [NO_ERRORS_SCHEMA] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BadgesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/object-collection/shared/badges/badges.component.ts b/src/app/shared/object-collection/shared/badges/badges.component.ts new file mode 100644 index 0000000000..c66fed35fc --- /dev/null +++ b/src/app/shared/object-collection/shared/badges/badges.component.ts @@ -0,0 +1,47 @@ +import { Component, Input } from '@angular/core'; +import { Context } from 'src/app/core/shared/context.model'; +import { DSpaceObject } from '../../../../core/shared/dspace-object.model'; + +/** + * List of MyDSpace Status Contexts + */ +const MY_DSPACE_STATUS_CONTEXTS = [ + Context.MyDSpaceArchived, + Context.MyDSpaceWorkspace, + Context.MyDSpaceWorkflow, + Context.MyDSpaceDeclined, + Context.MyDSpaceApproved, + Context.MyDSpaceWaitingController, + Context.MyDSpaceValidation +]; + +/** + * Component that renders all the badges for a listable object + */ +@Component({ + selector: 'ds-badges', + templateUrl: './badges.component.html', + styleUrls: ['./badges.component.scss'] +}) +export class BadgesComponent { + /** + * The DSpaceObject to render the badge for + */ + @Input() object: DSpaceObject; + /** + * The context that the badge is rendered in + */ + @Input() context?: Context; + + /** + * Whether or not to show the access status + */ + @Input() showAccessStatus = false; + + /** + * Returns whether or not this context is a MyDSpace status context + */ + get isMyDSpaceStatus(): boolean { + return MY_DSPACE_STATUS_CONTEXTS.includes(this.context); + } +} diff --git a/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status-type.ts b/src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type.ts similarity index 100% rename from src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status-type.ts rename to src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-item-status-type.ts diff --git a/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.html b/src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.html similarity index 50% rename from src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.html rename to src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.html index 848dd502a4..4cf93cbd1d 100644 --- a/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.html +++ b/src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.html @@ -1,5 +1,5 @@
- {{badgeContent | translate}} + {{('mydspace.status.' + badgeContent) | translate}}
diff --git a/src/themes/custom/app/shared/object-list/collection-list-element/collection-list-element.component.html b/src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.scss similarity index 100% rename from src/themes/custom/app/shared/object-list/collection-list-element/collection-list-element.component.html rename to src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.scss diff --git a/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.spec.ts b/src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.spec.ts similarity index 59% rename from src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.spec.ts rename to src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.spec.ts index 89bceea40d..65fe5b7ef1 100644 --- a/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.spec.ts +++ b/src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.spec.ts @@ -4,17 +4,17 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { of as observableOf } from 'rxjs'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; -import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model'; -import { EPersonMock } from '../../../testing/eperson.mock'; -import { MyDSpaceItemStatusComponent } from './my-dspace-item-status.component'; -import { MyDspaceItemStatusType } from './my-dspace-item-status-type'; -import { TranslateLoaderMock } from '../../../mocks/translate-loader.mock'; +import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model'; +import { PoolTask } from '../../../../../core/tasks/models/pool-task-object.model'; +import { EPersonMock } from '../../../../testing/eperson.mock'; +import { MyDSpaceStatusBadgeComponent } from './my-dspace-status-badge.component'; +import { TranslateLoaderMock } from '../../../../mocks/translate-loader.mock'; import { By } from '@angular/platform-browser'; -import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; +import { createSuccessfulRemoteDataObject } from '../../../../remote-data.utils'; +import { Context } from '../../../../../core/shared/context.model'; -let component: MyDSpaceItemStatusComponent; -let fixture: ComponentFixture; +let component: MyDSpaceStatusBadgeComponent; +let fixture: ComponentFixture; let mockResultObject: PoolTask; @@ -34,15 +34,15 @@ describe('MyDSpaceItemStatusComponent', () => { } }) ], - declarations: [MyDSpaceItemStatusComponent], + declarations: [MyDSpaceStatusBadgeComponent], schemas: [NO_ERRORS_SCHEMA] - }).overrideComponent(MyDSpaceItemStatusComponent, { + }).overrideComponent(MyDSpaceStatusBadgeComponent, { set: { changeDetection: ChangeDetectionStrategy.Default } }).compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(MyDSpaceItemStatusComponent); + fixture = TestBed.createComponent(MyDSpaceStatusBadgeComponent); component = fixture.componentInstance; }); @@ -52,37 +52,37 @@ describe('MyDSpaceItemStatusComponent', () => { }); it('should init badge content and class', () => { - component.status = MyDspaceItemStatusType.VALIDATION; + component.context = Context.MyDSpaceValidation; fixture.detectChanges(); - expect(component.badgeContent).toBe(MyDspaceItemStatusType.VALIDATION); + expect(component.badgeContent).toBe(Context.MyDSpaceValidation); expect(component.badgeClass).toBe('text-light badge badge-validation'); }); it('should init badge content and class', () => { - component.status = MyDspaceItemStatusType.WAITING_CONTROLLER; + component.context = Context.MyDSpaceWaitingController; fixture.detectChanges(); - expect(component.badgeContent).toBe(MyDspaceItemStatusType.WAITING_CONTROLLER); + expect(component.badgeContent).toBe(Context.MyDSpaceWaitingController); expect(component.badgeClass).toBe('text-light badge badge-waiting-controller'); }); it('should init badge content and class', () => { - component.status = MyDspaceItemStatusType.WORKSPACE; + component.context = Context.MyDSpaceWorkspace; fixture.detectChanges(); - expect(component.badgeContent).toBe(MyDspaceItemStatusType.WORKSPACE); + expect(component.badgeContent).toBe(Context.MyDSpaceWorkspace); expect(component.badgeClass).toBe('text-light badge badge-workspace'); }); it('should init badge content and class', () => { - component.status = MyDspaceItemStatusType.ARCHIVED; + component.context = Context.MyDSpaceArchived; fixture.detectChanges(); - expect(component.badgeContent).toBe(MyDspaceItemStatusType.ARCHIVED); + expect(component.badgeContent).toBe(Context.MyDSpaceArchived); expect(component.badgeClass).toBe('text-light badge badge-archived'); }); it('should init badge content and class', () => { - component.status = MyDspaceItemStatusType.WORKFLOW; + component.context = Context.MyDSpaceWorkflow; fixture.detectChanges(); - expect(component.badgeContent).toBe(MyDspaceItemStatusType.WORKFLOW); + expect(component.badgeContent).toBe(Context.MyDSpaceWorkflow); expect(component.badgeClass).toBe('text-light badge badge-workflow'); }); }); diff --git a/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.ts b/src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.ts similarity index 52% rename from src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.ts rename to src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.ts index 83b2656fbd..744a927812 100644 --- a/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.ts +++ b/src/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component.ts @@ -1,20 +1,20 @@ import { Component, Input, OnInit } from '@angular/core'; -import { MyDspaceItemStatusType } from './my-dspace-item-status-type'; +import { Context } from 'src/app/core/shared/context.model'; /** * This component represents a badge with mydspace item status */ @Component({ - selector: 'ds-mydspace-item-status', - styleUrls: ['./my-dspace-item-status.component.scss'], - templateUrl: './my-dspace-item-status.component.html' + selector: 'ds-my-dspace-status-badge', + styleUrls: ['./my-dspace-status-badge.component.scss'], + templateUrl: './my-dspace-status-badge.component.html' }) -export class MyDSpaceItemStatusComponent implements OnInit { +export class MyDSpaceStatusBadgeComponent implements OnInit { /** - * This mydspace item status + * This mydspace item context */ - @Input() status: MyDspaceItemStatusType; + @Input() context: Context; /** * This badge class @@ -30,22 +30,22 @@ export class MyDSpaceItemStatusComponent implements OnInit { * Initialize badge content and class */ ngOnInit() { - this.badgeContent = this.status; + this.badgeContent = this.context; this.badgeClass = 'text-light badge '; - switch (this.status) { - case MyDspaceItemStatusType.VALIDATION: + switch (this.context) { + case Context.MyDSpaceValidation: this.badgeClass += 'badge-validation'; break; - case MyDspaceItemStatusType.WAITING_CONTROLLER: + case Context.MyDSpaceWaitingController: this.badgeClass += 'badge-waiting-controller'; break; - case MyDspaceItemStatusType.WORKSPACE: + case Context.MyDSpaceWorkspace: this.badgeClass += 'badge-workspace'; break; - case MyDspaceItemStatusType.ARCHIVED: + case Context.MyDSpaceArchived: this.badgeClass += 'badge-archived'; break; - case MyDspaceItemStatusType.WORKFLOW: + case Context.MyDSpaceWorkflow: this.badgeClass += 'badge-workflow'; break; } diff --git a/src/app/shared/object-collection/shared/badges/my-dspace-status-badge/themed-my-dspace-status-badge.component.ts b/src/app/shared/object-collection/shared/badges/my-dspace-status-badge/themed-my-dspace-status-badge.component.ts new file mode 100644 index 0000000000..4c375746c8 --- /dev/null +++ b/src/app/shared/object-collection/shared/badges/my-dspace-status-badge/themed-my-dspace-status-badge.component.ts @@ -0,0 +1,30 @@ +import { Component, Input } from '@angular/core'; +import { Context } from 'src/app/core/shared/context.model'; +import { ThemedComponent } from '../../../../theme-support/themed.component'; +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 { + @Input() context: Context; + + protected inAndOutputNames: (keyof MyDSpaceStatusBadgeComponent & keyof this)[] = ['context']; + + protected getComponentName(): string { + return 'MyDSpaceStatusBadgeComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../../../themes/${themeName}/app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component`); + } + + protected importUnthemedComponent(): Promise { + return import(`./my-dspace-status-badge.component`); + } +} diff --git a/src/app/shared/object-collection/shared/badges/status-badge/status-badge.component.html b/src/app/shared/object-collection/shared/badges/status-badge/status-badge.component.html new file mode 100644 index 0000000000..c864f22afa --- /dev/null +++ b/src/app/shared/object-collection/shared/badges/status-badge/status-badge.component.html @@ -0,0 +1,6 @@ +
+ {{ "item.badge.private" | translate }} +
+
+ {{ "item.badge.withdrawn" | translate }} +
diff --git a/src/app/shared/object-collection/shared/badges/status-badge/status-badge.component.spec.ts b/src/app/shared/object-collection/shared/badges/status-badge/status-badge.component.spec.ts new file mode 100644 index 0000000000..f3115073c3 --- /dev/null +++ b/src/app/shared/object-collection/shared/badges/status-badge/status-badge.component.spec.ts @@ -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; + +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(); + }); + }); +}); diff --git a/src/app/shared/object-collection/shared/badges/status-badge/status-badge.component.ts b/src/app/shared/object-collection/shared/badges/status-badge/status-badge.component.ts new file mode 100644 index 0000000000..a52f3f6f32 --- /dev/null +++ b/src/app/shared/object-collection/shared/badges/status-badge/status-badge.component.ts @@ -0,0 +1,41 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { DSpaceObject } from '../../../../../core/shared/dspace-object.model'; +import { hasValue } from '../../../../empty.util'; + +@Component({ + selector: 'ds-status-badge', + templateUrl: './status-badge.component.html' +}) +/** + * Component rendering the status of an item as a badge + */ +export class StatusBadgeComponent implements OnInit { + + /** + * The component used to retrieve the status from + */ + @Input() object: DSpaceObject; + + /** + * Whether or not the "Private" badge should be displayed for this listable object + */ + privateBadge = false; + + /** + * Whether or not the "Withdrawn" badge should be displayed for this listable object + */ + withdrawnBadge = false; + + /** + * Initialize which badges should be visible + */ + ngOnInit(): void { + let objectAsAny = this.object as any; + if (hasValue(objectAsAny.indexableObject)) { + objectAsAny = objectAsAny.indexableObject; + } + const objectExists = hasValue(objectAsAny); + this.privateBadge = objectExists && hasValue(objectAsAny.isDiscoverable) && !objectAsAny.isDiscoverable; + this.withdrawnBadge = objectExists && hasValue(objectAsAny.isWithdrawn) && objectAsAny.isWithdrawn; + } +} diff --git a/src/app/shared/object-collection/shared/badges/status-badge/themed-status-badge.component.ts b/src/app/shared/object-collection/shared/badges/status-badge/themed-status-badge.component.ts new file mode 100644 index 0000000000..f50d029fff --- /dev/null +++ b/src/app/shared/object-collection/shared/badges/status-badge/themed-status-badge.component.ts @@ -0,0 +1,30 @@ +import { Component, Input } from '@angular/core'; +import { ThemedComponent } from '../../../../theme-support/themed.component'; +import { StatusBadgeComponent } from './status-badge.component'; +import { DSpaceObject } from '../../../../../core/shared/dspace-object.model'; + +/** + * Themed wrapper for StatusBadgeComponent + */ +@Component({ + selector: 'ds-themed-status-badge', + styleUrls: [], + templateUrl: '../../../../theme-support/themed.component.html', +}) +export class ThemedStatusBadgeComponent extends ThemedComponent { + @Input() object: DSpaceObject; + + protected inAndOutputNames: (keyof StatusBadgeComponent & keyof this)[] = ['object']; + + protected getComponentName(): string { + return 'StatusBadgeComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../../../themes/${themeName}/app/shared/object-collection/shared/badges/status-badge/status-badge.component`); + } + + protected importUnthemedComponent(): Promise { + return import(`./status-badge.component`); + } +} diff --git a/src/app/shared/object-collection/shared/badges/themed-badges.component.ts b/src/app/shared/object-collection/shared/badges/themed-badges.component.ts new file mode 100644 index 0000000000..1671b0c5b0 --- /dev/null +++ b/src/app/shared/object-collection/shared/badges/themed-badges.component.ts @@ -0,0 +1,33 @@ +import { Component, Input } from '@angular/core'; +import { BadgesComponent } from './badges.component'; +import { ThemedComponent } from '../../../theme-support/themed.component'; +import { DSpaceObject } from '../../../../core/shared/dspace-object.model'; +import { Context } from 'src/app/core/shared/context.model'; + +/** + * Themed wrapper for BadgesComponent + */ +@Component({ + selector: 'ds-themed-badges', + styleUrls: [], + templateUrl: '../../../theme-support/themed.component.html', +}) +export class ThemedBadgesComponent extends ThemedComponent { + @Input() object: DSpaceObject; + @Input() context: Context; + @Input() showAccessStatus = false; + + protected inAndOutputNames: (keyof BadgesComponent & keyof this)[] = ['object', 'context', 'showAccessStatus']; + + protected getComponentName(): string { + return 'BadgesComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../../themes/${themeName}/app/shared/object-collection/shared/badges/badges.component`); + } + + protected importUnthemedComponent(): Promise { + return import(`./badges.component`); + } +} diff --git a/src/app/shared/object-collection/shared/badges/type-badge/themed-type-badge.component.ts b/src/app/shared/object-collection/shared/badges/type-badge/themed-type-badge.component.ts new file mode 100644 index 0000000000..a8dd0ee04c --- /dev/null +++ b/src/app/shared/object-collection/shared/badges/type-badge/themed-type-badge.component.ts @@ -0,0 +1,30 @@ +import { Component, Input } from '@angular/core'; +import { ThemedComponent } from '../../../../theme-support/themed.component'; +import { TypeBadgeComponent } from './type-badge.component'; +import { DSpaceObject } from '../../../../../core/shared/dspace-object.model'; + +/** + * Themed wrapper for TypeBadgeComponent + */ +@Component({ + selector: 'ds-themed-type-badge', + styleUrls: [], + templateUrl: '../../../../theme-support/themed.component.html', +}) +export class ThemedTypeBadgeComponent extends ThemedComponent { + @Input() object: DSpaceObject; + + protected inAndOutputNames: (keyof TypeBadgeComponent & keyof this)[] = ['object']; + + protected getComponentName(): string { + return 'TypeBadgeComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../../../themes/${themeName}/app/shared/object-collection/shared/badges/type-badge/type-badge.component`); + } + + protected importUnthemedComponent(): Promise { + return import(`./type-badge.component`); + } +} diff --git a/src/app/shared/object-list/type-badge/type-badge.component.html b/src/app/shared/object-collection/shared/badges/type-badge/type-badge.component.html similarity index 66% rename from src/app/shared/object-list/type-badge/type-badge.component.html rename to src/app/shared/object-collection/shared/badges/type-badge/type-badge.component.html index 0c2bd7544e..119702c375 100644 --- a/src/app/shared/object-list/type-badge/type-badge.component.html +++ b/src/app/shared/object-collection/shared/badges/type-badge/type-badge.component.html @@ -1,3 +1,3 @@ -
+ {{ typeMessage | translate }} -
+ diff --git a/src/app/shared/object-list/type-badge/type-badge.component.spec.ts b/src/app/shared/object-collection/shared/badges/type-badge/type-badge.component.spec.ts similarity index 94% rename from src/app/shared/object-list/type-badge/type-badge.component.spec.ts rename to src/app/shared/object-collection/shared/badges/type-badge/type-badge.component.spec.ts index 9a7e22c551..87adc3761a 100644 --- a/src/app/shared/object-list/type-badge/type-badge.component.spec.ts +++ b/src/app/shared/object-collection/shared/badges/type-badge/type-badge.component.spec.ts @@ -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 { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 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 { By } from '@angular/platform-browser'; import { TypeBadgeComponent } from './type-badge.component'; diff --git a/src/app/shared/object-list/type-badge/type-badge.component.ts b/src/app/shared/object-collection/shared/badges/type-badge/type-badge.component.ts similarity index 83% rename from src/app/shared/object-list/type-badge/type-badge.component.ts rename to src/app/shared/object-collection/shared/badges/type-badge/type-badge.component.ts index 8e843af1e7..ea912063b6 100644 --- a/src/app/shared/object-list/type-badge/type-badge.component.ts +++ b/src/app/shared/object-collection/shared/badges/type-badge/type-badge.component.ts @@ -1,7 +1,7 @@ import { Component, Input } from '@angular/core'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { hasValue, isEmpty } from '../../empty.util'; -import { getResourceTypeValueFor } from '../../../core/cache/object-cache.reducer'; +import { DSpaceObject } from '../../../../../core/shared/dspace-object.model'; +import { hasValue, isEmpty } from '../../../../empty.util'; +import { getResourceTypeValueFor } from '../../../../../core/cache/object-cache.reducer'; @Component({ selector: 'ds-type-badge', diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.html b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.html index 9ed4e9eaa8..58561f0277 100644 --- a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.html +++ b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.html @@ -1,9 +1 @@ -
-
- {{ "item.badge.private" | translate }} -
-
- {{ "item.badge.withdrawn" | translate }} -
-
diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.spec.ts b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.spec.ts index ff88256f6a..e9bc294e9d 100644 --- a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.spec.ts +++ b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.spec.ts @@ -11,7 +11,6 @@ import { import { ListableObjectDirective } from './listable-object.directive'; import { TranslateModule } from '@ngx-translate/core'; import { By } from '@angular/platform-browser'; -import { Item } from '../../../../core/shared/item.model'; import { provideMockStore } from '@ngrx/store/testing'; import { ThemeService } from '../../../theme-support/theme.service'; @@ -74,64 +73,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', () => { let listableComponent; let reloadedObject: any; diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts index 6b75c59181..35950d85b9 100644 --- a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts +++ b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts @@ -2,7 +2,6 @@ import { ChangeDetectorRef, Component, ComponentRef, - ElementRef, EventEmitter, Input, OnChanges, @@ -76,37 +75,16 @@ export class ListableObjectComponentLoaderComponent implements OnInit, OnChanges */ @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 */ @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. */ @Output() contentChange = new EventEmitter(); - /** - * Whether or not the "Private" badge should be displayed for this listable object - */ - privateBadge = false; - - /** - * Whether or not the "Withdrawn" badge should be displayed for this listable object - */ - withdrawnBadge = false; - /** * Array to track all subscriptions and unsubscribe them onDestroy * @type {Array} @@ -161,8 +139,6 @@ export class ListableObjectComponentLoaderComponent implements OnInit, OnChanges private instantiateComponent(object) { - this.initBadges(); - const component = this.getComponent(object.getRenderTypes(), this.viewMode, this.context); const viewContainerRef = this.listableObjectDirective.viewContainerRef; @@ -171,10 +147,7 @@ export class ListableObjectComponentLoaderComponent implements OnInit, OnChanges this.compRef = viewContainerRef.createComponent( component, { index: 0, - injector: undefined, - projectableNodes: [ - [this.badges.nativeElement], - ] + injector: undefined } ); @@ -195,19 +168,6 @@ export class ListableObjectComponentLoaderComponent implements OnInit, OnChanges } } - /** - * Initialize which badges should be visible in the listable component - */ - initBadges() { - let objectAsAny = this.object as any; - if (hasValue(objectAsAny.indexableObject)) { - objectAsAny = objectAsAny.indexableObject; - } - const objectExistsAndValidViewMode = hasValue(objectAsAny) && this.viewMode !== ViewMode.StandalonePage; - this.privateBadge = objectExistsAndValidViewMode && hasValue(objectAsAny.isDiscoverable) && !objectAsAny.isDiscoverable; - this.withdrawnBadge = objectExistsAndValidViewMode && hasValue(objectAsAny.isWithdrawn) && objectAsAny.isWithdrawn; - } - /** * Fetch the component depending on the item's entity type, view mode and context * @returns {GenericConstructor} diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.html b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.html index 3695f4714d..9a80421fbf 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.html +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.html @@ -2,7 +2,7 @@ + [badgeContext]="badgeContext"> ; @@ -101,8 +106,8 @@ describe('ClaimedTaskSearchResultDetailElementComponent', () => { expect(component.item$.value).toEqual(item); })); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.VALIDATION); + it('should have the correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceValidation); }); it('should forward claimed-task-actions processComplete event to reloadObject event emitter', fakeAsync(() => { diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.ts index 2ee661ef38..7789f9957e 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.ts @@ -8,9 +8,6 @@ import { ViewMode } from '../../../../core/shared/view-mode.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model'; import { SearchResultDetailElementComponent } from '../search-result-detail-element.component'; -import { - 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 { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model'; import { followLink } from '../../../utils/follow-link-config.model'; @@ -19,6 +16,7 @@ import { Item } from '../../../../core/shared/item.model'; import { getFirstCompletedRemoteData } from '../../../../core/shared/operators'; import { isNotEmpty } from '../../../empty.util'; import { ObjectCacheService } from '../../../../core/cache/object-cache.service'; +import { Context } from 'src/app/core/shared/context.model'; /** * This component renders claimed task object for the search result in the detail view. @@ -43,9 +41,9 @@ export class ClaimedTaskSearchResultDetailElementComponent extends SearchResultD public showSubmitter = true; /** - * Represent item's status + * Represents the badge context */ - public status = MyDspaceItemStatusType.VALIDATION; + public badgeContext = Context.MyDSpaceValidation; /** * The workflowitem object that belonging to the result object diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html index 833281eeaf..229e36deef 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html @@ -1,7 +1,5 @@
- - - +
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts index 778e455004..ed8dc3dc96 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts @@ -6,12 +6,12 @@ import { BitstreamDataService } from '../../../../core/data/bitstream-data.servi import { Item } from '../../../../core/shared/item.model'; import { getFirstSucceededRemoteListPayload } from '../../../../core/shared/operators'; -import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { fadeInOut } from '../../../animations/fade'; import { Bitstream } from '../../../../core/shared/bitstream.model'; import { FileService } from '../../../../core/shared/file.service'; import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service'; import { SearchResult } from '../../../search/models/search-result.model'; +import { Context } from '../../../../core/shared/context.model'; /** * This component show metadata for the given item object in the detail view. @@ -23,7 +23,6 @@ import { SearchResult } from '../../../search/models/search-result.model'; animations: [fadeInOut] }) export class ItemDetailPreviewComponent { - /** * The item to display */ @@ -35,9 +34,9 @@ export class ItemDetailPreviewComponent { @Input() object: SearchResult; /** - * Represent item's status + * Represents the badge context */ - @Input() status: MyDspaceItemStatusType; + @Input() badgeContext: Context; /** * A boolean representing if to show submitter information diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.html b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.html index 2b687960ab..1c19201c63 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.html +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.html @@ -1,6 +1,6 @@ + [badgeContext]="badgeContext"> diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.spec.ts index 8d602d5eb2..4dbf9b69a1 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.spec.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.spec.ts @@ -6,8 +6,8 @@ import { of as observableOf } from 'rxjs'; import { Item } from '../../../../core/shared/item.model'; import { ItemSearchResultDetailElementComponent } from './item-search-result-detail-element.component'; -import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; +import { Context } from 'src/app/core/shared/context.model'; let component: ItemSearchResultDetailElementComponent; let fixture: ComponentFixture; @@ -68,7 +68,7 @@ describe('ItemSearchResultDetailElementComponent', () => { fixture.detectChanges(); }); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.ARCHIVED); + it('should have the correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceArchived); }); }); diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts index 27a94b0cf5..40ed72dcf1 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts @@ -3,9 +3,6 @@ import { Component } from '@angular/core'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { Item } from '../../../../core/shared/item.model'; import { SearchResultDetailElementComponent } from '../search-result-detail-element.component'; -import { - 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 { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; import { Context } from '../../../../core/shared/context.model'; @@ -24,8 +21,8 @@ import { Context } from '../../../../core/shared/context.model'; export class ItemSearchResultDetailElementComponent extends SearchResultDetailElementComponent { /** - * Represent item's status + * Represents the badge context */ - public status = MyDspaceItemStatusType.ARCHIVED; + public badgeContext = Context.MyDSpaceArchived; } diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.html b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.html index c9165b416a..d2a15b016f 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.html +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.html @@ -2,7 +2,7 @@ + [badgeContext]="badgeContext"> ; @@ -103,8 +101,8 @@ describe('PoolSearchResultDetailElementComponent', () => { expect(component.item$.value).toEqual(item); })); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.WAITING_CONTROLLER); + it('should have the correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceWaitingController); }); it('should forward pool-task-actions processCompleted event to the reloadedObject event emitter', fakeAsync(() => { diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.ts index 6dec14f9cb..c07977d77d 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.ts @@ -6,9 +6,6 @@ import { mergeMap, tap } from 'rxjs/operators'; import { RemoteData } from '../../../../core/data/remote-data'; import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model'; import { SearchResultDetailElementComponent } from '../search-result-detail-element.component'; -import { - MyDspaceItemStatusType -} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; @@ -19,6 +16,7 @@ import { Item } from '../../../../core/shared/item.model'; import { getFirstCompletedRemoteData } from '../../../../core/shared/operators'; import { isNotEmpty } from '../../../empty.util'; import { ObjectCacheService } from '../../../../core/cache/object-cache.service'; +import { Context } from 'src/app/core/shared/context.model'; /** * This component renders pool task object for the search result in the detail view. @@ -43,9 +41,9 @@ export class PoolSearchResultDetailElementComponent extends SearchResultDetailEl public showSubmitter = true; /** - * Represent item's status + * Represents the badge context */ - public status = MyDspaceItemStatusType.WAITING_CONTROLLER; + public badgeContext = Context.MyDSpaceWaitingController; /** * The workflowitem object that belonging to the result object diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.html b/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.html index 7ff1a9bf72..ddd6af453c 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.html +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.html @@ -1,6 +1,6 @@ + [badgeContext]="badgeContext"> diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.spec.ts index 536bd6d0bb..f4bc6b88fa 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.spec.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.spec.ts @@ -7,13 +7,13 @@ import { of as observableOf } from 'rxjs'; import { Item } from '../../../../core/shared/item.model'; import { WorkflowItemSearchResultDetailElementComponent } from './workflow-item-search-result-detail-element.component'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; -import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { getMockLinkService } from '../../../mocks/link-service.mock'; import { LinkService } from '../../../../core/cache/builders/link.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; +import { Context } from '../../../../core/shared/context.model'; let component: WorkflowItemSearchResultDetailElementComponent; let fixture: ComponentFixture; @@ -87,7 +87,7 @@ describe('WorkflowItemSearchResultDetailElementComponent', () => { expect(component.item).toEqual(item); }); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.WORKFLOW); + it('should have the correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceWorkflow); }); }); diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.ts index 8dc510d2aa..b5e15ebe1f 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.ts @@ -4,7 +4,6 @@ import { ViewMode } from '../../../../core/shared/view-mode.model'; import { Item } from '../../../../core/shared/item.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { SearchResultDetailElementComponent } from '../search-result-detail-element.component'; -import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { Observable } from 'rxjs'; import { RemoteData } from '../../../../core/data/remote-data'; import { find } from 'rxjs/operators'; @@ -13,6 +12,7 @@ import { listableObjectComponent } from '../../../object-collection/shared/lista import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { LinkService } from '../../../../core/cache/builders/link.service'; import { followLink } from '../../../utils/follow-link-config.model'; +import { Context } from 'src/app/core/shared/context.model'; /** * This component renders workflowitem object for the search result in the detail view. @@ -32,9 +32,9 @@ export class WorkflowItemSearchResultDetailElementComponent extends SearchResult public item: Item; /** - * Represent item's status + * Represents the badge context */ - public status = MyDspaceItemStatusType.WORKFLOW; + public badgeContext = Context.MyDSpaceWorkflow; constructor( protected linkService: LinkService diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.html b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.html index 8d4eee6ba9..4414933e02 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.html +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.html @@ -1,5 +1,5 @@ + [badgeContext]="badgeContext"> diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts index 00a20b006a..e86bfdb5e6 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts @@ -7,13 +7,13 @@ import { of as observableOf } from 'rxjs'; import { Item } from '../../../../core/shared/item.model'; import { WorkspaceItemSearchResultDetailElementComponent } from './workspace-item-search-result-detail-element.component'; import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model'; -import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { getMockLinkService } from '../../../mocks/link-service.mock'; import { LinkService } from '../../../../core/cache/builders/link.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; +import { Context } from 'src/app/core/shared/context.model'; let component: WorkspaceItemSearchResultDetailElementComponent; let fixture: ComponentFixture; @@ -87,7 +87,7 @@ describe('WorkspaceItemSearchResultDetailElementComponent', () => { expect(component.item).toEqual(item); }); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.WORKSPACE); + it('should have the correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceWorkspace); }); }); diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts index e4781fe0b2..c62ebb25d1 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts @@ -8,12 +8,12 @@ import { Item } from '../../../../core/shared/item.model'; import { RemoteData } from '../../../../core/data/remote-data'; import { isNotUndefined } from '../../../empty.util'; import { SearchResultDetailElementComponent } from '../search-result-detail-element.component'; -import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { WorkspaceItemSearchResult } from '../../../object-collection/shared/workspace-item-search-result.model'; import { followLink } from '../../../utils/follow-link-config.model'; import { LinkService } from '../../../../core/cache/builders/link.service'; +import { Context } from '../../../../core/shared/context.model'; /** * This component renders workspace item object for the search result in the detail view. @@ -33,9 +33,9 @@ export class WorkspaceItemSearchResultDetailElementComponent extends SearchResul public item: Item; /** - * Represent item's status + * Represents the badge context */ - status = MyDspaceItemStatusType.WORKSPACE; + public badgeContext = Context.MyDSpaceWorkspace; constructor( protected linkService: LinkService diff --git a/src/app/shared/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.html b/src/app/shared/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.html index b05bb4f7ba..694c6f565f 100644 --- a/src/app/shared/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.html +++ b/src/app/shared/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.html @@ -8,7 +8,7 @@
- +

{{dso.name}}

{{dso.shortDescription}}

diff --git a/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.html b/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.html index d915cdb7a4..c8f3ffca0a 100644 --- a/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.html +++ b/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.html @@ -8,7 +8,7 @@
- +

{{dso.name}}

{{dso.shortDescription}}

diff --git a/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.html b/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.html index c7e7e2d056..48fb01200b 100644 --- a/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.html +++ b/src/app/shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.html @@ -16,8 +16,7 @@
- - +

diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.html b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.html index 79e870e130..bb8e4ebfc8 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.html +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.html @@ -4,7 +4,7 @@
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.spec.ts index c05a4fc390..777a0258b0 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.spec.ts @@ -12,13 +12,13 @@ import { getMockLinkService } from '../../../../mocks/link-service.mock'; import { VarDirective } from '../../../../utils/var.directive'; import { TruncatableService } from '../../../../truncatable/truncatable.service'; import { LinkService } from '../../../../../core/cache/builders/link.service'; -import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { ClaimedApprovedTaskSearchResult } from '../../../../object-collection/shared/claimed-approved-task-search-result.model'; import { ClaimedApprovedSearchResultListElementComponent } from './claimed-approved-search-result-list-element.component'; import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; import { DSONameServiceMock } from '../../../../mocks/dso-name.service.mock'; import { APP_CONFIG } from '../../../../../../config/app-config.interface'; import { environment } from '../../../../../../environments/environment'; +import { Context } from '../../../../../core/shared/context.model'; import { TranslateModule } from '@ngx-translate/core'; let component: ClaimedApprovedSearchResultListElementComponent; @@ -104,8 +104,8 @@ describe('ClaimedApprovedSearchResultListElementComponent', () => { }); }); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.APPROVED); + it('should have the correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceApproved); }); }); diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.ts index 5dda0e44ea..fa2a112c8b 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.ts @@ -4,7 +4,6 @@ import { ClaimedApprovedTaskSearchResult } from '../../../../object-collection/s import { listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator'; import { LinkService } from '../../../../../core/cache/builders/link.service'; import { TruncatableService } from '../../../../truncatable/truncatable.service'; -import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { Observable } from 'rxjs'; import { RemoteData } from '../../../../../core/data/remote-data'; import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model'; @@ -14,6 +13,7 @@ import { ClaimedTaskSearchResult } from '../../../../object-collection/shared/cl import { ClaimedTask } from '../../../../../core/tasks/models/claimed-task-object.model'; import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; import { APP_CONFIG, AppConfig } from '../../../../../../config/app-config.interface'; +import { Context } from 'src/app/core/shared/context.model'; /** * This component renders claimed task approved object for the search result in the list view. @@ -32,9 +32,9 @@ export class ClaimedApprovedSearchResultListElementComponent extends SearchResul public showSubmitter = true; /** - * Represent item's status + * Represents the badge context */ - public status = MyDspaceItemStatusType.APPROVED; + public badgeContext = Context.MyDSpaceApproved; /** * The workflowitem object that belonging to the result object diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.html b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.html index 83fb3646c6..08f3f79a98 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.html +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.html @@ -4,7 +4,7 @@
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.spec.ts index dc06446cbc..ccd742f854 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.spec.ts @@ -14,11 +14,11 @@ import { getMockLinkService } from '../../../../mocks/link-service.mock'; import { VarDirective } from '../../../../utils/var.directive'; import { TruncatableService } from '../../../../truncatable/truncatable.service'; import { LinkService } from '../../../../../core/cache/builders/link.service'; -import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; import { DSONameServiceMock } from '../../../../mocks/dso-name.service.mock'; import { APP_CONFIG } from '../../../../../../config/app-config.interface'; import { environment } from '../../../../../../environments/environment'; +import { Context } from '../../../../../core/shared/context.model'; import { TranslateModule } from '@ngx-translate/core'; let component: ClaimedDeclinedSearchResultListElementComponent; @@ -104,8 +104,8 @@ describe('ClaimedDeclinedSearchResultListElementComponent', () => { }); }); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.DECLINED); + it('should have the correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceDeclined); }); }); diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.ts index 90f523a7fb..9ee4a25f05 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.ts @@ -5,7 +5,6 @@ import { ClaimedDeclinedTaskSearchResult } from '../../../../object-collection/s import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { LinkService } from '../../../../../core/cache/builders/link.service'; import { TruncatableService } from '../../../../truncatable/truncatable.service'; -import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { Observable } from 'rxjs'; import { RemoteData } from '../../../../../core/data/remote-data'; import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model'; @@ -15,6 +14,7 @@ import { ClaimedTaskSearchResult } from '../../../../object-collection/shared/cl import { ClaimedTask } from '../../../../../core/tasks/models/claimed-task-object.model'; import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; import { APP_CONFIG, AppConfig } from '../../../../../../config/app-config.interface'; +import { Context } from '../../../../../core/shared/context.model'; /** * This component renders claimed task declined object for the search result in the list view. @@ -33,9 +33,9 @@ export class ClaimedDeclinedSearchResultListElementComponent extends SearchResul public showSubmitter = true; /** - * Represent item's status + * Represents the badge context */ - public status = MyDspaceItemStatusType.DECLINED; + public badgeContext = Context.MyDSpaceDeclined; /** * The workflowitem object that belonging to the result object diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.html b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.html index a8ec21fa6c..715d350739 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.html +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.html @@ -4,7 +4,7 @@
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.spec.ts index 1b23def2e4..5e082ef4cf 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.spec.ts @@ -12,7 +12,6 @@ import { getMockLinkService } from '../../../../mocks/link-service.mock'; import { VarDirective } from '../../../../utils/var.directive'; import { TruncatableService } from '../../../../truncatable/truncatable.service'; import { LinkService } from '../../../../../core/cache/builders/link.service'; -import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; import { DSONameServiceMock } from '../../../../mocks/dso-name.service.mock'; import { APP_CONFIG } from '../../../../../../config/app-config.interface'; @@ -102,8 +101,4 @@ describe('ClaimedDeclinedTaskSearchResultListElementComponent', () => { }); }); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.DECLINED_TASk); - }); - }); diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.ts index 131f4b6730..a52f1a6a63 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-task-search-result/claimed-declined-task-search-result-list-element.component.ts @@ -4,7 +4,6 @@ import { ClaimedDeclinedTaskTaskSearchResult } from 'src/app/shared/object-colle import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { LinkService } from '../../../../../core/cache/builders/link.service'; import { TruncatableService } from '../../../../truncatable/truncatable.service'; -import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { Observable } from 'rxjs'; import { RemoteData } from '../../../../../core/data/remote-data'; import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model'; @@ -14,6 +13,7 @@ import { ClaimedTaskSearchResult } from '../../../../object-collection/shared/cl import { ClaimedTask } from '../../../../../core/tasks/models/claimed-task-object.model'; import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; import { APP_CONFIG, AppConfig } from '../../../../../../config/app-config.interface'; +import { Context } from '../../../../../core/shared/context.model'; /** * This component renders claimed task declined task object for the search result in the list view. @@ -32,9 +32,9 @@ export class ClaimedDeclinedTaskSearchResultListElementComponent extends SearchR public showSubmitter = true; /** - * Represent item's status + * Represents the badge context */ - public status = MyDspaceItemStatusType.DECLINED_TASk; + public badgeContext = Context.MyDSpaceDeclined; /** * The workflowitem object that belonging to the result object diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.html b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.html index 4584b12550..42af008cdd 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.html +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.html @@ -2,8 +2,8 @@ + [badgeContext]="badgeContext" + [workflowItem]="workflowitem$.value">
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts index 4ea716cc2a..c1778c1792 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts @@ -1,5 +1,12 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; -import { ComponentFixture, fakeAsync, flush, TestBed, tick, waitForAsync } from '@angular/core/testing'; +import { + ComponentFixture, + fakeAsync, + flush, + TestBed, + tick, + waitForAsync +} from '@angular/core/testing'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { of as observableOf } from 'rxjs'; @@ -7,9 +14,6 @@ import { of as observableOf } from 'rxjs'; import { Item } from '../../../../core/shared/item.model'; import { ClaimedSearchResultListElementComponent } from './claimed-search-result-list-element.component'; import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model'; -import { - MyDspaceItemStatusType -} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model'; @@ -23,6 +27,7 @@ import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; import { APP_CONFIG } from '../../../../../config/app-config.interface'; import { environment } from '../../../../../environments/environment'; import { ObjectCacheService } from '../../../../core/cache/object-cache.service'; +import { Context } from '../../../../core/shared/context.model'; let component: ClaimedSearchResultListElementComponent; let fixture: ComponentFixture; @@ -107,8 +112,8 @@ describe('ClaimedSearchResultListElementComponent', () => { expect(component.item$.value).toEqual(item); })); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.VALIDATION); + it('should have the correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceValidation); }); it('should forward claimed-task-actions processComplete event to reloadObject event emitter', fakeAsync(() => { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts index 237a5f516e..18c03d71c4 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts @@ -5,9 +5,6 @@ import { listableObjectComponent } from '../../../object-collection/shared/lista import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model'; import { LinkService } from '../../../../core/cache/builders/link.service'; import { TruncatableService } from '../../../truncatable/truncatable.service'; -import { - MyDspaceItemStatusType -} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { BehaviorSubject, EMPTY, Observable } from 'rxjs'; import { RemoteData } from '../../../../core/data/remote-data'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; @@ -23,6 +20,7 @@ import { getFirstCompletedRemoteData } from '../../../../core/shared/operators'; import { Item } from '../../../../core/shared/item.model'; import { mergeMap, tap } from 'rxjs/operators'; import { isNotEmpty } from '../../../empty.util'; +import { Context } from '../../../../core/shared/context.model'; @Component({ selector: 'ds-claimed-search-result-list-element', @@ -38,9 +36,9 @@ export class ClaimedSearchResultListElementComponent extends SearchResultListEle public showSubmitter = true; /** - * Represent item's status + * Represents the badge context */ - public status = MyDspaceItemStatusType.VALIDATION; + public badgeContext = Context.MyDSpaceValidation; /** * The item object that belonging to the result object diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html index 94426136b5..c8ef730faf 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html @@ -5,12 +5,8 @@
- - -
- - +

@@ -47,4 +43,4 @@
-
\ No newline at end of file +
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.spec.ts index aaddebd8eb..aa618add35 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.spec.ts @@ -178,8 +178,8 @@ describe('ItemListPreviewComponent', () => { fixture.detectChanges(); }); - it('should show the entity type span', () => { - const entityField = fixture.debugElement.query(By.css('ds-type-badge')); + it('should show the badges', () => { + const entityField = fixture.debugElement.query(By.css('ds-themed-badges')); expect(entityField).not.toBeNull(); }); }); diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts index 39f83bc371..3195fad0f2 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts @@ -2,12 +2,10 @@ import { Component, Inject, Input, OnInit } from '@angular/core'; import { Item } from '../../../../core/shared/item.model'; import { fadeInOut } from '../../../animations/fade'; -import { - MyDspaceItemStatusType -} from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { SearchResult } from '../../../search/models/search-result.model'; import { APP_CONFIG, AppConfig } from '../../../../../config/app-config.interface'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { Context } from 'src/app/core/shared/context.model'; import { WorkflowItem } from 'src/app/core/submission/models/workflowitem.model'; /** @@ -32,9 +30,9 @@ export class ItemListPreviewComponent implements OnInit { @Input() object: SearchResult; /** - * Represent item's status + * Represents the badge context */ - @Input() status: MyDspaceItemStatusType; + @Input() badgeContext: Context; /** * A boolean representing if to show submitter information diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/themed-item-list-preview.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/themed-item-list-preview.component.ts index 9166e42040..fc50b49d51 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/themed-item-list-preview.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/themed-item-list-preview.component.ts @@ -2,8 +2,8 @@ import { Component, Input } from '@angular/core'; import { ThemedComponent } from '../../../theme-support/themed.component'; import { ItemListPreviewComponent } from './item-list-preview.component'; import { Item } from '../../../../core/shared/item.model'; -import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { SearchResult } from '../../../search/models/search-result.model'; +import { Context } from 'src/app/core/shared/context.model'; import { WorkflowItem } from 'src/app/core/submission/models/workflowitem.model'; /** @@ -15,13 +15,13 @@ import { WorkflowItem } from 'src/app/core/submission/models/workflowitem.model' templateUrl: '../../../theme-support/themed.component.html' }) export class ThemedItemListPreviewComponent extends ThemedComponent { - protected inAndOutputNames: (keyof ItemListPreviewComponent & keyof this)[] = ['item', 'object', 'status', 'showSubmitter', 'workflowItem']; + protected inAndOutputNames: (keyof ItemListPreviewComponent & keyof this)[] = ['item', 'object', 'badgeContext', 'showSubmitter', 'workflowItem']; @Input() item: Item; @Input() object: SearchResult; - @Input() status: MyDspaceItemStatusType; + @Input() badgeContext: Context; @Input() showSubmitter: boolean; diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.html b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.html index b5e9155b81..c1f7098d5f 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.html +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.html @@ -1,6 +1,6 @@ + [badgeContext]="badgeContext">
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.spec.ts index 1dc221f2ed..a26fbaaf57 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.spec.ts @@ -1,11 +1,10 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { of as observableOf } from 'rxjs'; import { Item } from '../../../../core/shared/item.model'; -import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; import { ItemSearchResultListElementSubmissionComponent } from './item-search-result-list-element-submission.component'; import { TruncatableService } from '../../../truncatable/truncatable.service'; @@ -14,6 +13,7 @@ import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; import { APP_CONFIG } from '../../../../../config/app-config.interface'; import { environment } from '../../../../../environments/environment'; +import { Context } from '../../../../core/shared/context.model'; let component: ItemSearchResultListElementSubmissionComponent; let fixture: ComponentFixture; @@ -77,8 +77,8 @@ describe('ItemMyDSpaceResultListElementComponent', () => { fixture.detectChanges(); }); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.ARCHIVED); + it('should have correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceArchived); }); it('should forward item-actions processComplete event to reloadObject event emitter', fakeAsync(() => { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts index 26cbafc102..91c2576dee 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts @@ -1,7 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { Item } from '../../../../core/shared/item.model'; -import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { Context } from '../../../../core/shared/context.model'; @@ -21,9 +20,10 @@ import { SearchResultListElementComponent } from '../../search-result-list-eleme @listableObjectComponent(ItemSearchResult, ViewMode.ListElement, Context.Workflow) export class ItemSearchResultListElementSubmissionComponent extends SearchResultListElementComponent implements OnInit { /** - * Represent item's status + * Represents the badge context */ - public status = MyDspaceItemStatusType.ARCHIVED; + public badgeContext = Context.MyDSpaceArchived; + /** * Display thumbnails if required by configuration diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.html b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.html index d863371446..9fe6e37c9e 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.html +++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.html @@ -2,8 +2,8 @@ + [badgeContext]="badgeContext" + [workflowItem]="workflowitem$.value">
; @@ -113,8 +118,8 @@ describe('PoolSearchResultListElementComponent', () => { expect(component.item$.value).toEqual(item); })); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.WAITING_CONTROLLER); + it('should have correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceWaitingController); }); it('should forward pool-task-actions processCompleted event to the reloadedObject event emitter', fakeAsync(() => { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts index cb924af40f..b3b3bd2b5a 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts @@ -7,9 +7,6 @@ import { ViewMode } from '../../../../core/shared/view-mode.model'; import { RemoteData } from '../../../../core/data/remote-data'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model'; -import { - 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 { PoolTaskSearchResult } from '../../../object-collection/shared/pool-task-search-result.model'; import { @@ -24,6 +21,7 @@ import { ObjectCacheService } from '../../../../core/cache/object-cache.service' import { getFirstCompletedRemoteData } from '../../../../core/shared/operators'; import { Item } from '../../../../core/shared/item.model'; import { isNotEmpty } from '../../../empty.util'; +import { Context } from '../../../../core/shared/context.model'; /** * This component renders pool task object for the search result in the list view. @@ -43,9 +41,9 @@ export class PoolSearchResultListElementComponent extends SearchResultListElemen public showSubmitter = true; /** - * Represent item's status + * Represents the badge Context */ - public status = MyDspaceItemStatusType.WAITING_CONTROLLER; + public badgeContext = Context.MyDSpaceWaitingController; /** * The item object that belonging to the result object diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.html b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.html index c3db054f8c..ffc3df53f8 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.html +++ b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.html @@ -1,12 +1,8 @@ -
-
- -
-
+ [object]="derivedSearchResult$ | async" [linkType]="LinkTypes.None" + [context]="badgeContext">
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.spec.ts index 576b103ea7..52a13a69e1 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.spec.ts @@ -10,7 +10,6 @@ import { ItemDataService } from '../../../../core/data/item-data.service'; import { Item } from '../../../../core/shared/item.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { getMockLinkService } from '../../../mocks/link-service.mock'; -import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { TruncatableService } from '../../../truncatable/truncatable.service'; @@ -19,6 +18,7 @@ import { By } from '@angular/platform-browser'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; import { APP_CONFIG } from '../../../../../config/app-config.interface'; +import { Context } from '../../../../core/shared/context.model'; let component: WorkflowItemSearchResultListElementComponent; let fixture: ComponentFixture; @@ -105,8 +105,8 @@ describe('WorkflowItemSearchResultListElementComponent', () => { }); }); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.WORKFLOW); + it('should have the correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceWorkflow); }); it('should forward workflowitem-actions processCompleted event to the reloadedObject event emitter', fakeAsync(() => { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts index 11d4e18137..eab8a34f2f 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts @@ -8,7 +8,6 @@ import { Item } from '../../../../core/shared/item.model'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; 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 { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { TruncatableService } from '../../../truncatable/truncatable.service'; import { followLink } from '../../../utils/follow-link-config.model'; @@ -18,6 +17,7 @@ import { APP_CONFIG, AppConfig } from '../../../../../config/app-config.interfac import { getFirstSucceededRemoteDataPayload } from '../../../../core/shared/operators'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; import { CollectionElementLinkType } from '../../../object-collection/collection-element-link.type'; +import { Context } from '../../../../core/shared/context.model'; /** * This component renders workflowitem object for the search result in the list view. @@ -40,9 +40,9 @@ export class WorkflowItemSearchResultListElementComponent extends SearchResultLi derivedSearchResult$: Observable; /** - * Represent item's status + * Represents the badge context */ - public status = MyDspaceItemStatusType.WORKFLOW; + public badgeContext = Context.MyDSpaceWorkflow; /** * Display thumbnails if required by configuration diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.html b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.html index 4e86132df6..724db2892d 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.html +++ b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.html @@ -1,12 +1,8 @@ -
-
- -
-
+ [object]="derivedSearchResult$ | async" [linkType]="LinkTypes.None" + [context]="badgeContext">
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts index 2d64b1b581..54344bb879 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts @@ -1,5 +1,5 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; +import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { of as observableOf } from 'rxjs'; @@ -10,7 +10,6 @@ import { ItemDataService } from '../../../../core/data/item-data.service'; import { Item } from '../../../../core/shared/item.model'; import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model'; import { getMockLinkService } from '../../../mocks/link-service.mock'; -import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { TruncatableService } from '../../../truncatable/truncatable.service'; @@ -19,6 +18,7 @@ import { By } from '@angular/platform-browser'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; import { APP_CONFIG } from '../../../../../config/app-config.interface'; +import { Context } from '../../../../core/shared/context.model'; let component: WorkspaceItemSearchResultListElementComponent; let fixture: ComponentFixture; @@ -104,8 +104,8 @@ describe('WorkspaceItemSearchResultListElementComponent', () => { }); }); - it('should have properly status', () => { - expect(component.status).toEqual(MyDspaceItemStatusType.WORKSPACE); + it('should have correct badge context', () => { + expect(component.badgeContext).toEqual(Context.MyDSpaceWorkspace); }); it('should forward workspaceitem-actions processCompleted event to the reloadedObject event emitter', fakeAsync(() => { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts index 08ac896035..f08474cb34 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts @@ -7,7 +7,6 @@ import { Item } from '../../../../core/shared/item.model'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model'; 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 { WorkspaceItemSearchResult } from '../../../object-collection/shared/workspace-item-search-result.model'; import { TruncatableService } from '../../../truncatable/truncatable.service'; import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component'; @@ -18,6 +17,7 @@ import { map } from 'rxjs/operators'; import { getFirstSucceededRemoteDataPayload } from '../../../../core/shared/operators'; import { CollectionElementLinkType } from '../../../object-collection/collection-element-link.type'; import { followLink } from '../../../utils/follow-link-config.model'; +import { Context } from '../../../../core/shared/context.model'; /** * This component renders workspaceitem object for the search result in the list view. @@ -40,9 +40,9 @@ export class WorkspaceItemSearchResultListElementComponent extends SearchResult derivedSearchResult$: Observable; /** - * Represent item's status + * Represents the badge context */ - status = MyDspaceItemStatusType.WORKSPACE; + public badgeContext = Context.MyDSpaceWorkspace; /** * Display thumbnails if required by configuration diff --git a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.html b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.html index 83a8f4fdfa..6856c63cce 100644 --- a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.html +++ b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.html @@ -1,7 +1,7 @@
- +
diff --git a/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.html b/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.html index 22be357a53..037b62e736 100644 --- a/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.html +++ b/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.html @@ -1,7 +1,7 @@
- +
diff --git a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html index 2b643aed9d..88d6ab6e07 100644 --- a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html +++ b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html @@ -12,8 +12,7 @@
- - +
diff --git a/src/app/shared/search/search-filters/themed-search-filters.component.ts b/src/app/shared/search/search-filters/themed-search-filters.component.ts new file mode 100644 index 0000000000..a9a9c10e51 --- /dev/null +++ b/src/app/shared/search/search-filters/themed-search-filters.component.ts @@ -0,0 +1,38 @@ +import { Component, Input } from '@angular/core'; +import { ThemedComponent } from '../../theme-support/themed.component'; +import { SearchFiltersComponent } from './search-filters.component'; +import { Observable } from 'rxjs/internal/Observable'; +import { RemoteData } from '../../../core/data/remote-data'; +import { SearchFilterConfig } from '../models/search-filter-config.model'; + +/** + * Themed wrapper for SearchFiltersComponent + */ +@Component({ + selector: 'ds-themed-search-filters', + styleUrls: [], + templateUrl: '../../theme-support/themed.component.html', +}) +export class ThemedSearchFiltersComponent extends ThemedComponent { + + @Input() currentConfiguration; + @Input() currentScope: string; + @Input() inPlaceSearch; + @Input() refreshFilters: Observable; + @Input() filters: Observable>; + + protected inAndOutputNames: (keyof SearchFiltersComponent & keyof this)[] = [ + 'filters', 'currentConfiguration', 'currentScope', 'inPlaceSearch', 'refreshFilters']; + + protected getComponentName(): string { + return 'SearchFiltersComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../themes/${themeName}/app/shared/search/search-filters/search-filters.component`); + } + + protected importUnthemedComponent(): Promise { + return import('./search-filters.component'); + } +} diff --git a/src/app/shared/search/search-sidebar/search-sidebar.component.html b/src/app/shared/search/search-sidebar/search-sidebar.component.html index 59d84ee383..f489de5d28 100644 --- a/src/app/shared/search/search-sidebar/search-sidebar.component.html +++ b/src/app/shared/search/search-sidebar/search-sidebar.component.html @@ -17,11 +17,11 @@ [defaultConfiguration]="configuration" [inPlaceSearch]="inPlaceSearch" (changeConfiguration)="changeConfiguration.emit($event)"> - + [inPlaceSearch]="inPlaceSearch">
diff --git a/src/app/shared/search/search-sidebar/themed-search-sidebar.component.ts b/src/app/shared/search/search-sidebar/themed-search-sidebar.component.ts new file mode 100644 index 0000000000..935f797532 --- /dev/null +++ b/src/app/shared/search/search-sidebar/themed-search-sidebar.component.ts @@ -0,0 +1,54 @@ +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { ThemedComponent } from '../../theme-support/themed.component'; +import { SearchSidebarComponent } from './search-sidebar.component'; +import { SearchConfigurationOption } from '../search-switch-configuration/search-configuration-option.model'; +import { SortOptions } from '../../../core/cache/models/sort-options.model'; +import { ViewMode } from '../../../core/shared/view-mode.model'; +import { PaginatedSearchOptions } from '../models/paginated-search-options.model'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { RemoteData } from '../../../core/data/remote-data'; +import { SearchFilterConfig } from '../models/search-filter-config.model'; + +/** + * Themed wrapper for SearchSidebarComponent + */ +@Component({ + selector: 'ds-themed-search-sidebar', + styleUrls: [], + templateUrl: '../../theme-support/themed.component.html', +}) +export class ThemedSearchSidebarComponent extends ThemedComponent { + + @Input() configuration; + @Input() configurationList: SearchConfigurationOption[]; + @Input() currentScope: string; + @Input() currentSortOption: SortOptions; + @Input() filters: Observable>; + @Input() resultCount; + @Input() viewModeList: ViewMode[]; + @Input() showViewModes = true; + @Input() inPlaceSearch; + @Input() searchOptions: PaginatedSearchOptions; + @Input() sortOptionsList: SortOptions[]; + @Input() refreshFilters: BehaviorSubject; + @Output() toggleSidebar = new EventEmitter(); + @Output() changeConfiguration: EventEmitter = new EventEmitter(); + @Output() changeViewMode: EventEmitter = new EventEmitter(); + + protected inAndOutputNames: (keyof SearchSidebarComponent & keyof this)[] = [ + 'configuration', 'configurationList', 'currentScope', 'currentSortOption', + 'resultCount', 'filters', 'viewModeList', 'showViewModes', 'inPlaceSearch', + 'searchOptions', 'sortOptionsList', 'refreshFilters', 'toggleSidebar', 'changeConfiguration', 'changeViewMode']; + + protected getComponentName(): string { + return 'SearchSidebarComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../themes/${themeName}/app/shared/search/search-sidebar/search-sidebar.component`); + } + + protected importUnthemedComponent(): Promise { + return import('./search-sidebar.component'); + } +} diff --git a/src/app/shared/search/search.component.html b/src/app/shared/search/search.component.html index ed834c65bc..e7523cd277 100644 --- a/src/app/shared/search/search.component.html +++ b/src/app/shared/search/search.component.html @@ -46,7 +46,7 @@ - - + - + diff --git a/src/app/shared/search/search.module.ts b/src/app/shared/search/search.module.ts index 713b9925a6..69500999a8 100644 --- a/src/app/shared/search/search.module.ts +++ b/src/app/shared/search/search.module.ts @@ -32,6 +32,8 @@ import { ThemedSearchComponent } from './themed-search.component'; import { ThemedSearchResultsComponent } from './search-results/themed-search-results.component'; import { ThemedSearchSettingsComponent } from './search-settings/themed-search-settings.component'; import { NouisliderModule } from 'ng2-nouislider'; +import { ThemedSearchFiltersComponent } from './search-filters/themed-search-filters.component'; +import { ThemedSearchSidebarComponent } from './search-sidebar/themed-search-sidebar.component'; const COMPONENTS = [ SearchComponent, @@ -58,6 +60,8 @@ const COMPONENTS = [ ThemedConfigurationSearchPageComponent, ThemedSearchResultsComponent, ThemedSearchSettingsComponent, + ThemedSearchFiltersComponent, + ThemedSearchSidebarComponent, ]; const ENTRY_COMPONENTS = [ diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index dafbcb703d..54d3cb2e66 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -164,8 +164,8 @@ import { DsoInputSuggestionsComponent } 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 { TypeBadgeComponent } from './object-list/type-badge/type-badge.component'; -import { AccessStatusBadgeComponent } from './object-list/access-status-badge/access-status-badge.component'; +import { TypeBadgeComponent } from './object-collection/shared/badges/type-badge/type-badge.component'; +import { AccessStatusBadgeComponent } from './object-collection/shared/badges/access-status-badge/access-status-badge.component'; import { MetadataRepresentationLoaderComponent } from './metadata-representation/metadata-representation-loader.component'; @@ -251,6 +251,16 @@ import { } from './object-list/listable-notification-object/listable-notification-object.component'; import { ThemedCollectionDropdownComponent } from './collection-dropdown/themed-collection-dropdown.component'; import { MetadataFieldWrapperComponent } from './metadata-field-wrapper/metadata-field-wrapper.component'; + +import { StatusBadgeComponent } from './object-collection/shared/badges/status-badge/status-badge.component'; +import { BadgesComponent } from './object-collection/shared/badges/badges.component'; +import { ThemedBadgesComponent } from './object-collection/shared/badges/themed-badges.component'; +import { ThemedStatusBadgeComponent } from './object-collection/shared/badges/status-badge/themed-status-badge.component'; +import { ThemedTypeBadgeComponent } from './object-collection/shared/badges/type-badge/themed-type-badge.component'; +import { ThemedMyDSpaceStatusBadgeComponent } from './object-collection/shared/badges/my-dspace-status-badge/themed-my-dspace-status-badge.component'; +import { ThemedAccessStatusBadgeComponent } from './object-collection/shared/badges/access-status-badge/themed-access-status-badge.component'; +import { MyDSpaceStatusBadgeComponent } from './object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component'; + import { ShortNumberPipe } from './utils/short-number.pipe'; import { LogInExternalProviderComponent @@ -338,6 +348,8 @@ const COMPONENTS = [ PageWithSidebarComponent, SidebarDropdownComponent, ThumbnailComponent, + MyDSpaceStatusBadgeComponent, + ThemedMyDSpaceStatusBadgeComponent, ViewModeSwitchComponent, TruncatableComponent, TruncatablePartComponent, @@ -353,6 +365,13 @@ const COMPONENTS = [ ComcolMetadataComponent, TypeBadgeComponent, AccessStatusBadgeComponent, + ThemedAccessStatusBadgeComponent, + ThemedTypeBadgeComponent, + StatusBadgeComponent, + ThemedStatusBadgeComponent, + BadgesComponent, + ThemedBadgesComponent, + ItemSelectComponent, CollectionSelectComponent, MetadataRepresentationLoaderComponent, diff --git a/src/app/shared/subscriptions/subscription-modal/subscription-modal.component.html b/src/app/shared/subscriptions/subscription-modal/subscription-modal.component.html index a71498f002..ca5ec60406 100644 --- a/src/app/shared/subscriptions/subscription-modal/subscription-modal.component.html +++ b/src/app/shared/subscriptions/subscription-modal/subscription-modal.component.html @@ -7,7 +7,7 @@