From 67356efaab30c37e4329a7892a25a4477e93aba6 Mon Sep 17 00:00:00 2001 From: Jonas Van Goolen Date: Thu, 2 Nov 2017 13:43:02 +0100 Subject: [PATCH] #150 Intermediate commit --- .../search-results/search-results.component.ts | 3 ++- .../shared/dso-element-decorator.ts | 17 +++++++++++++++++ .../collection-grid-element.component.ts | 6 ++++-- .../community-grid-element.component.ts | 5 +++-- src/app/object-grid/grid-card-styling.scss | 2 +- src/app/object-grid/grid-element-decorator.ts | 16 ---------------- .../item-grid-element.component.ts | 5 +++-- ...tion-search-result-grid-element.component.ts | 6 ++++-- ...nity-search-result-grid-element.component.ts | 5 +++-- ...item-search-result-grid-element.component.ts | 5 +++-- .../wrapper-grid-element.component.ts | 5 +++-- .../collection-list-element.component.ts | 5 +++-- .../community-list-element.component.ts | 5 +++-- .../item-list-element.component.ts | 5 +++-- src/app/object-list/list-element-decorator.ts | 16 ---------------- src/app/object-list/object-list.component.html | 2 +- ...tion-search-result-list-element.component.ts | 5 +++-- ...nity-search-result-list-element.component.ts | 5 +++-- ...item-search-result-list-element.component.ts | 5 +++-- .../wrapper-list-element.component.ts | 6 +++--- src/styles/_custom_variables.scss | 1 + 21 files changed, 66 insertions(+), 64 deletions(-) create mode 100644 src/app/object-collection/shared/dso-element-decorator.ts delete mode 100644 src/app/object-grid/grid-element-decorator.ts diff --git a/src/app/+search-page/search-results/search-results.component.ts b/src/app/+search-page/search-results/search-results.component.ts index f8b3721630..4b3fec4565 100644 --- a/src/app/+search-page/search-results/search-results.component.ts +++ b/src/app/+search-page/search-results/search-results.component.ts @@ -2,7 +2,7 @@ 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 { SearchOptions } from '../search-options.model'; +import { SearchOptions, ViewMode } from '../search-options.model'; import { SortOptions } from '../../core/cache/models/sort-options.model'; import { SearchResult } from '../search-result.model'; @@ -23,4 +23,5 @@ export class SearchResultsComponent { @Input() searchResults: RemoteData>>; @Input() searchConfig: SearchOptions; @Input() sortConfig: SortOptions; + @Input() viewMode: ViewMode; } diff --git a/src/app/object-collection/shared/dso-element-decorator.ts b/src/app/object-collection/shared/dso-element-decorator.ts new file mode 100644 index 0000000000..310a65f056 --- /dev/null +++ b/src/app/object-collection/shared/dso-element-decorator.ts @@ -0,0 +1,17 @@ +import { GenericConstructor } from '../../core/shared/generic-constructor'; +import { ListableObject } from './listable-object.model'; +import { ViewMode } from '../../+search-page/search-options.model'; + +const dsoElementMap = new Map(); +export function renderElementsFor(listable: GenericConstructor, viewMode : ViewMode) { + return function decorator(objectElement: any) { + if (!objectElement) { + return; + } + dsoElementMap.set(listable+viewMode, objectElement); + }; +} + +export function rendersDSOType(listable: GenericConstructor, viewMode : ViewMode) { + return dsoElementMap.get(listable+viewMode); +} diff --git a/src/app/object-grid/collection-grid-element/collection-grid-element.component.ts b/src/app/object-grid/collection-grid-element/collection-grid-element.component.ts index 80be3d75b3..7e2ae5f468 100644 --- a/src/app/object-grid/collection-grid-element/collection-grid-element.component.ts +++ b/src/app/object-grid/collection-grid-element/collection-grid-element.component.ts @@ -2,7 +2,9 @@ import { Component, Inject } from '@angular/core'; import { Collection } from '../../core/shared/collection.model'; import { ObjectGridElementComponent } from '../object-grid-element/object-grid-element.component'; -import { gridElementFor } from '../grid-element-decorator'; +import { renderElementsFor} from '../../object-collection/shared/dso-element-decorator'; +import { ViewMode } from '../../+search-page/search-options.model'; + @Component({ selector: 'ds-collection-grid-element', @@ -10,5 +12,5 @@ import { gridElementFor } from '../grid-element-decorator'; templateUrl: './collection-grid-element.component.html' }) -@gridElementFor(Collection) +@renderElementsFor(Collection, ViewMode.Grid) export class CollectionGridElementComponent extends ObjectGridElementComponent {} diff --git a/src/app/object-grid/community-grid-element/community-grid-element.component.ts b/src/app/object-grid/community-grid-element/community-grid-element.component.ts index e29e037c5d..76ee6736be 100644 --- a/src/app/object-grid/community-grid-element/community-grid-element.component.ts +++ b/src/app/object-grid/community-grid-element/community-grid-element.component.ts @@ -2,7 +2,8 @@ import { Component, Input, Inject } from '@angular/core'; import { Community } from '../../core/shared/community.model'; import { ObjectGridElementComponent } from '../object-grid-element/object-grid-element.component'; -import { gridElementFor} from '../grid-element-decorator'; +import { renderElementsFor} from '../../object-collection/shared/dso-element-decorator'; +import { ViewMode } from '../../+search-page/search-options.model'; @Component({ selector: 'ds-community-grid-element', @@ -10,5 +11,5 @@ import { gridElementFor} from '../grid-element-decorator'; templateUrl: './community-grid-element.component.html' }) -@gridElementFor(Community) +@renderElementsFor(Community, ViewMode.Grid) export class CommunityGridElementComponent extends ObjectGridElementComponent {} diff --git a/src/app/object-grid/grid-card-styling.scss b/src/app/object-grid/grid-card-styling.scss index 44f4183bfd..b25c603b55 100644 --- a/src/app/object-grid/grid-card-styling.scss +++ b/src/app/object-grid/grid-card-styling.scss @@ -29,7 +29,7 @@ .card{ margin-bottom: $card-block-margin-base *3; - height: 98%; + height: $card-height-percentage; } .card-img-top ::ng-deep img diff --git a/src/app/object-grid/grid-element-decorator.ts b/src/app/object-grid/grid-element-decorator.ts deleted file mode 100644 index cd5ebbcaeb..0000000000 --- a/src/app/object-grid/grid-element-decorator.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { GenericConstructor } from '../core/shared/generic-constructor'; -import { ListableObject } from '../object-collection/shared/listable-object.model'; - -const gridElementMap = new Map(); -export function gridElementFor(gridable: GenericConstructor) { - return function decorator(objectElement: any) { - if (!objectElement) { - return; - } - gridElementMap.set(gridable, objectElement); - }; -} - -export function getGridElementFor(gridable: GenericConstructor) { - return gridElementMap.get(gridable); -} diff --git a/src/app/object-grid/item-grid-element/item-grid-element.component.ts b/src/app/object-grid/item-grid-element/item-grid-element.component.ts index c651ccfc9c..e11c51312a 100644 --- a/src/app/object-grid/item-grid-element/item-grid-element.component.ts +++ b/src/app/object-grid/item-grid-element/item-grid-element.component.ts @@ -1,8 +1,9 @@ import { Component, Input, Inject } from '@angular/core'; import { Item } from '../../core/shared/item.model'; -import { gridElementFor } from '../grid-element-decorator'; +import { renderElementsFor} from '../../object-collection/shared/dso-element-decorator'; import { ObjectGridElementComponent } from '../object-grid-element/object-grid-element.component'; +import { ViewMode } from '../../+search-page/search-options.model'; @Component({ selector: 'ds-item-grid-element', @@ -10,5 +11,5 @@ import { ObjectGridElementComponent } from '../object-grid-element/object-grid-e templateUrl: './item-grid-element.component.html' }) -@gridElementFor(Item) +@renderElementsFor(Item, ViewMode.Grid) export class ItemGridElementComponent extends ObjectGridElementComponent {} diff --git a/src/app/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.ts b/src/app/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.ts index aa1d495dba..6c5e526d15 100644 --- a/src/app/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.ts +++ b/src/app/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.ts @@ -1,9 +1,11 @@ import { Component } from '@angular/core'; -import { gridElementFor } from '../../grid-element-decorator'; +import { renderElementsFor} from '../../../object-collection/shared/dso-element-decorator'; + import { CollectionSearchResult } from './collection-search-result.model'; import { SearchResultGridElementComponent } from '../search-result-grid-element.component'; import { Collection } from '../../../core/shared/collection.model'; +import { ViewMode } from '../../../+search-page/search-options.model'; @Component({ selector: 'ds-collection-search-result-grid-element', @@ -11,5 +13,5 @@ import { Collection } from '../../../core/shared/collection.model'; templateUrl: 'collection-search-result-grid-element.component.html' }) -@gridElementFor(CollectionSearchResult) +@renderElementsFor(CollectionSearchResult, ViewMode.Grid) export class CollectionSearchResultGridElementComponent extends SearchResultGridElementComponent {} diff --git a/src/app/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.ts b/src/app/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.ts index 1ce9e1d09a..b6aa4bdb6d 100644 --- a/src/app/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.ts +++ b/src/app/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.ts @@ -2,8 +2,9 @@ import { Component } from '@angular/core'; import { CommunitySearchResult } from './community-search-result.model'; import { Community } from '../../../core/shared/community.model'; -import { gridElementFor } from '../../grid-element-decorator'; +import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator'; import { SearchResultGridElementComponent } from '../search-result-grid-element.component'; +import { ViewMode } from '../../../+search-page/search-options.model'; @Component({ selector: 'ds-community-search-result-grid-element', @@ -11,7 +12,7 @@ import { SearchResultGridElementComponent } from '../search-result-grid-element. templateUrl: 'community-search-result-grid-element.component.html' }) -@gridElementFor(CommunitySearchResult) +@renderElementsFor(CommunitySearchResult, ViewMode.Grid) export class CommunitySearchResultGridElementComponent extends SearchResultGridElementComponent { } diff --git a/src/app/object-grid/search-result-grid-element/item-search-result/item-search-result-grid-element.component.ts b/src/app/object-grid/search-result-grid-element/item-search-result/item-search-result-grid-element.component.ts index 7a82803c9b..d4989d2efd 100644 --- a/src/app/object-grid/search-result-grid-element/item-search-result/item-search-result-grid-element.component.ts +++ b/src/app/object-grid/search-result-grid-element/item-search-result/item-search-result-grid-element.component.ts @@ -1,9 +1,10 @@ import { Component } from '@angular/core'; -import { gridElementFor } from '../../grid-element-decorator'; +import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator'; 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 { ViewMode } from '../../../+search-page/search-options.model'; @Component({ selector: 'ds-item-search-result-grid-element', @@ -11,5 +12,5 @@ import { ItemSearchResult } from '../../../object-collection/shared/item-search- templateUrl: 'item-search-result-grid-element.component.html' }) -@gridElementFor(ItemSearchResult) +@renderElementsFor(ItemSearchResult, ViewMode.Grid) export class ItemSearchResultGridElementComponent extends SearchResultGridElementComponent {} diff --git a/src/app/object-grid/wrapper-grid-element/wrapper-grid-element.component.ts b/src/app/object-grid/wrapper-grid-element/wrapper-grid-element.component.ts index bd15a0d443..000c826188 100644 --- a/src/app/object-grid/wrapper-grid-element/wrapper-grid-element.component.ts +++ b/src/app/object-grid/wrapper-grid-element/wrapper-grid-element.component.ts @@ -1,7 +1,8 @@ import { Component, Input, Injector, ReflectiveInjector, OnInit } from '@angular/core'; import { GenericConstructor } from '../../core/shared/generic-constructor'; -import { getGridElementFor } from '../grid-element-decorator'; +import { rendersDSOType } from '../../object-collection/shared/dso-element-decorator'; import { ListableObject } from '../../object-collection/shared/listable-object.model'; +import { ViewMode } from '../../+search-page/search-options.model'; @Component({ selector: 'ds-wrapper-grid-element', @@ -22,6 +23,6 @@ export class WrapperGridElementComponent implements OnInit { getGridElement(): string { const f: GenericConstructor = this.object.constructor as GenericConstructor; - return getGridElementFor(f); + return rendersDSOType(f, ViewMode.Grid); } } diff --git a/src/app/object-list/collection-list-element/collection-list-element.component.ts b/src/app/object-list/collection-list-element/collection-list-element.component.ts index a99e64a27f..c065a64b72 100644 --- a/src/app/object-list/collection-list-element/collection-list-element.component.ts +++ b/src/app/object-list/collection-list-element/collection-list-element.component.ts @@ -2,7 +2,8 @@ import { Component, Inject } from '@angular/core'; import { Collection } from '../../core/shared/collection.model'; import { ObjectListElementComponent } from '../object-list-element/object-list-element.component'; -import { listElementFor } from '../list-element-decorator'; +import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator'; +import { ViewMode } from '../../+search-page/search-options.model'; @Component({ selector: 'ds-collection-list-element', @@ -10,5 +11,5 @@ import { listElementFor } from '../list-element-decorator'; templateUrl: './collection-list-element.component.html' }) -@listElementFor(Collection) +@renderElementsFor(Collection, ViewMode.List) export class CollectionListElementComponent extends ObjectListElementComponent {} diff --git a/src/app/object-list/community-list-element/community-list-element.component.ts b/src/app/object-list/community-list-element/community-list-element.component.ts index c05915e8d7..11ff392942 100644 --- a/src/app/object-list/community-list-element/community-list-element.component.ts +++ b/src/app/object-list/community-list-element/community-list-element.component.ts @@ -2,7 +2,8 @@ import { Component, Input, Inject } from '@angular/core'; import { Community } from '../../core/shared/community.model'; import { ObjectListElementComponent } from '../object-list-element/object-list-element.component'; -import { listElementFor } from '../list-element-decorator'; +import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator'; +import { ViewMode } from '../../+search-page/search-options.model'; @Component({ selector: 'ds-community-list-element', @@ -10,5 +11,5 @@ import { listElementFor } from '../list-element-decorator'; templateUrl: './community-list-element.component.html' }) -@listElementFor(Community) +@renderElementsFor(Community, ViewMode.List) export class CommunityListElementComponent extends ObjectListElementComponent {} diff --git a/src/app/object-list/item-list-element/item-list-element.component.ts b/src/app/object-list/item-list-element/item-list-element.component.ts index cc6c837bb7..bdc5733dcd 100644 --- a/src/app/object-list/item-list-element/item-list-element.component.ts +++ b/src/app/object-list/item-list-element/item-list-element.component.ts @@ -2,7 +2,8 @@ import { Component, Input, Inject } from '@angular/core'; import { Item } from '../../core/shared/item.model'; import { ObjectListElementComponent } from '../object-list-element/object-list-element.component'; -import { listElementFor } from '../list-element-decorator'; +import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator'; +import { ViewMode } from '../../+search-page/search-options.model'; @Component({ selector: 'ds-item-list-element', @@ -10,5 +11,5 @@ import { listElementFor } from '../list-element-decorator'; templateUrl: './item-list-element.component.html' }) -@listElementFor(Item) +@renderElementsFor(Item, ViewMode.List) export class ItemListElementComponent extends ObjectListElementComponent {} diff --git a/src/app/object-list/list-element-decorator.ts b/src/app/object-list/list-element-decorator.ts index aa044755ea..e69de29bb2 100644 --- a/src/app/object-list/list-element-decorator.ts +++ b/src/app/object-list/list-element-decorator.ts @@ -1,16 +0,0 @@ -import { GenericConstructor } from '../core/shared/generic-constructor'; -import { ListableObject } from '../object-collection/shared/listable-object.model'; - -const listElementMap = new Map(); -export function listElementFor(listable: GenericConstructor) { - return function decorator(objectElement: any) { - if (!objectElement) { - return; - } - listElementMap.set(listable, objectElement); - }; -} - -export function getListElementFor(listable: GenericConstructor) { - return listElementMap.get(listable); -} diff --git a/src/app/object-list/object-list.component.html b/src/app/object-list/object-list.component.html index b97524d58c..0178533bda 100644 --- a/src/app/object-list/object-list.component.html +++ b/src/app/object-list/object-list.component.html @@ -12,7 +12,7 @@ (paginationChange)="onPaginationChange($event)">
  • - +
diff --git a/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts b/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts index 9bea14e9a1..1b5d7ef0ba 100644 --- a/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts +++ b/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts @@ -1,9 +1,10 @@ import { Component } from '@angular/core'; -import { listElementFor } from '../../list-element-decorator'; +import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator'; import { CollectionSearchResult } from './collection-search-result.model'; import { SearchResultListElementComponent } from '../search-result-list-element.component'; import { Collection } from '../../../core/shared/collection.model'; +import { ViewMode } from '../../../+search-page/search-options.model'; @Component({ selector: 'ds-collection-search-result-list-element', @@ -11,5 +12,5 @@ import { Collection } from '../../../core/shared/collection.model'; templateUrl: 'collection-search-result-list-element.component.html' }) -@listElementFor(CollectionSearchResult) +@renderElementsFor(CollectionSearchResult, ViewMode.List) export class CollectionSearchResultListElementComponent extends SearchResultListElementComponent {} diff --git a/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.ts b/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.ts index 741b4b4f65..d9ab001f58 100644 --- a/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.ts +++ b/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.ts @@ -1,9 +1,10 @@ import { Component } from '@angular/core'; -import { listElementFor } from '../../list-element-decorator'; +import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator'; import { CommunitySearchResult } from './community-search-result.model'; import { SearchResultListElementComponent } from '../search-result-list-element.component'; import { Community } from '../../../core/shared/community.model'; +import { ViewMode } from '../../../+search-page/search-options.model'; @Component({ selector: 'ds-community-search-result-list-element', @@ -11,7 +12,7 @@ import { Community } from '../../../core/shared/community.model'; templateUrl: 'community-search-result-list-element.component.html' }) -@listElementFor(CommunitySearchResult) +@renderElementsFor(CommunitySearchResult, ViewMode.List) export class CommunitySearchResultListElementComponent extends SearchResultListElementComponent { } diff --git a/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.ts b/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.ts index 2974a87883..929233f1a3 100644 --- a/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.ts +++ b/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.ts @@ -1,9 +1,10 @@ import { Component } from '@angular/core'; -import { listElementFor } from '../../list-element-decorator'; +import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator'; import { SearchResultListElementComponent } from '../search-result-list-element.component'; import { Item } from '../../../core/shared/item.model'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; +import { ViewMode } from '../../../+search-page/search-options.model'; @Component({ selector: 'ds-item-search-result-list-element', @@ -11,5 +12,5 @@ import { ItemSearchResult } from '../../../object-collection/shared/item-search- templateUrl: 'item-search-result-list-element.component.html' }) -@listElementFor(ItemSearchResult) +@renderElementsFor(ItemSearchResult, ViewMode.List) export class ItemSearchResultListElementComponent extends SearchResultListElementComponent {} diff --git a/src/app/object-list/wrapper-list-element/wrapper-list-element.component.ts b/src/app/object-list/wrapper-list-element/wrapper-list-element.component.ts index 2e1184b023..ff5591442d 100644 --- a/src/app/object-list/wrapper-list-element/wrapper-list-element.component.ts +++ b/src/app/object-list/wrapper-list-element/wrapper-list-element.component.ts @@ -1,7 +1,8 @@ import { Component, Input, Injector, ReflectiveInjector, OnInit } from '@angular/core'; -import { getListElementFor } from '../list-element-decorator' +import { rendersDSOType } from '../../object-collection/shared/dso-element-decorator' import { GenericConstructor } from '../../core/shared/generic-constructor'; import { ListableObject } from '../../object-collection/shared/listable-object.model'; +import { ViewMode } from '../../+search-page/search-options.model'; @Component({ selector: 'ds-wrapper-list-element', @@ -17,11 +18,10 @@ export class WrapperListElementComponent implements OnInit { ngOnInit(): void { this.objectInjector = ReflectiveInjector.resolveAndCreate( [{provide: 'objectElementProvider', useFactory: () => (this.object) }], this.injector); - } getListElement(): string { const f: GenericConstructor = this.object.constructor as GenericConstructor; - return getListElementFor(f); + return rendersDSOType(f, ViewMode.List); } } diff --git a/src/styles/_custom_variables.scss b/src/styles/_custom_variables.scss index f52a99f014..8c0dcae928 100644 --- a/src/styles/_custom_variables.scss +++ b/src/styles/_custom_variables.scss @@ -1,3 +1,4 @@ $content-spacing: $spacer * 1.5; $button-height: $input-btn-padding-y * 2 + $input-btn-line-height + calculateRem($input-btn-border-width*2); +$card-height-percentage:98%;