mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-08 10:34:15 +00:00
#150 Intermediate commit
This commit is contained in:
@@ -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<Array<SearchResult<DSpaceObject>>>;
|
||||
@Input() searchConfig: SearchOptions;
|
||||
@Input() sortConfig: SortOptions;
|
||||
@Input() viewMode: ViewMode;
|
||||
}
|
||||
|
17
src/app/object-collection/shared/dso-element-decorator.ts
Normal file
17
src/app/object-collection/shared/dso-element-decorator.ts
Normal file
@@ -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<ListableObject>, viewMode : ViewMode) {
|
||||
return function decorator(objectElement: any) {
|
||||
if (!objectElement) {
|
||||
return;
|
||||
}
|
||||
dsoElementMap.set(listable+viewMode, objectElement);
|
||||
};
|
||||
}
|
||||
|
||||
export function rendersDSOType(listable: GenericConstructor<ListableObject>, viewMode : ViewMode) {
|
||||
return dsoElementMap.get(listable+viewMode);
|
||||
}
|
@@ -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<Collection> {}
|
||||
|
@@ -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<Community> {}
|
||||
|
@@ -29,7 +29,7 @@
|
||||
|
||||
.card{
|
||||
margin-bottom: $card-block-margin-base *3;
|
||||
height: 98%;
|
||||
height: $card-height-percentage;
|
||||
}
|
||||
|
||||
.card-img-top ::ng-deep img
|
||||
|
@@ -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<ListableObject>) {
|
||||
return function decorator(objectElement: any) {
|
||||
if (!objectElement) {
|
||||
return;
|
||||
}
|
||||
gridElementMap.set(gridable, objectElement);
|
||||
};
|
||||
}
|
||||
|
||||
export function getGridElementFor(gridable: GenericConstructor<ListableObject>) {
|
||||
return gridElementMap.get(gridable);
|
||||
}
|
@@ -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<Item> {}
|
||||
|
@@ -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<CollectionSearchResult, Collection> {}
|
||||
|
@@ -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<CommunitySearchResult, Community> {
|
||||
|
||||
}
|
||||
|
@@ -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<ItemSearchResult, Item> {}
|
||||
|
@@ -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<ListableObject> = this.object.constructor as GenericConstructor<ListableObject>;
|
||||
return getGridElementFor(f);
|
||||
return rendersDSOType(f, ViewMode.Grid);
|
||||
}
|
||||
}
|
||||
|
@@ -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<Collection> {}
|
||||
|
@@ -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<Community> {}
|
||||
|
@@ -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<Item> {}
|
||||
|
@@ -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<ListableObject>) {
|
||||
return function decorator(objectElement: any) {
|
||||
if (!objectElement) {
|
||||
return;
|
||||
}
|
||||
listElementMap.set(listable, objectElement);
|
||||
};
|
||||
}
|
||||
|
||||
export function getListElementFor(listable: GenericConstructor<ListableObject>) {
|
||||
return listElementMap.get(listable);
|
||||
}
|
||||
|
@@ -12,7 +12,7 @@
|
||||
(paginationChange)="onPaginationChange($event)">
|
||||
<ul *ngIf="objects?.hasSucceeded"> <!--class="list-unstyled"-->
|
||||
<li *ngFor="let object of objects?.payload">
|
||||
<ds-wrapper-list-element [object]="object"></ds-wrapper-list-element>
|
||||
<ds-wrapper-list-element [object]="object"></ds-wrapper-list-element>
|
||||
</li>
|
||||
</ul>
|
||||
</ds-pagination>
|
||||
|
@@ -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<CollectionSearchResult, Collection> {}
|
||||
|
@@ -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<CommunitySearchResult, Community> {
|
||||
|
||||
}
|
||||
|
@@ -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<ItemSearchResult, Item> {}
|
||||
|
@@ -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<ListableObject> = this.object.constructor as GenericConstructor<ListableObject>;
|
||||
return getListElementFor(f);
|
||||
return rendersDSOType(f, ViewMode.List);
|
||||
}
|
||||
}
|
||||
|
@@ -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%;
|
||||
|
Reference in New Issue
Block a user