refactored ItemViewMode to be part of ViewMode and added the Context enum

This commit is contained in:
lotte
2019-09-27 13:19:26 +02:00
parent e584489eaf
commit 20274bd4af
37 changed files with 114 additions and 85 deletions

View File

@@ -4,7 +4,7 @@ import { cloneDeep } from 'lodash';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ObjectUpdatesService } from '../../../../core/data/object-updates/object-updates.service'; import { ObjectUpdatesService } from '../../../../core/data/object-updates/object-updates.service';
import { FieldChangeType } from '../../../../core/data/object-updates/object-updates.actions'; import { FieldChangeType } from '../../../../core/data/object-updates/object-updates.actions';
import { ItemViewMode } from '../../../../shared/items/item-type-decorator'; import { ViewMode } from '../../../../core/shared/view-mode.model';
@Component({ @Component({
// tslint:disable-next-line:component-selector // tslint:disable-next-line:component-selector
@@ -31,7 +31,7 @@ export class EditRelationshipComponent implements OnChanges {
/** /**
* The view-mode we're currently on * The view-mode we're currently on
*/ */
viewMode = ItemViewMode.Element; viewMode = ViewMode.ListElement;
constructor(private objectUpdatesService: ObjectUpdatesService) { constructor(private objectUpdatesService: ObjectUpdatesService) {
} }

View File

@@ -15,7 +15,7 @@ import { MetadataService } from '../../core/metadata/metadata.service';
import { fadeInOut } from '../../shared/animations/fade'; import { fadeInOut } from '../../shared/animations/fade';
import { hasValue } from '../../shared/empty.util'; import { hasValue } from '../../shared/empty.util';
import { redirectToPageNotFoundOn404 } from '../../core/shared/operators'; import { redirectToPageNotFoundOn404 } from '../../core/shared/operators';
import { ItemViewMode } from '../../shared/items/item-type-decorator'; import { ViewMode } from '../../core/shared/view-mode.model';
/** /**
* This component renders a simple item page. * This component renders a simple item page.
@@ -44,7 +44,7 @@ export class ItemPageComponent implements OnInit {
/** /**
* The view-mode we're currently on * The view-mode we're currently on
*/ */
viewMode = ItemViewMode.Full; viewMode = ViewMode.StandalonePage;
constructor( constructor(
private route: ActivatedRoute, private route: ActivatedRoute,

View File

@@ -2,15 +2,15 @@ import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { import {
DEFAULT_ITEM_TYPE, ItemViewMode, DEFAULT_ITEM_TYPE, rendersItemType
rendersItemType
} from '../../../../shared/items/item-type-decorator'; } from '../../../../shared/items/item-type-decorator';
import { ItemComponent } from '../shared/item.component'; import { ItemComponent } from '../shared/item.component';
import { MetadataRepresentation } from '../../../../core/shared/metadata-representation/metadata-representation.model'; import { MetadataRepresentation } from '../../../../core/shared/metadata-representation/metadata-representation.model';
import { getRelatedItemsByTypeLabel } from '../shared/item-relationships-utils'; import { getRelatedItemsByTypeLabel } from '../shared/item-relationships-utils';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('Publication', ItemViewMode.Full) @rendersItemType('Publication', ViewMode.StandalonePage)
@rendersItemType(DEFAULT_ITEM_TYPE, ItemViewMode.Full) @rendersItemType(DEFAULT_ITEM_TYPE, ViewMode.StandalonePage)
@Component({ @Component({
selector: 'ds-publication', selector: 'ds-publication',
styleUrls: ['./publication.component.scss'], styleUrls: ['./publication.component.scss'],

View File

@@ -1,6 +1,6 @@
import { Component, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { MetadataRepresentation } from '../../../core/shared/metadata-representation/metadata-representation.model'; import { MetadataRepresentation } from '../../../core/shared/metadata-representation/metadata-representation.model';
import { ItemViewMode } from '../../../shared/items/item-type-decorator'; import { ViewMode } from '../../../core/shared/view-mode.model';
@Component({ @Component({
selector: 'ds-metadata-representation-list', selector: 'ds-metadata-representation-list',
@@ -25,5 +25,5 @@ export class MetadataRepresentationListComponent {
* The view-mode we're currently on * The view-mode we're currently on
* @type {ElementViewMode} * @type {ElementViewMode}
*/ */
viewMode = ItemViewMode.Metadata; viewMode = ViewMode.MetadataField;
} }

View File

@@ -1,6 +1,6 @@
import { Component, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { Item } from '../../../core/shared/item.model'; import { Item } from '../../../core/shared/item.model';
import { ItemViewMode } from '../../../shared/items/item-type-decorator'; import { ViewMode } from '../../../core/shared/view-mode.model';
@Component({ @Component({
selector: 'ds-related-items', selector: 'ds-related-items',
@@ -26,5 +26,5 @@ export class RelatedItemsComponent {
* The view-mode we're currently on * The view-mode we're currently on
* @type {ElementViewMode} * @type {ElementViewMode}
*/ */
viewMode = ItemViewMode.Element; viewMode = ViewMode.ListElement;
} }

View File

@@ -0,0 +1,11 @@
/**
* This enumeration represents all possible ways of representing a group of objects in the UI
*/
export enum Context {
SearchList = 'searchList',
SearchGrid = 'searchGrid',
Submission = 'submission',
AdminMenuList = 'adminMenuList',
SubmissionModal = 'submissionModal',
}

View File

@@ -5,5 +5,7 @@
export enum ViewMode { export enum ViewMode {
ListElement = 'listElement', ListElement = 'listElement',
GridElement = 'gridElement', GridElement = 'gridElement',
DetailedListElement = 'detailedListElement' DetailedListElement = 'detailedListElement',
StandalonePage = 'standalonePage',
MetadataField = 'metadataField'
} }

View File

@@ -1,9 +1,10 @@
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { focusShadow } from '../../../../shared/animations/focus'; import { focusShadow } from '../../../../shared/animations/focus';
import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component'; import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('JournalIssue', ItemViewMode.Card) @rendersItemType('JournalIssue', ViewMode.GridElement)
@Component({ @Component({
selector: 'ds-journal-issue-grid-element', selector: 'ds-journal-issue-grid-element',
styleUrls: ['./journal-issue-grid-element.component.scss'], styleUrls: ['./journal-issue-grid-element.component.scss'],

View File

@@ -1,9 +1,10 @@
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { focusShadow } from '../../../../shared/animations/focus'; import { focusShadow } from '../../../../shared/animations/focus';
import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component'; import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('JournalVolume', ItemViewMode.Card) @rendersItemType('JournalVolume', ViewMode.GridElement)
@Component({ @Component({
selector: 'ds-journal-volume-grid-element', selector: 'ds-journal-volume-grid-element',
styleUrls: ['./journal-volume-grid-element.component.scss'], styleUrls: ['./journal-volume-grid-element.component.scss'],

View File

@@ -1,9 +1,10 @@
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { focusShadow } from '../../../../shared/animations/focus'; import { focusShadow } from '../../../../shared/animations/focus';
import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component'; import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('Journal', ItemViewMode.Card) @rendersItemType('Journal', ViewMode.GridElement)
@Component({ @Component({
selector: 'ds-journal-grid-element', selector: 'ds-journal-grid-element',
styleUrls: ['./journal-grid-element.component.scss'], styleUrls: ['./journal-grid-element.component.scss'],

View File

@@ -1,8 +1,9 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component'; import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('JournalIssue', ItemViewMode.Element) @rendersItemType('JournalIssue', ViewMode.ListElement)
@Component({ @Component({
selector: 'ds-journal-issue-list-element', selector: 'ds-journal-issue-list-element',
styleUrls: ['./journal-issue-list-element.component.scss'], styleUrls: ['./journal-issue-list-element.component.scss'],

View File

@@ -1,8 +1,9 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component'; import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('JournalVolume', ItemViewMode.Element) @rendersItemType('JournalVolume', ViewMode.ListElement)
@Component({ @Component({
selector: 'ds-journal-volume-list-element', selector: 'ds-journal-volume-list-element',
styleUrls: ['./journal-volume-list-element.component.scss'], styleUrls: ['./journal-volume-list-element.component.scss'],

View File

@@ -1,8 +1,9 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component'; import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('Journal', ItemViewMode.Element) @rendersItemType('Journal', ViewMode.ListElement)
@Component({ @Component({
selector: 'ds-journal-list-element', selector: 'ds-journal-list-element',
styleUrls: ['./journal-list-element.component.scss'], styleUrls: ['./journal-list-element.component.scss'],

View File

@@ -1,12 +1,13 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { isNotEmpty } from '../../../../shared/empty.util'; import { isNotEmpty } from '../../../../shared/empty.util';
import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component'; import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component';
import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils'; import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('JournalIssue', ItemViewMode.Full) @rendersItemType('JournalIssue', ViewMode.StandalonePage)
@Component({ @Component({
selector: 'ds-journal-issue', selector: 'ds-journal-issue',
styleUrls: ['./journal-issue.component.scss'], styleUrls: ['./journal-issue.component.scss'],

View File

@@ -1,12 +1,13 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { isNotEmpty } from '../../../../shared/empty.util'; import { isNotEmpty } from '../../../../shared/empty.util';
import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component'; import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component';
import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils'; import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('JournalVolume', ItemViewMode.Full) @rendersItemType('JournalVolume', ViewMode.StandalonePage)
@Component({ @Component({
selector: 'ds-journal-volume', selector: 'ds-journal-volume',
styleUrls: ['./journal-volume.component.scss'], styleUrls: ['./journal-volume.component.scss'],

View File

@@ -1,12 +1,13 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { isNotEmpty } from '../../../../shared/empty.util'; import { isNotEmpty } from '../../../../shared/empty.util';
import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component'; import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component';
import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils'; import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('Journal', ItemViewMode.Full) @rendersItemType('Journal', ViewMode.StandalonePage)
@Component({ @Component({
selector: 'ds-journal', selector: 'ds-journal',
styleUrls: ['./journal.component.scss'], styleUrls: ['./journal.component.scss'],

View File

@@ -1,9 +1,10 @@
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { focusShadow } from '../../../../shared/animations/focus'; import { focusShadow } from '../../../../shared/animations/focus';
import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component'; import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('OrgUnit', ItemViewMode.Card) @rendersItemType('OrgUnit', ViewMode.GridElement)
@Component({ @Component({
selector: 'ds-orgunit-grid-element', selector: 'ds-orgunit-grid-element',
styleUrls: ['./orgunit-grid-element.component.scss'], styleUrls: ['./orgunit-grid-element.component.scss'],

View File

@@ -1,9 +1,10 @@
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component'; import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component';
import { focusShadow } from '../../../../shared/animations/focus'; import { focusShadow } from '../../../../shared/animations/focus';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('Person', ItemViewMode.Card) @rendersItemType('Person', ViewMode.GridElement)
@Component({ @Component({
selector: 'ds-person-grid-element', selector: 'ds-person-grid-element',
styleUrls: ['./person-grid-element.component.scss'], styleUrls: ['./person-grid-element.component.scss'],

View File

@@ -1,9 +1,10 @@
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { focusShadow } from '../../../../shared/animations/focus'; import { focusShadow } from '../../../../shared/animations/focus';
import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component'; import { TypedItemSearchResultGridElementComponent } from '../../../../shared/object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('Project', ItemViewMode.Card) @rendersItemType('Project', ViewMode.GridElement)
@Component({ @Component({
selector: 'ds-project-grid-element', selector: 'ds-project-grid-element',
styleUrls: ['./project-grid-element.component.scss'], styleUrls: ['./project-grid-element.component.scss'],

View File

@@ -1,8 +1,9 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component'; import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('OrgUnit', ItemViewMode.Element) @rendersItemType('OrgUnit', ViewMode.ListElement)
@Component({ @Component({
selector: 'ds-orgunit-list-element', selector: 'ds-orgunit-list-element',
styleUrls: ['./orgunit-list-element.component.scss'], styleUrls: ['./orgunit-list-element.component.scss'],

View File

@@ -1,9 +1,10 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { MetadataRepresentationType } from '../../../../core/shared/metadata-representation/metadata-representation.model'; import { MetadataRepresentationType } from '../../../../core/shared/metadata-representation/metadata-representation.model';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component'; import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('OrgUnit', ItemViewMode.Element, MetadataRepresentationType.Item) @rendersItemType('OrgUnit', ViewMode.ListElement, MetadataRepresentationType.Item)
@Component({ @Component({
selector: 'ds-orgunit-metadata-list-element', selector: 'ds-orgunit-metadata-list-element',
templateUrl: './orgunit-metadata-list-element.component.html' templateUrl: './orgunit-metadata-list-element.component.html'

View File

@@ -1,8 +1,9 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component'; import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('Person', ItemViewMode.Element) @rendersItemType('Person', ViewMode.ListElement)
@Component({ @Component({
selector: 'ds-person-list-element', selector: 'ds-person-list-element',
styleUrls: ['./person-list-element.component.scss'], styleUrls: ['./person-list-element.component.scss'],

View File

@@ -1,9 +1,10 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { MetadataRepresentationType } from '../../../../core/shared/metadata-representation/metadata-representation.model'; import { MetadataRepresentationType } from '../../../../core/shared/metadata-representation/metadata-representation.model';
import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component'; import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('Person', ItemViewMode.Element, MetadataRepresentationType.Item) @rendersItemType('Person', ViewMode.ListElement, MetadataRepresentationType.Item)
@Component({ @Component({
selector: 'ds-person-metadata-list-element', selector: 'ds-person-metadata-list-element',
templateUrl: './person-metadata-list-element.component.html' templateUrl: './person-metadata-list-element.component.html'

View File

@@ -1,8 +1,9 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component'; import { TypedItemSearchResultListElementComponent } from '../../../../shared/object-list/item-list-element/item-types/typed-item-search-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('Project', ItemViewMode.Element) @rendersItemType('Project', ViewMode.ListElement)
@Component({ @Component({
selector: 'ds-project-list-element', selector: 'ds-project-list-element',
styleUrls: ['./project-list-element.component.scss'], styleUrls: ['./project-list-element.component.scss'],

View File

@@ -1,12 +1,13 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { isNotEmpty } from '../../../../shared/empty.util'; import { isNotEmpty } from '../../../../shared/empty.util';
import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component'; import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component';
import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils'; import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('OrgUnit', ItemViewMode.Full) @rendersItemType('OrgUnit', ViewMode.StandalonePage)
@Component({ @Component({
selector: 'ds-orgunit', selector: 'ds-orgunit',
styleUrls: ['./orgunit.component.scss'], styleUrls: ['./orgunit.component.scss'],

View File

@@ -1,14 +1,15 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { Observable , of as observableOf } from 'rxjs'; import { Observable , of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { ITEM } from '../../../../shared/items/switcher/item-type-switcher.component'; import { ITEM } from '../../../../shared/items/switcher/item-type-switcher.component';
import { SearchFixedFilterService } from '../../../../+search-page/search-filters/search-filter/search-fixed-filter.service'; import { SearchFixedFilterService } from '../../../../+search-page/search-filters/search-filter/search-fixed-filter.service';
import { isNotEmpty } from '../../../../shared/empty.util'; import { isNotEmpty } from '../../../../shared/empty.util';
import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component'; import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component';
import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils'; import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('Person', ItemViewMode.Full) @rendersItemType('Person', ViewMode.StandalonePage)
@Component({ @Component({
selector: 'ds-person', selector: 'ds-person',
styleUrls: ['./person.component.scss'], styleUrls: ['./person.component.scss'],

View File

@@ -2,12 +2,13 @@ import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { MetadataRepresentation } from '../../../../core/shared/metadata-representation/metadata-representation.model'; import { MetadataRepresentation } from '../../../../core/shared/metadata-representation/metadata-representation.model';
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator'; import { rendersItemType } from '../../../../shared/items/item-type-decorator';
import { isNotEmpty } from '../../../../shared/empty.util'; import { isNotEmpty } from '../../../../shared/empty.util';
import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component'; import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component';
import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils'; import { getRelatedItemsByTypeLabel } from '../../../../+item-page/simple/item-types/shared/item-relationships-utils';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType('Project', ItemViewMode.Full) @rendersItemType('Project', ViewMode.StandalonePage)
@Component({ @Component({
selector: 'ds-project', selector: 'ds-project',
styleUrls: ['./project.component.scss'], styleUrls: ['./project.component.scss'],

View File

@@ -1,15 +1,9 @@
import { hasNoValue, hasValue } from '../empty.util'; import { hasNoValue, hasValue } from '../empty.util';
import { MetadataRepresentationType } from '../../core/shared/metadata-representation/metadata-representation.model'; import { MetadataRepresentationType } from '../../core/shared/metadata-representation/metadata-representation.model';
import { ViewMode } from '../../core/shared/view-mode.model';
export enum ItemViewMode {
Element = 'element',
Card = 'card',
Full = 'full',
Metadata = 'metadata'
}
export const DEFAULT_ITEM_TYPE = 'Default'; export const DEFAULT_ITEM_TYPE = 'Default';
export const DEFAULT_VIEW_MODE = ItemViewMode.Element; export const DEFAULT_VIEW_MODE = ViewMode.ListElement;
export const NO_REPRESENTATION_TYPE = MetadataRepresentationType.None; export const NO_REPRESENTATION_TYPE = MetadataRepresentationType.None;
export const DEFAULT_REPRESENTATION_TYPE = MetadataRepresentationType.PlainText; export const DEFAULT_REPRESENTATION_TYPE = MetadataRepresentationType.PlainText;

View File

@@ -5,10 +5,11 @@ import { PageInfo } from '../../../core/shared/page-info.model';
import { Item } from '../../../core/shared/item.model'; import { Item } from '../../../core/shared/item.model';
import { PaginatedList } from '../../../core/data/paginated-list'; import { PaginatedList } from '../../../core/data/paginated-list';
import * as decorator from '../item-type-decorator'; import * as decorator from '../item-type-decorator';
import { getComponentByItemType, ItemViewMode } from '../item-type-decorator'; import { getComponentByItemType} from '../item-type-decorator';
import { ItemMetadataRepresentation } from '../../../core/shared/metadata-representation/item/item-metadata-representation.model'; import { ItemMetadataRepresentation } from '../../../core/shared/metadata-representation/item/item-metadata-representation.model';
import { createSuccessfulRemoteDataObject$ } from '../../testing/utils'; import { createSuccessfulRemoteDataObject$ } from '../../testing/utils';
import createSpy = jasmine.createSpy; import createSpy = jasmine.createSpy;
import { ViewMode } from '../../../core/shared/view-mode.model';
const relationType = 'type'; const relationType = 'type';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
@@ -29,7 +30,7 @@ const mockItem: Item = Object.assign(new Item(), {
} }
}); });
const mockItemMetadataRepresentation = Object.assign(new ItemMetadataRepresentation(), mockItem); const mockItemMetadataRepresentation = Object.assign(new ItemMetadataRepresentation(), mockItem);
let viewMode = ItemViewMode.Full; let viewMode = ViewMode.StandalonePage;
describe('ItemTypeSwitcherComponent', () => { describe('ItemTypeSwitcherComponent', () => {
let comp: ItemTypeSwitcherComponent; let comp: ItemTypeSwitcherComponent;
@@ -52,7 +53,7 @@ describe('ItemTypeSwitcherComponent', () => {
describe('when the injected object is of type Item', () => { describe('when the injected object is of type Item', () => {
beforeEach(() => { beforeEach(() => {
viewMode = ItemViewMode.Full; viewMode = ViewMode.StandalonePage;
comp.object = mockItem; comp.object = mockItem;
comp.viewMode = viewMode; comp.viewMode = viewMode;
}); });
@@ -70,7 +71,7 @@ describe('ItemTypeSwitcherComponent', () => {
describe('when the injected object is of type MetadataRepresentation', () => { describe('when the injected object is of type MetadataRepresentation', () => {
beforeEach(() => { beforeEach(() => {
viewMode = ItemViewMode.Metadata; viewMode = ViewMode.MetadataField;
comp.object = mockItemMetadataRepresentation; comp.object = mockItemMetadataRepresentation;
comp.viewMode = viewMode; comp.viewMode = viewMode;
}); });

View File

@@ -1,10 +1,11 @@
import { TypedItemSearchResultGridElementComponent } from '../typed-item-search-result-grid-element.component'; import { TypedItemSearchResultGridElementComponent } from '../typed-item-search-result-grid-element.component';
import { DEFAULT_ITEM_TYPE, ItemViewMode, rendersItemType } from '../../../../items/item-type-decorator'; import { DEFAULT_ITEM_TYPE, rendersItemType } from '../../../../items/item-type-decorator';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { focusShadow } from '../../../../animations/focus'; import { focusShadow } from '../../../../animations/focus';
import { ViewMode } from '../../../../../core/shared/view-mode.model';
@rendersItemType('Publication', ItemViewMode.Card) @rendersItemType('Publication', ViewMode.GridElement)
@rendersItemType(DEFAULT_ITEM_TYPE, ItemViewMode.Card) @rendersItemType(DEFAULT_ITEM_TYPE, ViewMode.GridElement)
@Component({ @Component({
selector: 'ds-publication-grid-element', selector: 'ds-publication-grid-element',
styleUrls: ['./publication-grid-element.component.scss'], styleUrls: ['./publication-grid-element.component.scss'],

View File

@@ -8,7 +8,7 @@ import { Item } from '../../../../core/shared/item.model';
import { TruncatableService } from '../../../truncatable/truncatable.service'; import { TruncatableService } from '../../../truncatable/truncatable.service';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
import { ItemViewMode } from '../../../items/item-type-decorator'; import { ViewMode } from '../../../../core/shared/view-mode.model';
let itemSearchResultGridElementComponent: ItemSearchResultGridElementComponent; let itemSearchResultGridElementComponent: ItemSearchResultGridElementComponent;
let fixture: ComponentFixture<ItemSearchResultGridElementComponent>; let fixture: ComponentFixture<ItemSearchResultGridElementComponent>;
@@ -56,6 +56,6 @@ describe('ItemSearchResultGridElementComponent', () => {
it('should show send the object to item-type-switcher using viewMode "Card"', () => { it('should show send the object to item-type-switcher using viewMode "Card"', () => {
const itemTypeSwitcherComp = fixture.debugElement.query(By.css('ds-item-type-switcher')).componentInstance; const itemTypeSwitcherComp = fixture.debugElement.query(By.css('ds-item-type-switcher')).componentInstance;
expect(itemTypeSwitcherComp.object).toBe(mockItemWithRelationshipType); expect(itemTypeSwitcherComp.object).toBe(mockItemWithRelationshipType);
expect(itemTypeSwitcherComp.viewMode).toEqual(ItemViewMode.Card); expect(itemTypeSwitcherComp.viewMode).toEqual(ViewMode.GridElement);
}); });
}); });

View File

@@ -5,7 +5,6 @@ import { SearchResultGridElementComponent } from '../search-result-grid-element.
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
import { focusShadow } from '../../../animations/focus'; import { focusShadow } from '../../../animations/focus';
import { ItemViewMode } from '../../../items/item-type-decorator';
import { ViewMode } from '../../../../core/shared/view-mode.model'; import { ViewMode } from '../../../../core/shared/view-mode.model';
@Component({ @Component({
@@ -17,5 +16,5 @@ import { ViewMode } from '../../../../core/shared/view-mode.model';
@renderElementsFor(ItemSearchResult, ViewMode.GridElement) @renderElementsFor(ItemSearchResult, ViewMode.GridElement)
export class ItemSearchResultGridElementComponent extends SearchResultGridElementComponent<ItemSearchResult, Item> { export class ItemSearchResultGridElementComponent extends SearchResultGridElementComponent<ItemSearchResult, Item> {
viewMode = ItemViewMode.Card; viewMode = ViewMode.GridElement;
} }

View File

@@ -3,7 +3,6 @@ import { Component } from '@angular/core';
import { Item } from '../../../core/shared/item.model'; import { Item } from '../../../core/shared/item.model';
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator'; import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component'; import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
import { ItemViewMode } from '../../items/item-type-decorator';
import { ViewMode } from '../../../core/shared/view-mode.model'; import { ViewMode } from '../../../core/shared/view-mode.model';
@Component({ @Component({
@@ -18,5 +17,5 @@ import { ViewMode } from '../../../core/shared/view-mode.model';
*/ */
@renderElementsFor(Item, ViewMode.ListElement) @renderElementsFor(Item, ViewMode.ListElement)
export class ItemListElementComponent extends AbstractListableElementComponent<Item> { export class ItemListElementComponent extends AbstractListableElementComponent<Item> {
viewMode = ItemViewMode.Element; viewMode = ViewMode.ListElement;
} }

View File

@@ -1,9 +1,10 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { DEFAULT_ITEM_TYPE, ItemViewMode, rendersItemType } from '../../../../items/item-type-decorator'; import { DEFAULT_ITEM_TYPE, rendersItemType } from '../../../../items/item-type-decorator';
import { TypedItemSearchResultListElementComponent } from '../typed-item-search-result-list-element.component'; import { TypedItemSearchResultListElementComponent } from '../typed-item-search-result-list-element.component';
import { ViewMode } from '../../../../../core/shared/view-mode.model';
@rendersItemType('Publication', ItemViewMode.Element) @rendersItemType('Publication', ViewMode.ListElement)
@rendersItemType(DEFAULT_ITEM_TYPE, ItemViewMode.Element) @rendersItemType(DEFAULT_ITEM_TYPE, ViewMode.ListElement)
@Component({ @Component({
selector: 'ds-publication-list-element', selector: 'ds-publication-list-element',
styleUrls: ['./publication-list-element.component.scss'], styleUrls: ['./publication-list-element.component.scss'],

View File

@@ -1,9 +1,10 @@
import { MetadataRepresentationType } from '../../../../core/shared/metadata-representation/metadata-representation.model'; import { MetadataRepresentationType } from '../../../../core/shared/metadata-representation/metadata-representation.model';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { MetadataRepresentationListElementComponent } from '../metadata-representation-list-element.component'; import { MetadataRepresentationListElementComponent } from '../metadata-representation-list-element.component';
import { DEFAULT_ITEM_TYPE, ItemViewMode, rendersItemType } from '../../../items/item-type-decorator'; import { DEFAULT_ITEM_TYPE, rendersItemType } from '../../../items/item-type-decorator';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType(DEFAULT_ITEM_TYPE, ItemViewMode.Metadata, MetadataRepresentationType.Item) @rendersItemType(DEFAULT_ITEM_TYPE, ViewMode.MetadataField, MetadataRepresentationType.Item)
@Component({ @Component({
selector: 'ds-item-metadata-list-element', selector: 'ds-item-metadata-list-element',
templateUrl: './item-metadata-list-element.component.html' templateUrl: './item-metadata-list-element.component.html'
@@ -18,5 +19,5 @@ export class ItemMetadataListElementComponent extends MetadataRepresentationList
* The view-mode we're currently on * The view-mode we're currently on
* @type {ElementViewMode} * @type {ElementViewMode}
*/ */
viewMode = ItemViewMode.Element; viewMode = ViewMode.ListElement;
} }

View File

@@ -1,11 +1,12 @@
import { MetadataRepresentationType } from '../../../../core/shared/metadata-representation/metadata-representation.model'; import { MetadataRepresentationType } from '../../../../core/shared/metadata-representation/metadata-representation.model';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { MetadataRepresentationListElementComponent } from '../metadata-representation-list-element.component'; import { MetadataRepresentationListElementComponent } from '../metadata-representation-list-element.component';
import { DEFAULT_ITEM_TYPE, ItemViewMode, rendersItemType } from '../../../items/item-type-decorator'; import { DEFAULT_ITEM_TYPE, rendersItemType } from '../../../items/item-type-decorator';
import { ViewMode } from '../../../../core/shared/view-mode.model';
@rendersItemType(DEFAULT_ITEM_TYPE, ItemViewMode.Metadata, MetadataRepresentationType.PlainText) @rendersItemType(DEFAULT_ITEM_TYPE, ViewMode.MetadataField, MetadataRepresentationType.PlainText)
// For now, authority controlled fields are rendered the same way as plain text fields // For now, authority controlled fields are rendered the same way as plain text fields
@rendersItemType(DEFAULT_ITEM_TYPE, ItemViewMode.Metadata, MetadataRepresentationType.AuthorityControlled) @rendersItemType(DEFAULT_ITEM_TYPE, ViewMode.MetadataField, MetadataRepresentationType.AuthorityControlled)
@Component({ @Component({
selector: 'ds-plain-text-metadata-list-element', selector: 'ds-plain-text-metadata-list-element',
templateUrl: './plain-text-metadata-list-element.component.html' templateUrl: './plain-text-metadata-list-element.component.html'

View File

@@ -5,7 +5,6 @@ import { focusBackground } from '../../../animations/focus';
import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator'; import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator';
import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
import { SearchResultListElementComponent } from '../search-result-list-element.component'; import { SearchResultListElementComponent } from '../search-result-list-element.component';
import { ItemViewMode } from '../../../items/item-type-decorator';
import { ViewMode } from '../../../../core/shared/view-mode.model'; import { ViewMode } from '../../../../core/shared/view-mode.model';
@Component({ @Component({
@@ -18,6 +17,6 @@ import { ViewMode } from '../../../../core/shared/view-mode.model';
@renderElementsFor(ItemSearchResult, ViewMode.ListElement) @renderElementsFor(ItemSearchResult, ViewMode.ListElement)
export class ItemSearchResultListElementComponent extends SearchResultListElementComponent<ItemSearchResult, Item> { export class ItemSearchResultListElementComponent extends SearchResultListElementComponent<ItemSearchResult, Item> {
viewMode = ItemViewMode.Element; viewMode = ViewMode.ListElement;
} }