65195: removed duplicate view mode, renamed existing modes from SetViewMode

This commit is contained in:
lotte
2019-09-27 11:22:55 +02:00
parent d85cc0a0f2
commit e584489eaf
44 changed files with 115 additions and 145 deletions

View File

@@ -93,7 +93,7 @@ export class MyDSpacePageComponent implements OnInit {
/**
* List of available view mode
*/
viewModeList = [ViewMode.List, ViewMode.Detail];
viewModeList = [ViewMode.ListElement, ViewMode.DetailedListElement];
constructor(private service: SearchService,
private sidebarService: SearchSidebarService,

View File

@@ -17,7 +17,7 @@ import { ItemMyDSpaceResultDetailElementComponent } from '../shared/object-detai
import { WorkspaceitemMyDSpaceResultDetailElementComponent } from '../shared/object-detail/my-dspace-result-detail-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-detail-element.component';
import { WorkflowitemMyDSpaceResultDetailElementComponent } from '../shared/object-detail/my-dspace-result-detail-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-detail-element.component';
import { ClaimedMyDSpaceResultDetailElementComponent } from '../shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component';
import { PoolMyDSpaceResultDetailElementComponent } from '../shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-lement.component';
import { PoolMyDSpaceResultDetailElementComponent } from '../shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-element.component';
import { MyDSpaceGuard } from './my-dspace.guard';
import { MyDSpaceConfigurationService } from './my-dspace-configuration.service';

View File

@@ -3,14 +3,14 @@ import { URLCombiner } from '../core/url-combiner/url-combiner';
import 'core-js/library/fn/object/entries';
import { SearchFilter } from './search-filter.model';
import { DSpaceObjectType } from '../core/shared/dspace-object-type.model';
import { SetViewMode } from '../shared/view-mode';
import { ViewMode } from '../core/shared/view-mode.model';
/**
* This model class represents all parameters needed to request information about a certain search request
*/
export class SearchOptions {
configuration?: string;
view?: SetViewMode = SetViewMode.List;
view?: ViewMode = ViewMode.ListElement;
scope?: string;
query?: string;
dsoType?: DSpaceObjectType;

View File

@@ -2,12 +2,12 @@ import { Component, Input } from '@angular/core';
import { RemoteData } from '../../core/data/remote-data';
import { DSpaceObject } from '../../core/shared/dspace-object.model';
import { fadeIn, fadeInOut } from '../../shared/animations/fade';
import { SetViewMode } from '../../shared/view-mode';
import { SearchOptions } from '../search-options.model';
import { SearchResult } from '../search-result.model';
import { PaginatedList } from '../../core/data/paginated-list';
import { hasNoValue, isNotEmpty } from '../../shared/empty.util';
import { SortOptions } from '../../core/cache/models/sort-options.model';
import { ViewMode } from '../../core/shared/view-mode.model';
@Component({
selector: 'ds-search-results',
@@ -42,7 +42,7 @@ export class SearchResultsComponent {
/**
* The current view-mode of the list
*/
@Input() viewMode: SetViewMode;
@Input() viewMode: ViewMode;
/**
* An optional configuration to filter the result on one type

View File

@@ -5,9 +5,6 @@ import { CommonModule } from '@angular/common';
import { Component } from '@angular/core';
import { SearchService } from './search.service';
import { ItemDataService } from './../../core/data/item-data.service';
import { SetViewMode } from '../../shared/view-mode';
import { GLOBAL_CONFIG } from '../../../config';
import { RemoteDataBuildService } from '../../core/cache/builders/remote-data-build.service';
import { Router, UrlTree } from '@angular/router';
import { RequestService } from '../../core/data/request.service';
@@ -66,7 +63,7 @@ describe('SearchService', () => {
it('should return list view mode', () => {
searchService.getViewMode().subscribe((viewMode) => {
expect(viewMode).toBe(ViewMode.List);
expect(viewMode).toBe(ViewMode.ListElement);
});
});
});
@@ -125,38 +122,38 @@ describe('SearchService', () => {
});
it('should call the navigate method on the Router with view mode list parameter as a parameter when setViewMode is called', () => {
searchService.setViewMode(ViewMode.List);
searchService.setViewMode(ViewMode.ListElement);
expect(router.navigate).toHaveBeenCalledWith(['/search'], {
queryParams: { view: ViewMode.List, page: 1 },
queryParams: { view: ViewMode.ListElement, page: 1 },
queryParamsHandling: 'merge'
});
});
it('should call the navigate method on the Router with view mode grid parameter as a parameter when setViewMode is called', () => {
searchService.setViewMode(ViewMode.Grid);
searchService.setViewMode(ViewMode.GridElement);
expect(router.navigate).toHaveBeenCalledWith(['/search'], {
queryParams: { view: ViewMode.Grid, page: 1 },
queryParams: { view: ViewMode.GridElement, page: 1 },
queryParamsHandling: 'merge'
});
});
it('should return ViewMode.List when the viewMode is set to ViewMode.List in the ActivatedRoute', () => {
let viewMode = ViewMode.Grid;
let viewMode = ViewMode.GridElement;
spyOn(routeService, 'getQueryParamMap').and.returnValue(observableOf(new Map([
[ 'view', ViewMode.List ],
[ 'view', ViewMode.ListElement ],
])));
searchService.getViewMode().subscribe((mode) => viewMode = mode);
expect(viewMode).toEqual(ViewMode.List);
expect(viewMode).toEqual(ViewMode.ListElement);
});
it('should return ViewMode.Grid when the viewMode is set to ViewMode.Grid in the ActivatedRoute', () => {
let viewMode = ViewMode.List;
let viewMode = ViewMode.ListElement;
spyOn(routeService, 'getQueryParamMap').and.returnValue(observableOf(new Map([
[ 'view', ViewMode.Grid ],
[ 'view', ViewMode.GridElement ],
])));
searchService.getViewMode().subscribe((mode) => viewMode = mode);
expect(viewMode).toEqual(ViewMode.Grid);
expect(viewMode).toEqual(ViewMode.GridElement);
});
describe('when search is called', () => {

View File

@@ -339,7 +339,7 @@ export class SearchService implements OnDestroy {
if (isNotEmpty(params.get('view')) && hasValue(params.get('view'))) {
return params.get('view');
} else {
return ViewMode.List;
return ViewMode.ListElement;
}
}));
}
@@ -352,7 +352,7 @@ export class SearchService implements OnDestroy {
this.routeService.getQueryParameterValue('pageSize').pipe(first())
.subscribe((pageSize) => {
let queryParams = { view: viewMode, page: 1 };
if (viewMode === ViewMode.Detail) {
if (viewMode === ViewMode.DetailedListElement) {
queryParams = Object.assign(queryParams, {pageSize: '1'});
} else if (pageSize === '1') {
queryParams = Object.assign(queryParams, {pageSize: '10'});

View File

@@ -3,7 +3,7 @@
*/
export enum ViewMode {
List = 'list',
Grid = 'grid',
Detail = 'detail'
ListElement = 'listElement',
GridElement = 'gridElement',
DetailedListElement = 'detailedListElement'
}

View File

@@ -8,7 +8,7 @@
(pageSizeChange)="onPageSizeChange($event)"
(sortDirectionChange)="onSortDirectionChange($event)"
(sortFieldChange)="onSortFieldChange($event)"
*ngIf="(currentMode$ | async) === viewModeEnum.List">
*ngIf="(currentMode$ | async) === viewModeEnum.ListElement">
</ds-object-list>
<ds-object-grid [config]="config"
@@ -20,14 +20,14 @@
(pageSizeChange)="onPageSizeChange($event)"
(sortDirectionChange)="onSortDirectionChange($event)"
(sortFieldChange)="onSortFieldChange($event)"
*ngIf="(currentMode$ | async) === viewModeEnum.Grid">
*ngIf="(currentMode$ | async) === viewModeEnum.GridElement">
</ds-object-grid>
<ds-object-detail [config]="config"
[sortConfig]="sortConfig"
[objects]="objects"
[hideGear]="hideGear"
*ngIf="(currentMode$ | async) === viewModeEnum.Detail">
*ngIf="(currentMode$ | async) === viewModeEnum.DetailedListElement">
</ds-object-detail>

View File

@@ -1,11 +1,11 @@
import { ObjectCollectionComponent } from './object-collection.component';
import { SetViewMode } from '../view-mode';
import { By } from '@angular/platform-browser';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { of as observableOf } from 'rxjs';
import { RouterStub } from '../testing/router-stub';
import { ViewMode } from '../../core/shared/view-mode.model';
describe('ObjectCollectionComponent', () => {
let fixture: ComponentFixture<ObjectCollectionComponent>;
@@ -36,14 +36,14 @@ describe('ObjectCollectionComponent', () => {
}));
it('should only show the grid component when the viewmode is set to grid', () => {
objectCollectionComponent.currentMode$ = observableOf(SetViewMode.Grid);
objectCollectionComponent.currentMode$ = observableOf(ViewMode.GridElement);
expect(fixture.debugElement.query(By.css('ds-object-grid'))).toBeDefined();
expect(fixture.debugElement.query(By.css('ds-object-list'))).toBeNull();
});
it('should only show the list component when the viewmode is set to list', () => {
objectCollectionComponent.currentMode$ = observableOf(SetViewMode.List);
objectCollectionComponent.currentMode$ = observableOf(ViewMode.ListElement);
expect(fixture.debugElement.query(By.css('ds-object-list'))).toBeDefined();
expect(fixture.debugElement.query(By.css('ds-object-grid'))).toBeNull();

View File

@@ -18,8 +18,8 @@ import { PageInfo } from '../../core/shared/page-info.model';
import { PaginationComponentOptions } from '../pagination/pagination-component-options.model';
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
import { ListableObject } from './shared/listable-object.model';
import { SetViewMode } from '../view-mode';
import { hasValue, isEmpty, isNotEmpty } from '../empty.util';
import { ViewMode } from '../../core/shared/view-mode.model';
@Component({
selector: 'ds-viewable-collection',
@@ -60,8 +60,8 @@ export class ObjectCollectionComponent implements OnInit {
*/
@Output() sortFieldChange: EventEmitter<string> = new EventEmitter<string>();
data: any = {};
currentMode$: Observable<SetViewMode>;
viewModeEnum = SetViewMode;
currentMode$: Observable<ViewMode>;
viewModeEnum = ViewMode;
ngOnInit(): void {
this.currentMode$ = this.route
@@ -69,7 +69,7 @@ export class ObjectCollectionComponent implements OnInit {
.pipe(
filter((params) => isNotEmpty(params.view)),
map((params) => params.view),
startWith(SetViewMode.List)
startWith(ViewMode.ListElement)
);
}

View File

@@ -1,10 +1,10 @@
import { SetViewMode } from '../../view-mode';
import { renderElementsFor } from './dso-element-decorator';
import { Item } from '../../../core/shared/item.model';
import { ViewMode } from '../../../core/shared/view-mode.model';
describe('ElementDecorator', () => {
const gridDecorator = renderElementsFor(Item, SetViewMode.Grid);
const listDecorator = renderElementsFor(Item, SetViewMode.List);
const gridDecorator = renderElementsFor(Item, ViewMode.GridElement);
const listDecorator = renderElementsFor(Item, ViewMode.ListElement);
it('should have a decorator for both list and grid', () => {
expect(listDecorator.length).not.toBeNull();
expect(gridDecorator.length).not.toBeNull();

View File

@@ -1,9 +1,9 @@
import { GenericConstructor } from '../../../core/shared/generic-constructor';
import { ListableObject } from './listable-object.model';
import { SetViewMode } from '../../view-mode';
import { ViewMode } from '../../../core/shared/view-mode.model';
const dsoElementMap = new Map();
export function renderElementsFor(listable: GenericConstructor<ListableObject>, viewMode: SetViewMode) {
export function renderElementsFor(listable: GenericConstructor<ListableObject>, viewMode: ViewMode) {
return function decorator(objectElement: any) {
if (!objectElement) {
return;
@@ -15,6 +15,6 @@ export function renderElementsFor(listable: GenericConstructor<ListableObject>,
};
}
export function rendersDSOType(listable: GenericConstructor<ListableObject>, viewMode: SetViewMode) {
export function rendersDSOType(listable: GenericConstructor<ListableObject>, viewMode: ViewMode) {
return dsoElementMap.get(viewMode).get(listable);
}

View File

@@ -13,7 +13,6 @@ import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.m
import { ClaimedTaskMyDSpaceResult } from '../../../object-collection/shared/claimed-task-my-dspace-result.model';
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
/**
* This component renders claimed task object for the mydspace result in the detail view.
@@ -24,8 +23,8 @@ import { SetViewMode } from '../../../view-mode';
templateUrl: './claimed-my-dspace-result-detail-element.component.html'
})
@renderElementsFor(ClaimedTaskMyDSpaceResult, SetViewMode.Detail)
@renderElementsFor(ClaimedTask, SetViewMode.Detail)
@renderElementsFor(ClaimedTaskMyDSpaceResult, ViewMode.DetailedListElement)
@renderElementsFor(ClaimedTask, ViewMode.DetailedListElement)
export class ClaimedMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<ClaimedTaskMyDSpaceResult, ClaimedTask> {
/**

View File

@@ -6,7 +6,6 @@ import { Item } from '../../../../core/shared/item.model';
import { ItemMyDSpaceResult } from '../../../object-collection/shared/item-my-dspace-result.model';
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
/**
* This component renders item object for the mydspace result in the detail view.
@@ -17,7 +16,7 @@ import { SetViewMode } from '../../../view-mode';
templateUrl: './item-my-dspace-result-detail-element.component.html'
})
@renderElementsFor(ItemMyDSpaceResult, SetViewMode.Detail)
@renderElementsFor(ItemMyDSpaceResult, ViewMode.DetailedListElement)
export class ItemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<ItemMyDSpaceResult, Item> {
/**

View File

@@ -5,10 +5,9 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model';
import { PoolMyDSpaceResultDetailElementComponent } from './pool-my-dspace-result-detail-lement.component';
import { PoolMyDSpaceResultDetailElementComponent } from './pool-my-dspace-result-detail-element.component';
import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-task-my-dspace-result.model';
import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';

View File

@@ -10,8 +10,8 @@ import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-task-my-dspace-result.model';
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { ViewMode } from '../../../../core/shared/view-mode.model';
/**
* This component renders pool task object for the mydspace result in the detail view.
@@ -22,8 +22,8 @@ import { WorkflowItem } from '../../../../core/submission/models/workflowitem.mo
templateUrl: './pool-my-dspace-result-detail-element.component.html',
})
@renderElementsFor(PoolTaskMyDSpaceResult, SetViewMode.Detail)
@renderElementsFor(PoolTask, SetViewMode.Detail)
@renderElementsFor(PoolTaskMyDSpaceResult, ViewMode.DetailedListElement)
@renderElementsFor(PoolTask, ViewMode.DetailedListElement)
export class PoolMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<PoolTaskMyDSpaceResult, PoolTask> {
/**

View File

@@ -12,7 +12,6 @@ import { Observable } from 'rxjs/internal/Observable';
import { RemoteData } from '../../../../core/data/remote-data';
import { find } from 'rxjs/operators';
import { isNotUndefined } from '../../../empty.util';
import { SetViewMode } from '../../../view-mode';
/**
* This component renders workflowitem object for the mydspace result in the detail view.
@@ -23,8 +22,8 @@ import { SetViewMode } from '../../../view-mode';
templateUrl: './workflowitem-my-dspace-result-detail-element.component.html',
})
@renderElementsFor(WorkflowitemMyDSpaceResult, SetViewMode.Detail)
@renderElementsFor(WorkflowItem, SetViewMode.Detail)
@renderElementsFor(WorkflowitemMyDSpaceResult, ViewMode.DetailedListElement)
@renderElementsFor(WorkflowItem, ViewMode.DetailedListElement)
export class WorkflowitemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<WorkflowitemMyDSpaceResult, WorkflowItem> {
/**

View File

@@ -14,7 +14,7 @@ import { isNotUndefined } from '../../../empty.util';
import { ListableObject } from '../../../object-collection/shared/listable-object.model';
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
import { ViewMode } from '../../../../core/shared/view-mode.model';
/**
* This component renders workspaceitem object for the mydspace result in the detail view.
@@ -25,8 +25,8 @@ import { SetViewMode } from '../../../view-mode';
templateUrl: './workspaceitem-my-dspace-result-detail-element.component.html',
})
@renderElementsFor(WorkspaceitemMyDSpaceResult, SetViewMode.Detail)
@renderElementsFor(WorkspaceItem, SetViewMode.Detail)
@renderElementsFor(WorkspaceitemMyDSpaceResult, ViewMode.DetailedListElement)
@renderElementsFor(WorkspaceItem, ViewMode.DetailedListElement)
export class WorkspaceitemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent<WorkspaceitemMyDSpaceResult, WorkspaceItem> {
/**

View File

@@ -4,7 +4,6 @@ import { ViewMode } from '../../../core/shared/view-mode.model';
import { GenericConstructor } from '../../../core/shared/generic-constructor';
import { rendersDSOType } from '../../object-collection/shared/dso-element-decorator';
import { ListableObject } from '../../object-collection/shared/listable-object.model';
import { SetViewMode } from '../../view-mode';
/**
* This component renders a wrapper for an object in the detail view.
@@ -52,6 +51,6 @@ export class WrapperDetailElementComponent implements OnInit {
*/
private getDetailElement(): string {
const f: GenericConstructor<ListableObject> = this.object.constructor as GenericConstructor<ListableObject>;
return rendersDSOType(f, SetViewMode.Detail);
return rendersDSOType(f, ViewMode.DetailedListElement);
}
}

View File

@@ -2,8 +2,8 @@ import { Component, Inject } from '@angular/core';
import { Collection } from '../../../core/shared/collection.model';
import { renderElementsFor} from '../../object-collection/shared/dso-element-decorator';
import { SetViewMode } from '../../view-mode';
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
import { ViewMode } from '../../../core/shared/view-mode.model';
@Component({
selector: 'ds-collection-grid-element',
@@ -11,5 +11,5 @@ import { AbstractListableElementComponent } from '../../object-collection/shared
templateUrl: './collection-grid-element.component.html'
})
@renderElementsFor(Collection, SetViewMode.Grid)
@renderElementsFor(Collection, ViewMode.GridElement)
export class CollectionGridElementComponent extends AbstractListableElementComponent<Collection> {}

View File

@@ -1,9 +1,9 @@
import { Component, Input, Inject } from '@angular/core';
import { Component } from '@angular/core';
import { Community } from '../../../core/shared/community.model';
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
import { SetViewMode } from '../../view-mode';
import { ViewMode } from '../../../core/shared/view-mode.model';
@Component({
selector: 'ds-community-grid-element',
@@ -11,5 +11,5 @@ import { SetViewMode } from '../../view-mode';
templateUrl: './community-grid-element.component.html'
})
@renderElementsFor(Community, SetViewMode.Grid)
@renderElementsFor(Community, ViewMode.GridElement)
export class CommunityGridElementComponent extends AbstractListableElementComponent<Community> {}

View File

@@ -3,7 +3,7 @@ import { Component, Input, Inject } from '@angular/core';
import { Item } from '../../../core/shared/item.model';
import { renderElementsFor} from '../../object-collection/shared/dso-element-decorator';
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
import { SetViewMode } from '../../view-mode';
import { ViewMode } from '../../../core/shared/view-mode.model';
@Component({
selector: 'ds-item-grid-element',
@@ -11,5 +11,5 @@ import { SetViewMode } from '../../view-mode';
templateUrl: './item-grid-element.component.html'
})
@renderElementsFor(Item, SetViewMode.Grid)
@renderElementsFor(Item, ViewMode.GridElement)
export class ItemGridElementComponent extends AbstractListableElementComponent<Item> {}

View File

@@ -3,8 +3,8 @@ import { Component } from '@angular/core';
import { renderElementsFor} from '../../../object-collection/shared/dso-element-decorator';
import { SearchResultGridElementComponent } from '../search-result-grid-element.component';
import { Collection } from '../../../../core/shared/collection.model';
import { SetViewMode } from '../../../view-mode';
import { CollectionSearchResult } from '../../../object-collection/shared/collection-search-result.model';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@Component({
selector: 'ds-collection-search-result-grid-element',
@@ -12,5 +12,5 @@ import { CollectionSearchResult } from '../../../object-collection/shared/collec
templateUrl: 'collection-search-result-grid-element.component.html'
})
@renderElementsFor(CollectionSearchResult, SetViewMode.Grid)
@renderElementsFor(CollectionSearchResult, ViewMode.GridElement)
export class CollectionSearchResultGridElementComponent extends SearchResultGridElementComponent<CollectionSearchResult, Collection> {}

View File

@@ -2,8 +2,8 @@ import { Component } from '@angular/core';
import { Community } from '../../../../core/shared/community.model';
import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator';
import { SearchResultGridElementComponent } from '../search-result-grid-element.component';
import { SetViewMode } from '../../../view-mode';
import { CommunitySearchResult } from '../../../object-collection/shared/community-search-result.model';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@Component({
selector: 'ds-community-search-result-grid-element',
@@ -11,7 +11,7 @@ import { CommunitySearchResult } from '../../../object-collection/shared/communi
templateUrl: 'community-search-result-grid-element.component.html'
})
@renderElementsFor(CommunitySearchResult, SetViewMode.Grid)
@renderElementsFor(CommunitySearchResult, ViewMode.GridElement)
export class CommunitySearchResultGridElementComponent extends SearchResultGridElementComponent<CommunitySearchResult, Community> {
}

View File

@@ -4,9 +4,9 @@ import { renderElementsFor } from '../../../object-collection/shared/dso-element
import { SearchResultGridElementComponent } from '../search-result-grid-element.component';
import { Item } from '../../../../core/shared/item.model';
import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
import { SetViewMode } from '../../../view-mode';
import { focusShadow } from '../../../../shared/animations/focus';
import { focusShadow } from '../../../animations/focus';
import { ItemViewMode } from '../../../items/item-type-decorator';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@Component({
selector: 'ds-item-search-result-grid-element',
@@ -15,7 +15,7 @@ import { ItemViewMode } from '../../../items/item-type-decorator';
animations: [focusShadow],
})
@renderElementsFor(ItemSearchResult, SetViewMode.Grid)
@renderElementsFor(ItemSearchResult, ViewMode.GridElement)
export class ItemSearchResultGridElementComponent extends SearchResultGridElementComponent<ItemSearchResult, Item> {
viewMode = ItemViewMode.Card;
}

View File

@@ -1,8 +1,8 @@
import { Component, Injector, Input, OnInit } from '@angular/core';
import { SetViewMode } from '../../view-mode';
import { GenericConstructor } from '../../../core/shared/generic-constructor';
import { rendersDSOType } from '../../object-collection/shared/dso-element-decorator';
import { ListableObject } from '../../object-collection/shared/listable-object.model';
import { ViewMode } from '../../../core/shared/view-mode.model';
@Component({
selector: 'ds-wrapper-grid-element',
@@ -27,6 +27,6 @@ export class WrapperGridElementComponent implements OnInit {
getGridElement(): string {
const f: GenericConstructor<ListableObject> = this.object.constructor as GenericConstructor<ListableObject>;
return rendersDSOType(f, SetViewMode.Grid);
return rendersDSOType(f, ViewMode.GridElement);
}
}

View File

@@ -4,7 +4,6 @@ import { AbstractListableElementComponent } from '../../object-collection/shared
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
import { BrowseEntry } from '../../../core/shared/browse-entry.model';
import { ViewMode } from '../../../core/shared/view-mode.model';
import { SetViewMode } from '../../view-mode';
@Component({
selector: 'ds-browse-entry-list-element',
@@ -15,5 +14,5 @@ import { SetViewMode } from '../../view-mode';
/**
* This component is automatically used to create a list view for BrowseEntry objects when used in ObjectCollectionComponent
*/
@renderElementsFor(BrowseEntry, SetViewMode.List)
@renderElementsFor(BrowseEntry, ViewMode.ListElement)
export class BrowseEntryListElementComponent extends AbstractListableElementComponent<BrowseEntry> {}

View File

@@ -2,8 +2,8 @@ import { Component, Inject } from '@angular/core';
import { Collection } from '../../../core/shared/collection.model';
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
import { SetViewMode } from '../../view-mode';
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
import { ViewMode } from '../../../core/shared/view-mode.model';
@Component({
selector: 'ds-collection-list-element',
@@ -11,5 +11,5 @@ import { AbstractListableElementComponent } from '../../object-collection/shared
templateUrl: './collection-list-element.component.html'
})
@renderElementsFor(Collection, SetViewMode.List)
@renderElementsFor(Collection, ViewMode.ListElement)
export class CollectionListElementComponent extends AbstractListableElementComponent<Collection> {}

View File

@@ -3,7 +3,7 @@ import { Component, Input, Inject } from '@angular/core';
import { Community } from '../../../core/shared/community.model';
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
import { SetViewMode } from '../../view-mode';
import { ViewMode } from '../../../core/shared/view-mode.model';
@Component({
selector: 'ds-community-list-element',
@@ -11,5 +11,5 @@ import { SetViewMode } from '../../view-mode';
templateUrl: './community-list-element.component.html'
})
@renderElementsFor(Community, SetViewMode.List)
@renderElementsFor(Community, ViewMode.ListElement)
export class CommunityListElementComponent extends AbstractListableElementComponent<Community> {}

View File

@@ -3,8 +3,8 @@ import { Component } from '@angular/core';
import { Item } from '../../../core/shared/item.model';
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
import { SetViewMode } from '../../view-mode';
import { ItemViewMode } from '../../items/item-type-decorator';
import { ViewMode } from '../../../core/shared/view-mode.model';
@Component({
selector: 'ds-item-list-element',
@@ -16,7 +16,7 @@ import { ItemViewMode } from '../../items/item-type-decorator';
* The component used to list items depending on type
* Uses item-type-switcher to determine which components to use for displaying the list
*/
@renderElementsFor(Item, SetViewMode.List)
@renderElementsFor(Item, ViewMode.ListElement)
export class ItemListElementComponent extends AbstractListableElementComponent<Item> {
viewMode = ItemViewMode.Element;
}

View File

@@ -13,7 +13,6 @@ import { WorkflowItem } from '../../../../core/submission/models/workflowitem.mo
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
import { ClaimedTaskMyDSpaceResult } from '../../../object-collection/shared/claimed-task-my-dspace-result.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
/**
* This component renders claimed task object for the mydspace result in the list view.
@@ -25,8 +24,8 @@ import { SetViewMode } from '../../../view-mode';
providers: [Location, { provide: LocationStrategy, useClass: PathLocationStrategy }]
})
@renderElementsFor(ClaimedTaskMyDSpaceResult, SetViewMode.List)
@renderElementsFor(ClaimedTask, SetViewMode.List)
@renderElementsFor(ClaimedTaskMyDSpaceResult, ViewMode.ListElement)
@renderElementsFor(ClaimedTask, ViewMode.ListElement)
export class ClaimedMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<ClaimedTaskMyDSpaceResult, ClaimedTask> {
/**

View File

@@ -5,7 +5,7 @@ import { MyDSpaceResultListElementComponent, } from '../my-dspace-result-list-el
import { Item } from '../../../../core/shared/item.model';
import { ItemMyDSpaceResult } from '../../../object-collection/shared/item-my-dspace-result.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
import { ViewMode } from '../../../../core/shared/view-mode.model';
/**
* This component renders item object for the mydspace result in the list view.
@@ -16,7 +16,7 @@ import { SetViewMode } from '../../../view-mode';
templateUrl: './item-my-dspace-result-list-element.component.html'
})
@renderElementsFor(ItemMyDSpaceResult, SetViewMode.List)
@renderElementsFor(ItemMyDSpaceResult, ViewMode.ListElement)
export class ItemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<ItemMyDSpaceResult, Item> {
/**

View File

@@ -13,7 +13,6 @@ import { WorkflowItem } from '../../../../core/submission/models/workflowitem.mo
import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-task-my-dspace-result.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
/**
* This component renders pool task object for the mydspace result in the list view.
@@ -24,8 +23,8 @@ import { SetViewMode } from '../../../view-mode';
templateUrl: './pool-my-dspace-result-list-element.component.html',
})
@renderElementsFor(PoolTaskMyDSpaceResult, SetViewMode.List)
@renderElementsFor(PoolTask, SetViewMode.List)
@renderElementsFor(PoolTaskMyDSpaceResult, ViewMode.ListElement)
@renderElementsFor(PoolTask, ViewMode.ListElement)
export class PoolMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<PoolTaskMyDSpaceResult, PoolTask> implements OnInit {
/**

View File

@@ -12,7 +12,6 @@ import { WorkflowitemMyDSpaceResult } from '../../../object-collection/shared/wo
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { Item } from '../../../../core/shared/item.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
/**
* This component renders workflowitem object for the mydspace result in the list view.
@@ -23,8 +22,8 @@ import { SetViewMode } from '../../../view-mode';
templateUrl: './workflowitem-my-dspace-result-list-element.component.html',
})
@renderElementsFor(WorkflowitemMyDSpaceResult, SetViewMode.List)
@renderElementsFor(WorkflowItem, SetViewMode.List)
@renderElementsFor(WorkflowitemMyDSpaceResult, ViewMode.ListElement)
@renderElementsFor(WorkflowItem, ViewMode.ListElement)
export class WorkflowitemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<WorkflowitemMyDSpaceResult, WorkflowItem> {
/**

View File

@@ -12,7 +12,6 @@ import { RemoteData } from '../../../../core/data/remote-data';
import { isNotUndefined } from '../../../empty.util';
import { Item } from '../../../../core/shared/item.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
/**
* This component renders workspaceitem object for the mydspace result in the list view.
@@ -23,7 +22,7 @@ import { SetViewMode } from '../../../view-mode';
templateUrl: './workspaceitem-my-dspace-result-list-element.component.html',
})
@renderElementsFor(WorkspaceitemMyDSpaceResult, SetViewMode.List)
@renderElementsFor(WorkspaceitemMyDSpaceResult, ViewMode.ListElement)
export class WorkspaceitemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<WorkspaceitemMyDSpaceResult, WorkspaceItem> {
/**

View File

@@ -4,8 +4,8 @@ import { renderElementsFor } from '../../../object-collection/shared/dso-element
import { SearchResultListElementComponent } from '../search-result-list-element.component';
import { Collection } from '../../../../core/shared/collection.model';
import { SetViewMode } from '../../../view-mode';
import { CollectionSearchResult } from '../../../object-collection/shared/collection-search-result.model';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@Component({
selector: 'ds-collection-search-result-list-element',
@@ -13,5 +13,5 @@ import { CollectionSearchResult } from '../../../object-collection/shared/collec
templateUrl: 'collection-search-result-list-element.component.html'
})
@renderElementsFor(CollectionSearchResult, SetViewMode.List)
@renderElementsFor(CollectionSearchResult, ViewMode.ListElement)
export class CollectionSearchResultListElementComponent extends SearchResultListElementComponent<CollectionSearchResult, Collection> {}

View File

@@ -4,8 +4,8 @@ import { renderElementsFor } from '../../../object-collection/shared/dso-element
import { SearchResultListElementComponent } from '../search-result-list-element.component';
import { Community } from '../../../../core/shared/community.model';
import { SetViewMode } from '../../../view-mode';
import { CommunitySearchResult } from '../../../object-collection/shared/community-search-result.model';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@Component({
selector: 'ds-community-search-result-list-element',
@@ -13,7 +13,7 @@ import { CommunitySearchResult } from '../../../object-collection/shared/communi
templateUrl: 'community-search-result-list-element.component.html'
})
@renderElementsFor(CommunitySearchResult, SetViewMode.List)
@renderElementsFor(CommunitySearchResult, ViewMode.ListElement)
export class CommunitySearchResultListElementComponent extends SearchResultListElementComponent<CommunitySearchResult, Community> {
}

View File

@@ -1,14 +1,12 @@
import { Component } from '@angular/core';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model';
import { Item } from '../../../../core/shared/item.model';
import { focusBackground } from '../../../animations/focus';
import { hasValue } from '../../../empty.util';
import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator';
import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
import { SetViewMode } from '../../../view-mode';
import { SearchResultListElementComponent } from '../search-result-list-element.component';
import { ItemViewMode } from '../../../items/item-type-decorator';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@Component({
selector: 'ds-item-search-result-list-element',
@@ -18,7 +16,7 @@ import { ItemViewMode } from '../../../items/item-type-decorator';
})
@renderElementsFor(ItemSearchResult, SetViewMode.List)
@renderElementsFor(ItemSearchResult, ViewMode.ListElement)
export class ItemSearchResultListElementComponent extends SearchResultListElementComponent<ItemSearchResult, Item> {
viewMode = ItemViewMode.Element;

View File

@@ -1,8 +1,8 @@
import { Component, Injector, Input, OnInit } from '@angular/core';
import { SetViewMode } from '../../view-mode';
import { GenericConstructor } from '../../../core/shared/generic-constructor';
import { rendersDSOType } from '../../object-collection/shared/dso-element-decorator'
import { ListableObject } from '../../object-collection/shared/listable-object.model';
import { ViewMode } from '../../../core/shared/view-mode.model';
@Component({
selector: 'ds-wrapper-list-element',
@@ -30,6 +30,6 @@ export class WrapperListElementComponent implements OnInit {
private getListElement(): string {
const f: GenericConstructor<ListableObject> = this.object.constructor as GenericConstructor<ListableObject>;
return rendersDSOType(f, SetViewMode.List);
return rendersDSOType(f, ViewMode.ListElement);
}
}

View File

@@ -1,22 +1,22 @@
import {of as observableOf, Observable , BehaviorSubject } from 'rxjs';
import { SetViewMode } from '../view-mode';
import { ViewMode } from '../../core/shared/view-mode.model';
export class SearchServiceStub {
private _viewMode: SetViewMode;
private _viewMode: ViewMode;
private subject?: BehaviorSubject<any> = new BehaviorSubject(this.testViewMode);
viewMode = this.subject.asObservable();
constructor(private searchLink: string = '/search') {
this.setViewMode(SetViewMode.List);
this.setViewMode(ViewMode.ListElement);
}
getViewMode(): Observable<SetViewMode> {
getViewMode(): Observable<ViewMode> {
return this.viewMode;
}
setViewMode(viewMode: SetViewMode) {
setViewMode(viewMode: ViewMode) {
this.testViewMode = viewMode;
}
@@ -24,11 +24,11 @@ export class SearchServiceStub {
return null;
}
get testViewMode(): SetViewMode {
get testViewMode(): ViewMode {
return this._viewMode;
}
set testViewMode(viewMode: SetViewMode) {
set testViewMode(viewMode: ViewMode) {
this._viewMode = viewMode;
this.subject.next(viewMode);
}

View File

@@ -1,31 +1,31 @@
<div class="btn-group" data-toggle="buttons">
<a *ngIf="isToShow(viewModeEnum.List)"
<a *ngIf="isToShow(viewModeEnum.ListElement)"
routerLink="."
[queryParams]="{view: 'list'}"
queryParamsHandling="merge"
(click)="switchViewTo(viewModeEnum.List)"
(click)="switchViewTo(viewModeEnum.ListElement)"
routerLinkActive="active"
[class.active]="currentMode === viewModeEnum.List"
[class.active]="currentMode === viewModeEnum.ListElement"
class="btn btn-secondary">
<i class="fas fa-list" title="{{'search.view-switch.show-list' | translate}}"></i>
</a>
<a *ngIf="isToShow(viewModeEnum.Grid)"
<a *ngIf="isToShow(viewModeEnum.GridElement)"
routerLink="."
[queryParams]="{view: 'grid'}"
queryParamsHandling="merge"
(click)="switchViewTo(viewModeEnum.Grid)"
(click)="switchViewTo(viewModeEnum.GridElement)"
routerLinkActive="active"
[class.active]="currentMode === viewModeEnum.Grid"
[class.active]="currentMode === viewModeEnum.GridElement"
class="btn btn-secondary">
<i class="fas fa-th-large" title="{{'search.view-switch.show-grid' | translate}}"></i>
</a>
<a *ngIf="isToShow(viewModeEnum.Detail)"
<a *ngIf="isToShow(viewModeEnum.DetailedListElement)"
routerLink="."
[queryParams]="{view: 'detail'}"
queryParamsHandling="merge"
(click)="switchViewTo(viewModeEnum.Detail)"
(click)="switchViewTo(viewModeEnum.DetailedListElement)"
routerLinkActive="active"
[class.active]="currentMode === viewModeEnum.Detail"
[class.active]="currentMode === viewModeEnum.DetailedListElement"
class="btn btn-secondary">
<i class="far fa-square" title="{{'search.view-switch.show-detail' | translate}}"></i>
</a>

View File

@@ -8,8 +8,8 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
import { SearchService } from '../../+search-page/search-service/search.service';
import { ViewModeSwitchComponent } from './view-mode-switch.component';
import { SetViewMode } from '../view-mode';
import { SearchServiceStub } from '../testing/search-service-stub';
import { ViewMode } from '../../core/shared/view-mode.model';
@Component({ template: '' })
class DummyComponent { }
@@ -55,19 +55,19 @@ describe('ViewModeSwitchComponent', () => {
});
it('should set list button as active when on list mode', fakeAsync(() => {
searchService.setViewMode(SetViewMode.List);
searchService.setViewMode(ViewMode.ListElement);
tick();
fixture.detectChanges();
expect(comp.currentMode).toBe(SetViewMode.List);
expect(comp.currentMode).toBe(ViewMode.ListElement);
expect(listButton.classList).toContain('active');
expect(gridButton.classList).not.toContain('active');
}));
it('should set grid button as active when on grid mode', fakeAsync(() => {
searchService.setViewMode(SetViewMode.Grid);
searchService.setViewMode(ViewMode.GridElement);
tick();
fixture.detectChanges();
expect(comp.currentMode).toBe(SetViewMode.Grid);
expect(comp.currentMode).toBe(ViewMode.GridElement);
expect(listButton.classList).not.toContain('active');
expect(gridButton.classList).toContain('active');
}));

View File

@@ -22,7 +22,7 @@ export class ViewModeSwitchComponent implements OnInit, OnDestroy {
*/
@Input() inPlaceSearch;
currentMode: ViewMode = ViewMode.List;
currentMode: ViewMode = ViewMode.ListElement;
viewModeEnum = ViewMode;
private sub: Subscription;
@@ -31,7 +31,7 @@ export class ViewModeSwitchComponent implements OnInit, OnDestroy {
ngOnInit(): void {
if (isEmpty(this.viewModeList)) {
this.viewModeList = [ViewMode.List, ViewMode.Grid];
this.viewModeList = [ViewMode.ListElement, ViewMode.GridElement];
}
this.sub = this.searchService.getViewMode().subscribe((viewMode: ViewMode) => {

View File

@@ -1,15 +0,0 @@
/**
* Enum used for defining the view-mode of a set of elements
* List Display the elements in a (vertical) list
* Grid Display the elements in a grid
*/
export enum SetViewMode {
List = 'list',
Grid = 'grid',
Detail = 'detail'
}
/**
* ViewMode refers to either a SetViewMode or ElementViewMode
*/
export type ViewMode = SetViewMode;