From 258b1228f317e8392758efb5f0211b6df0a209d2 Mon Sep 17 00:00:00 2001 From: lotte Date: Thu, 2 Apr 2020 17:05:46 +0200 Subject: [PATCH] replaced wfi components by task components that render wfi's --- resources/i18n/en.json5 | 14 ++ src/app/+admin/admin-routing.module.ts | 10 +- .../admin-sidebar/admin-sidebar.component.ts | 2 +- .../admin-workflow-page.component.html | 4 +- ...-search-result-grid-element.component.html | 15 --- ...-search-result-grid-element.component.html | 6 + ...search-result-grid-element.component.scss} | 0 ...arch-result-grid-element.component.spec.ts | 121 ++++++++++++++++++ ...ow-search-result-grid-element.component.ts | 45 +++++++ ...admin-workflow-grid-element.component.html | 12 ++ ...dmin-workflow-grid-element.component.scss} | 0 ...n-workflow-grid-element.component.spec.ts} | 10 +- ...-admin-workflow-grid-element.component.ts} | 21 ++- ...-search-result-list-element.component.html | 12 -- ...ow-search-result-list-element.component.ts | 20 --- ...-search-result-list-element.component.html | 6 + ...-search-result-list-element.component.scss | 0 ...arch-result-list-element.component.spec.ts | 101 +++++++++++++++ ...ow-search-result-list-element.component.ts | 29 +++++ ...admin-workflow-list-element.component.html | 9 ++ ...admin-workflow-list-element.component.scss | 0 ...n-workflow-list-element.component.spec.ts} | 10 +- ...m-admin-workflow-list-element.component.ts | 19 +++ ...orkflow-search-result-actions.component.ts | 46 ------- ...tem-admin-workflow-actions.component.html} | 0 ...tem-admin-workflow-actions.component.scss} | 0 ...-admin-workflow-actions.component.spec.ts} | 2 +- ...w-item-admin-workflow-actions.component.ts | 39 ++++++ src/app/+admin/admin.module.ts | 26 ++-- .../workflow-item-delete.component.html | 1 + .../workflow-item-delete.component.scss | 0 .../workflow-item-delete.component.spec.ts | 25 ++++ .../workflow-item-delete.component.ts | 16 +++ .../workflowitems-edit-page.module.ts | 3 +- 34 files changed, 491 insertions(+), 133 deletions(-) delete mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.html create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.html rename src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/{item-search-result/item-admin-workflow-search-result-grid-element.component.scss => pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.scss} (100%) create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.spec.ts create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.ts create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.html rename src/app/+admin/admin-workflow-page/admin-workflow-search-results/{admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.scss => admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.scss} (100%) rename src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/{item-search-result/item-admin-workflow-search-result-grid-element.component.spec.ts => workflow-item/workflow-item-admin-workflow-grid-element.component.spec.ts} (90%) rename src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/{item-search-result/item-admin-workflow-search-result-grid-element.component.ts => workflow-item/workflow-item-admin-workflow-grid-element.component.ts} (76%) delete mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.html delete mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.ts create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.html create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.scss create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.spec.ts create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.ts create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.html create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.scss rename src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/{item-search-result/item-admin-workflow-search-result-list-element.component.spec.ts => workflow-item/workflow-item-admin-workflow-list-element.component.spec.ts} (87%) create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.ts delete mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component.ts rename src/app/+admin/admin-workflow-page/admin-workflow-search-results/{item-admin-workflow-search-result-actions.component.html => workflow-item-admin-workflow-actions.component.html} (100%) rename src/app/+admin/admin-workflow-page/admin-workflow-search-results/{item-admin-workflow-search-result-actions.component.scss => workflow-item-admin-workflow-actions.component.scss} (100%) rename src/app/+admin/admin-workflow-page/admin-workflow-search-results/{item-admin-workflow-search-result-actions.component.spec.ts => workflow-item-admin-workflow-actions.component.spec.ts} (98%) create mode 100644 src/app/+admin/admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component.ts create mode 100644 src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.html create mode 100644 src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.scss create mode 100644 src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.spec.ts create mode 100644 src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.ts diff --git a/resources/i18n/en.json5 b/resources/i18n/en.json5 index 7b814fd5bc..f874a02bdf 100644 --- a/resources/i18n/en.json5 +++ b/resources/i18n/en.json5 @@ -262,6 +262,14 @@ + + "admin.workflow.breadcrumbs": "Admin Workflow", + + "admin.workflow.title": "Admin Workflow", + + + + "auth.errors.invalid-user": "Invalid email address or password.", "auth.messages.expired": "Your session has expired. Please log in again.", @@ -1385,6 +1393,8 @@ "menu.section.toggle.statistics_task": "Toggle Statistics Task section", + "menu.section.workflow": "Active Workflows", + "mydspace.description": "", @@ -2213,5 +2223,9 @@ "virtual-metadata.delete-item.modal-head": "The virtual metadata of this relation", "virtual-metadata.delete-relationship.modal-head": "Select the items for which you want to save the virtual metadata as real metadata", + + "workflowAdmin.search.results.head": "Active Workflows", + + "workflowAdmin.search.results.head": "Active Workflows", } diff --git a/src/app/+admin/admin-routing.module.ts b/src/app/+admin/admin-routing.module.ts index c3732c1ba7..5cb10c38ba 100644 --- a/src/app/+admin/admin-routing.module.ts +++ b/src/app/+admin/admin-routing.module.ts @@ -28,13 +28,15 @@ export function getRegistriesModulePath() { { path: 'search', resolve: { breadcrumb: I18nBreadcrumbResolver }, - component: AdminWorkflowPageComponent, - data: { title: 'admin.workflow.title', breadcrumbKey: 'admin.workflow' } + component: AdminSearchPageComponent, + data: { title: 'admin.search.title', breadcrumbKey: 'admin.search' } }, { path: 'workflow', - component: AdminSearchPageComponent, - } + resolve: { breadcrumb: I18nBreadcrumbResolver }, + component: AdminWorkflowPageComponent, + data: { title: 'admin.workflow.title', breadcrumbKey: 'admin.workflow' } + }, ]) ], providers: [ diff --git a/src/app/+admin/admin-sidebar/admin-sidebar.component.ts b/src/app/+admin/admin-sidebar/admin-sidebar.component.ts index e86287f85d..e35a63342a 100644 --- a/src/app/+admin/admin-sidebar/admin-sidebar.component.ts +++ b/src/app/+admin/admin-sidebar/admin-sidebar.component.ts @@ -447,7 +447,7 @@ export class AdminSidebarComponent extends MenuComponent implements OnInit { model: { type: MenuItemType.LINK, text: 'menu.section.workflow', - link: '/admin/worklow' + link: '/admin/workflow' } as LinkMenuItemModel, icon: 'user-check', index: 10 diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-page.component.html b/src/app/+admin/admin-workflow-page/admin-workflow-page.component.html index 47906405d9..404af131d1 100644 --- a/src/app/+admin/admin-workflow-page/admin-workflow-page.component.html +++ b/src/app/+admin/admin-workflow-page/admin-workflow-page.component.html @@ -1,3 +1 @@ -BLABLABALAB - - + diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.html b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.html deleted file mode 100644 index 1b8daaaff0..0000000000 --- a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.html +++ /dev/null @@ -1,15 +0,0 @@ - - -
-
- {{ "admin.search.item.private" | translate }} -
-
- {{ "admin.search.item.withdrawn" | translate }} -
-
- diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.html b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.html new file mode 100644 index 0000000000..c73a5f5a02 --- /dev/null +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.html @@ -0,0 +1,6 @@ + diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.scss b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.scss similarity index 100% rename from src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.scss rename to src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.scss diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.spec.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.spec.ts new file mode 100644 index 0000000000..33881dfe70 --- /dev/null +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.spec.ts @@ -0,0 +1,121 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NO_ERRORS_SCHEMA } from '@angular/core'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { TranslateModule } from '@ngx-translate/core'; +import { Observable } from 'rxjs/internal/Observable'; +import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service'; +import { RemoteData } from '../../../../../core/data/remote-data'; +import { Bitstream } from '../../../../../core/shared/bitstream.model'; +import { Item } from '../../../../../core/shared/item.model'; +import { mockTruncatableService } from '../../../../../shared/mocks/mock-trucatable.service'; +import { SharedModule } from '../../../../../shared/shared.module'; +import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/testing/utils'; +import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; +import { CollectionElementLinkType } from '../../../../../shared/object-collection/collection-element-link.type'; +import { ViewMode } from '../../../../../core/shared/view-mode.model'; +import { By } from '@angular/platform-browser'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { PoolTaskAdminWorkflowSearchResultGridElementComponent } from './pool-task-admin-workflow-search-result-grid-element.component'; + +describe('ItemAdminSearchResultGridElementComponent', () => { + let component: PoolTaskAdminWorkflowSearchResultGridElementComponent; + let fixture: ComponentFixture; + let id; + let searchResult; + + const mockBitstreamDataService = { + getThumbnailFor(item: Item): Observable> { + return createSuccessfulRemoteDataObject$(new Bitstream()); + } + }; + + function init() { + id = '780b2588-bda5-4112-a1cd-0b15000a5339'; + searchResult = new ItemSearchResult(); + searchResult.indexableObject = new Item(); + searchResult.indexableObject.uuid = id; + } + + beforeEach(async(() => { + init(); + TestBed.configureTestingModule( + { + declarations: [PoolTaskAdminWorkflowSearchResultGridElementComponent], + imports: [ + NoopAnimationsModule, + TranslateModule.forRoot(), + RouterTestingModule.withRoutes([]), + SharedModule + ], + providers: [ + { provide: TruncatableService, useValue: mockTruncatableService }, + { provide: BitstreamDataService, useValue: mockBitstreamDataService }, + ], + schemas: [NO_ERRORS_SCHEMA] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PoolTaskAdminWorkflowSearchResultGridElementComponent); + component = fixture.componentInstance; + component.object = searchResult; + component.linkTypes = CollectionElementLinkType; + component.index = 0; + component.viewModes = ViewMode; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('when the item is not withdrawn', () => { + beforeEach(() => { + component.dso.isWithdrawn = false; + 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(() => { + component.dso.isWithdrawn = true; + 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(() => { + component.dso.isDiscoverable = true; + 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(() => { + component.dso.isDiscoverable = false; + 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/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.ts new file mode 100644 index 0000000000..e386ec45ae --- /dev/null +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component.ts @@ -0,0 +1,45 @@ +import { Component, ComponentFactoryResolver, ElementRef, OnInit, ViewChild, ViewContainerRef } from '@angular/core'; +import { Item } from '../../../../../core/shared/item.model'; +import { ViewMode } from '../../../../../core/shared/view-mode.model'; +import { getListableObjectComponent, listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; +import { Context } from '../../../../../core/shared/context.model'; +import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { getItemEditPath } from '../../../../../+item-page/item-page-routing.module'; +import { URLCombiner } from '../../../../../core/url-combiner/url-combiner'; +import { + ITEM_EDIT_DELETE_PATH, + ITEM_EDIT_MOVE_PATH, + ITEM_EDIT_PRIVATE_PATH, + ITEM_EDIT_PUBLIC_PATH, + ITEM_EDIT_REINSTATE_PATH, + ITEM_EDIT_WITHDRAW_PATH +} from '../../../../../+item-page/edit-item-page/edit-item-page.routing.module'; +import { SearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/search-result-grid-element.component'; +import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; +import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service'; +import { GenericConstructor } from '../../../../../core/shared/generic-constructor'; +import { ListableObjectDirective } from '../../../../../shared/object-collection/shared/listable-object/listable-object.directive'; +import { PoolTaskSearchResult } from '../../../../../shared/object-collection/shared/pool-task-search-result.model'; +import { PoolTask } from '../../../../../core/tasks/models/pool-task-object.model'; +import { Observable } from 'rxjs'; +import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model'; +import { RemoteData } from '../../../../../core/data/remote-data'; +import { getAllSucceededRemoteData, getRemoteDataPayload } from '../../../../../core/shared/operators'; + +@listableObjectComponent(PoolTaskSearchResult, ViewMode.GridElement, Context.AdminWorkflowSearch) +@Component({ + selector: 'ds-pool-task-admin-workflow-search-result-grid-element', + styleUrls: ['./pool-task-admin-workflow-search-result-grid-element.component.scss'], + templateUrl: './pool-task-admin-workflow-search-result-grid-element.component.html' +}) +/** + * The component for displaying a list element for an pool task search result on the admin search page + */ +export class PoolTaskAdminWorkflowSearchResultGridElementComponent extends SearchResultGridElementComponent implements OnInit { + public wfi$: Observable; + + ngOnInit(): void { + super.ngOnInit(); + this.wfi$ = (this.dso.workflowitem as Observable>).pipe(getAllSucceededRemoteData(), getRemoteDataPayload()); + } +} diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.html b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.html new file mode 100644 index 0000000000..6f940d097e --- /dev/null +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.html @@ -0,0 +1,12 @@ + + +
+
+ {{ "admin.workflow.item.workflow" | translate }} +
+
+
    +
  • + +
  • +
diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.scss b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.scss similarity index 100% rename from src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.scss rename to src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.scss diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.spec.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.spec.ts similarity index 90% rename from src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.spec.ts rename to src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.spec.ts index 7036e5c5ac..61bcdde6cf 100644 --- a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.spec.ts +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.spec.ts @@ -17,11 +17,11 @@ import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { By } from '@angular/platform-browser'; import { RouterTestingModule } from '@angular/router/testing'; import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; -import { ItemAdminWorkflowSearchResultGridElementComponent } from './item-admin-workflow-search-result-grid-element.component'; +import { WorkflowItemAdminWorkflowGridElementComponent } from './workflow-item-admin-workflow-grid-element.component'; describe('ItemAdminSearchResultGridElementComponent', () => { - let component: ItemAdminWorkflowSearchResultGridElementComponent; - let fixture: ComponentFixture; + let component: WorkflowItemAdminWorkflowGridElementComponent; + let fixture: ComponentFixture; let id; let searchResult; @@ -42,7 +42,7 @@ describe('ItemAdminSearchResultGridElementComponent', () => { init(); TestBed.configureTestingModule( { - declarations: [ItemAdminWorkflowSearchResultGridElementComponent], + declarations: [WorkflowItemAdminWorkflowGridElementComponent], imports: [ NoopAnimationsModule, TranslateModule.forRoot(), @@ -59,7 +59,7 @@ describe('ItemAdminSearchResultGridElementComponent', () => { })); beforeEach(() => { - fixture = TestBed.createComponent(ItemAdminWorkflowSearchResultGridElementComponent); + fixture = TestBed.createComponent(WorkflowItemAdminWorkflowGridElementComponent); component = fixture.componentInstance; component.object = searchResult; component.linkTypes = CollectionElementLinkType; diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.ts similarity index 76% rename from src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.ts rename to src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.ts index 9b3ed12a24..f00dc4fdb4 100644 --- a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component.ts +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component.ts @@ -19,33 +19,32 @@ import { TruncatableService } from '../../../../../shared/truncatable/truncatabl import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service'; import { GenericConstructor } from '../../../../../core/shared/generic-constructor'; import { ListableObjectDirective } from '../../../../../shared/object-collection/shared/listable-object/listable-object.directive'; +import { WorkflowItemSearchResult } from '../../../../../shared/object-collection/shared/workflow-item-search-result.model'; +import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model'; +import { AbstractListableElementComponent } from '../../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; @listableObjectComponent(ItemSearchResult, ViewMode.GridElement, Context.AdminWorkflowSearch) @Component({ - selector: 'ds-item-admin-workflow-search-result-grid-element', - styleUrls: ['./item-admin-workflow-search-result-grid-element.component.scss'], - templateUrl: './item-admin-workflow-search-result-grid-element.component.html' + selector: 'ds-workflow-item-admin-workflow-grid-element', + styleUrls: ['./workflow-item-admin-workflow-grid-element.component.scss'], + templateUrl: './workflow-item-admin-workflow-grid-element.component.html' }) /** - * The component for displaying a list element for an item search result on the admin search page + * The component for displaying a list element for an workflow item on the admin search page */ -export class ItemAdminWorkflowSearchResultGridElementComponent extends SearchResultGridElementComponent implements OnInit { +export class WorkflowItemAdminWorkflowGridElementComponent extends AbstractListableElementComponent { @ViewChild(ListableObjectDirective, { static: true }) listableObjectDirective: ListableObjectDirective; @ViewChild('badges', { static: true }) badges: ElementRef; @ViewChild('buttons', { static: true }) buttons: ElementRef; - constructor(protected truncatableService: TruncatableService, - protected bitstreamDataService: BitstreamDataService, - private componentFactoryResolver: ComponentFactoryResolver - ) { - super(truncatableService, bitstreamDataService); + constructor(private componentFactoryResolver: ComponentFactoryResolver) { + super(); } /** * Setup the dynamic child component */ ngOnInit(): void { - super.ngOnInit(); const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.getComponent()); const viewContainerRef = this.listableObjectDirective.viewContainerRef; diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.html b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.html deleted file mode 100644 index 14e6c1bcd1..0000000000 --- a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.html +++ /dev/null @@ -1,12 +0,0 @@ -
- {{ "admin.search.item.private" | translate }} -
-
- {{ "admin.search.item.withdrawn" | translate }} -
- - diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.ts deleted file mode 100644 index 9550028919..0000000000 --- a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Component } from '@angular/core'; -import { Item } from '../../../../../core/shared/item.model'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; -import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; -import { Context } from '../../../../../core/shared/context.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; -import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component'; - -@listableObjectComponent(ItemSearchResult, ViewMode.ListElement, Context.AdminWorkflowSearch) -@Component({ - selector: 'ds-item-admin-workflow-search-result-list-element', - styleUrls: ['./item-admin-workflow-search-result-list-element.component.scss'], - templateUrl: './item-admin-workflow-search-result-list-element.component.html' -}) -/** - * The component for displaying a list element for an item search result on the admin search page - */ -export class ItemAdminWorkflowSearchResultListElementComponent extends SearchResultListElementComponent { - -} diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.html b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.html new file mode 100644 index 0000000000..e894eedb94 --- /dev/null +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.html @@ -0,0 +1,6 @@ + diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.scss b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.spec.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.spec.ts new file mode 100644 index 0000000000..63f36ea033 --- /dev/null +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.spec.ts @@ -0,0 +1,101 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NO_ERRORS_SCHEMA } from '@angular/core'; +import { TranslateModule } from '@ngx-translate/core'; +import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; +import { CollectionElementLinkType } from '../../../../../shared/object-collection/collection-element-link.type'; +import { ViewMode } from '../../../../../core/shared/view-mode.model'; +import { By } from '@angular/platform-browser'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { PoolTaskAdminWorkflowSearchResultListElementComponent } from './pool-task-admin-workflow-search-result-list-element.component'; +import { Item } from '../../../../../core/shared/item.model'; + +describe('ItemAdminSearchResultListElementComponent', () => { + let component: PoolTaskAdminWorkflowSearchResultListElementComponent; + let fixture: ComponentFixture; + let id; + let searchResult; + + function init() { + id = '780b2588-bda5-4112-a1cd-0b15000a5339'; + searchResult = new ItemSearchResult(); + searchResult.indexableObject = new Item(); + searchResult.indexableObject.uuid = id; + } + + beforeEach(async(() => { + init(); + TestBed.configureTestingModule({ + imports: [ + TranslateModule.forRoot(), + RouterTestingModule.withRoutes([]) + ], + declarations: [PoolTaskAdminWorkflowSearchResultListElementComponent], + providers: [{ provide: TruncatableService, useValue: {} }], + schemas: [NO_ERRORS_SCHEMA] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PoolTaskAdminWorkflowSearchResultListElementComponent); + component = fixture.componentInstance; + component.object = searchResult; + component.linkTypes = CollectionElementLinkType; + component.index = 0; + component.viewModes = ViewMode; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('when the item is not withdrawn', () => { + beforeEach(() => { + component.dso.isWithdrawn = false; + 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(() => { + component.dso.isWithdrawn = true; + 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(() => { + component.dso.isDiscoverable = true; + 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(() => { + component.dso.isDiscoverable = false; + 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/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.ts new file mode 100644 index 0000000000..8a6934e755 --- /dev/null +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component.ts @@ -0,0 +1,29 @@ +import { Component } from '@angular/core'; +import { ViewMode } from '../../../../../core/shared/view-mode.model'; +import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; +import { Context } from '../../../../../core/shared/context.model'; +import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component'; +import { PoolTaskSearchResult } from '../../../../../shared/object-collection/shared/pool-task-search-result.model'; +import { PoolTask } from '../../../../../core/tasks/models/pool-task-object.model'; +import { Observable, pipe } from 'rxjs'; +import { RemoteData } from '../../../../../core/data/remote-data'; +import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model'; +import { getAllSucceededRemoteData, getRemoteDataPayload } from '../../../../../core/shared/operators'; + +@listableObjectComponent(PoolTaskSearchResult, ViewMode.ListElement, Context.AdminWorkflowSearch) +@Component({ + selector: 'ds-pooltask-admin-workflow-search-result-list-element', + styleUrls: ['./pool-task-admin-workflow-search-result-list-element.component.scss'], + templateUrl: './pool-task-admin-workflow-search-result-list-element.component.html' +}) +/** + * The component for displaying a list element for an pool task search result on the admin search page + */ +export class PoolTaskAdminWorkflowSearchResultListElementComponent extends SearchResultListElementComponent { + public wfi$: Observable; + + ngOnInit(): void { + super.ngOnInit(); + this.wfi$ = (this.dso.workflowitem as Observable>).pipe(getAllSucceededRemoteData(), getRemoteDataPayload()); + } +} diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.html b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.html new file mode 100644 index 0000000000..736aba2fce --- /dev/null +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.html @@ -0,0 +1,9 @@ +
+ {{ "admin.workflow.item.workflow" | translate }} +
+ + diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.scss b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.spec.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.spec.ts similarity index 87% rename from src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.spec.ts rename to src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.spec.ts index 595a36a5b3..e406e4c28c 100644 --- a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component.spec.ts +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.spec.ts @@ -8,12 +8,12 @@ import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { By } from '@angular/platform-browser'; import { RouterTestingModule } from '@angular/router/testing'; import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; -import { ItemAdminWorkflowSearchResultListElementComponent } from './item-admin-workflow-search-result-list-element.component'; +import { WorkflowItemAdminWorkflowListElementComponent } from './workflow-item-admin-workflow-list-element.component'; import { Item } from '../../../../../core/shared/item.model'; describe('ItemAdminSearchResultListElementComponent', () => { - let component: ItemAdminWorkflowSearchResultListElementComponent; - let fixture: ComponentFixture; + let component: WorkflowItemAdminWorkflowListElementComponent; + let fixture: ComponentFixture; let id; let searchResult; @@ -31,7 +31,7 @@ describe('ItemAdminSearchResultListElementComponent', () => { TranslateModule.forRoot(), RouterTestingModule.withRoutes([]) ], - declarations: [ItemAdminWorkflowSearchResultListElementComponent], + declarations: [WorkflowItemAdminWorkflowListElementComponent], providers: [{ provide: TruncatableService, useValue: {} }], schemas: [NO_ERRORS_SCHEMA] }) @@ -39,7 +39,7 @@ describe('ItemAdminSearchResultListElementComponent', () => { })); beforeEach(() => { - fixture = TestBed.createComponent(ItemAdminWorkflowSearchResultListElementComponent); + fixture = TestBed.createComponent(WorkflowItemAdminWorkflowListElementComponent); component = fixture.componentInstance; component.object = searchResult; component.linkTypes = CollectionElementLinkType; diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.ts new file mode 100644 index 0000000000..76698507aa --- /dev/null +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component.ts @@ -0,0 +1,19 @@ +import { Component } from '@angular/core'; +import { ViewMode } from '../../../../../core/shared/view-mode.model'; +import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; +import { Context } from '../../../../../core/shared/context.model'; +import { WorkflowItem } from '../../../../../core/submission/models/workflowitem.model'; +import { AbstractListableElementComponent } from '../../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; + +@listableObjectComponent(WorkflowItem, ViewMode.ListElement, Context.AdminWorkflowSearch) +@Component({ + selector: 'ds-workflow-item-admin-workflow-list-element', + styleUrls: ['./workflow-item-admin-workflow-list-element.component.scss'], + templateUrl: './workflow-item-admin-workflow-list-element.component.html' +}) +/** + * The component for displaying a list element for an workflow item on the admin search page + */ +export class WorkflowItemAdminWorkflowListElementComponent extends AbstractListableElementComponent { + +} diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component.ts deleted file mode 100644 index 3dc7b96391..0000000000 --- a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Component, Input } from '@angular/core'; -import { Item } from '../../../core/shared/item.model'; -import { getItemEditPath } from '../../../+item-page/item-page-routing.module'; -import { URLCombiner } from '../../../core/url-combiner/url-combiner'; -import { - ITEM_EDIT_DELETE_PATH, - ITEM_EDIT_MOVE_PATH, - ITEM_EDIT_PRIVATE_PATH, - ITEM_EDIT_PUBLIC_PATH, - ITEM_EDIT_REINSTATE_PATH, - ITEM_EDIT_WITHDRAW_PATH -} from '../../../+item-page/edit-item-page/edit-item-page.routing.module'; - -@Component({ - selector: 'ds-item-admin-workflow-search-result-actions-element', - styleUrls: ['./item-admin-workflow-search-result-actions.component.scss'], - templateUrl: './item-admin-workflow-search-result-actions.component.html' -}) -/** - * The component for displaying the actions for a list element for an item search result on the admin search page - */ -export class ItemAdminWorkflowSearchResultActionsComponent { - /** - * The item to perform the actions on - */ - @Input() public item: Item; - - /** - * Whether or not to use small buttons - */ - @Input() public small: boolean; - - /** - * Returns the path to the edit page of this item - */ - getEditPath(): string { - return getItemEditPath(this.item.uuid) - } - - /** - * Returns the path to the withdraw page of this item - */ - getWithdrawPath(): string { - return new URLCombiner(this.getEditPath(), ITEM_EDIT_WITHDRAW_PATH).toString(); - } -} diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component.html b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component.html similarity index 100% rename from src/app/+admin/admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component.html rename to src/app/+admin/admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component.html diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component.scss b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component.scss similarity index 100% rename from src/app/+admin/admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component.scss rename to src/app/+admin/admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component.scss diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component.spec.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component.spec.ts similarity index 98% rename from src/app/+admin/admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component.spec.ts rename to src/app/+admin/admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component.spec.ts index c1d42341bc..2ee8ae2e9d 100644 --- a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component.spec.ts +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component.spec.ts @@ -4,7 +4,7 @@ import { NO_ERRORS_SCHEMA } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { By } from '@angular/platform-browser'; import { RouterTestingModule } from '@angular/router/testing'; -import { ItemAdminWorkflowSearchResultActionsComponent } from './item-admin-workflow-search-result-actions.component'; +import { ItemAdminWorkflowSearchResultActionsComponent } from './workflow-item-admin-workflow-actions.component'; import { Item } from '../../../core/shared/item.model'; import { ITEM_EDIT_DELETE_PATH, diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component.ts new file mode 100644 index 0000000000..a19f154f13 --- /dev/null +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component.ts @@ -0,0 +1,39 @@ +import { Component, Input } from '@angular/core'; +import { getItemEditPath } from '../../../+item-page/item-page-routing.module'; +import { URLCombiner } from '../../../core/url-combiner/url-combiner'; +import { ITEM_EDIT_WITHDRAW_PATH } from '../../../+item-page/edit-item-page/edit-item-page.routing.module'; +import { WorkflowItem } from '../../../core/submission/models/workflowitem.model'; + +@Component({ + selector: 'ds-workflow-item-admin-workflow-actions-element', + styleUrls: ['./workflow-item-admin-workflow-actions.component.scss'], + templateUrl: './workflow-item-admin-workflow-actions.component.html' +}) +/** + * The component for displaying the actions for a list element for an item on the admin workflow page + */ +export class WorkflowItemAdminWorkflowActionsComponent { + /** + * The item to perform the actions on + */ + @Input() public wfi: WorkflowItem; + + /** + * Whether or not to use small buttons + */ + @Input() public small: boolean; + + /** + * Returns the path to the delete page of this workflow item + */ + getDeletePath(): string { + return getDeletePath(this.wfi.id) + } + + /** + * Returns the path to the send back page of this workflow item + */ + getSendBackPath(): string { + return getSendPath(this.wfi.id); + } +} diff --git a/src/app/+admin/admin.module.ts b/src/app/+admin/admin.module.ts index d29d876d02..b829c8d868 100644 --- a/src/app/+admin/admin.module.ts +++ b/src/app/+admin/admin.module.ts @@ -12,10 +12,12 @@ import { ItemAdminSearchResultGridElementComponent } from './admin-search-page/a import { CommunityAdminSearchResultGridElementComponent } from './admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component'; import { CollectionAdminSearchResultGridElementComponent } from './admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component'; import { ItemAdminSearchResultActionsComponent } from './admin-search-page/admin-search-results/item-admin-search-result-actions.component'; -import { ItemAdminWorkflowSearchResultGridElementComponent } from './admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/item-search-result/item-admin-workflow-search-result-grid-element.component'; -import { ItemAdminWorkflowSearchResultActionsComponent } from './admin-workflow-page/admin-workflow-search-results/item-admin-workflow-search-result-actions.component'; -import { ItemAdminWorkflowSearchResultListElementComponent } from './admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/item-search-result/item-admin-workflow-search-result-list-element.component'; +import { WorkflowItemAdminWorkflowGridElementComponent } from './admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-admin-workflow-grid-element.component'; +import { WorkflowItemAdminWorkflowActionsComponent } from './admin-workflow-page/admin-workflow-search-results/workflow-item-admin-workflow-actions.component'; +import { WorkflowItemAdminWorkflowListElementComponent } from './admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-admin-workflow-list-element.component'; import { AdminWorkflowPageComponent } from './admin-workflow-page/admin-workflow-page.component'; +import { PoolTaskAdminWorkflowSearchResultListElementComponent } from './admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/pool-task-item-search-result/pool-task-admin-workflow-search-result-list-element.component'; +import { PoolTaskAdminWorkflowSearchResultGridElementComponent } from './admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-grid-element/pool-task-search-result/pool-task-admin-workflow-search-result-grid-element.component'; @NgModule({ imports: [ @@ -36,9 +38,12 @@ import { AdminWorkflowPageComponent } from './admin-workflow-page/admin-workflow CollectionAdminSearchResultGridElementComponent, ItemAdminSearchResultActionsComponent, - ItemAdminWorkflowSearchResultListElementComponent, - ItemAdminWorkflowSearchResultGridElementComponent, - ItemAdminWorkflowSearchResultActionsComponent, + WorkflowItemAdminWorkflowListElementComponent, + WorkflowItemAdminWorkflowGridElementComponent, + WorkflowItemAdminWorkflowActionsComponent, + + PoolTaskAdminWorkflowSearchResultListElementComponent, + PoolTaskAdminWorkflowSearchResultGridElementComponent, ], entryComponents: [ ItemAdminSearchResultListElementComponent, @@ -49,9 +54,12 @@ import { AdminWorkflowPageComponent } from './admin-workflow-page/admin-workflow CollectionAdminSearchResultGridElementComponent, ItemAdminSearchResultActionsComponent, - ItemAdminWorkflowSearchResultListElementComponent, - ItemAdminWorkflowSearchResultGridElementComponent, - ItemAdminWorkflowSearchResultActionsComponent, + WorkflowItemAdminWorkflowListElementComponent, + WorkflowItemAdminWorkflowGridElementComponent, + WorkflowItemAdminWorkflowActionsComponent, + + PoolTaskAdminWorkflowSearchResultListElementComponent, + PoolTaskAdminWorkflowSearchResultGridElementComponent, ] }) export class AdminModule { diff --git a/src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.html b/src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.html new file mode 100644 index 0000000000..f8d7e427b0 --- /dev/null +++ b/src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.html @@ -0,0 +1 @@ + diff --git a/src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.scss b/src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.spec.ts b/src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.spec.ts new file mode 100644 index 0000000000..b42fe965c1 --- /dev/null +++ b/src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { WorkflowItemDeleteComponent } from './workflow-item-delete.component'; + +describe('WorkflowItemDeleteComponent', () => { + let component: WorkflowItemDeleteComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ WorkflowItemDeleteComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(WorkflowItemDeleteComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.ts b/src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.ts new file mode 100644 index 0000000000..2b3bb3e934 --- /dev/null +++ b/src/app/+workflowitems-edit-page/workflow-item-delete/workflow-item-delete.component.ts @@ -0,0 +1,16 @@ +import { Component, OnInit } from '@angular/core'; +import { WorkflowItem } from '../../core/submission/models/workflowitem.model'; + +@Component({ + selector: 'ds-workflow-item-delete', + templateUrl: './workflow-item-delete.component.html', + styleUrls: ['./workflow-item-delete.component.scss'] +}) +export class WorkflowItemDeleteComponent implements OnInit { + wfi: WorkflowItem; + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/+workflowitems-edit-page/workflowitems-edit-page.module.ts b/src/app/+workflowitems-edit-page/workflowitems-edit-page.module.ts index 7a89f18c7d..8e301390ae 100644 --- a/src/app/+workflowitems-edit-page/workflowitems-edit-page.module.ts +++ b/src/app/+workflowitems-edit-page/workflowitems-edit-page.module.ts @@ -3,6 +3,7 @@ import { NgModule } from '@angular/core'; import { SharedModule } from '../shared/shared.module'; import { WorkflowItemsEditPageRoutingModule } from './workflowitems-edit-page-routing.module'; import { SubmissionModule } from '../submission/submission.module'; +import { WorkflowItemDeleteComponent } from './workflow-item-delete/workflow-item-delete.component'; @NgModule({ imports: [ @@ -11,7 +12,7 @@ import { SubmissionModule } from '../submission/submission.module'; SharedModule, SubmissionModule, ], - declarations: [] + declarations: [WorkflowItemDeleteComponent] }) /** * This module handles all modules that need to access the workflowitems edit page.