From d962e40c58d1fc46c9e2c8fe2b525fda9bafa1e3 Mon Sep 17 00:00:00 2001 From: lotte Date: Wed, 16 Oct 2019 11:21:25 +0200 Subject: [PATCH] added TypeDoc --- .../generic-item-page-field.component.ts | 2 +- .../+item-page/simple/item-page.component.ts | 8 +-- .../publication/publication.component.ts | 7 ++ .../metadata-representation-list.component.ts | 1 - .../my-dspace-new-submission.component.ts | 3 + src/app/+search-page/search-page.module.ts | 4 -- src/app/+search-page/search-result.model.ts | 3 + .../search-results.component.ts | 3 + .../search-result-element-decorator.ts | 1 - .../models/normalized-eperson.model.ts | 1 - .../eperson/models/normalized-group.model.ts | 1 - src/app/core/metadata/metadata-field.model.ts | 3 + .../core/metadata/metadata-schema.model.ts | 3 + src/app/core/shared/browse-entry.model.ts | 3 + src/app/core/shared/dspace-object.model.ts | 5 +- src/app/core/shared/item.model.ts | 6 ++ .../journal/journal-grid-element.component.ts | 1 - ...ue-search-result-grid-element.component.ts | 2 +- ...me-search-result-grid-element.component.ts | 2 +- ...al-search-result-grid-element.component.ts | 2 +- ...ue-search-result-list-element.component.ts | 2 +- ...me-search-result-list-element.component.ts | 2 +- ...al-search-result-list-element.component.ts | 2 +- .../journal-issue/journal-issue.component.ts | 3 + .../journal-volume.component.ts | 3 + .../item-pages/journal/journal.component.ts | 3 + ...it-search-result-grid-element.component.ts | 2 +- ...on-search-result-grid-element.component.ts | 2 +- ...ct-search-result-grid-element.component.ts | 2 +- ...rgunit-item-page-list-element.component.ts | 2 +- ...person-item-page-list-element.component.ts | 4 +- ...it-search-result-list-element.component.ts | 2 +- ...on-search-result-list-element.component.ts | 2 +- ...ct-search-result-list-element.component.ts | 2 +- .../dso-selector/dso-selector.component.ts | 3 + .../dso-input-suggestions.component.ts | 8 +++ ...etadata-representation-loader.component.ts | 15 +++- .../metadata-representation.decorator.ts | 13 ++++ .../metadata-representation.directive.ts | 3 + .../collection-element-link.type.ts | 6 ++ .../object-collection.component.ts | 71 +++++++++++++++++-- .../claimed-task-search-result.model.ts | 1 - .../shared/item-search-result.model.ts | 5 +- .../shared/listable-object.model.ts | 4 ++ ...table-object-component-loader.component.ts | 23 +++++- .../listable-object.decorator.ts | 13 +++- .../listable-object.directive.ts | 3 + .../abstract-listable-element.component.ts | 11 +++ .../shared/pool-task-search-result.model.ts | 1 - ...-search-result-detail-element.component.ts | 2 +- .../item-detail-preview-field.component.ts | 2 +- .../item-detail-preview.component.ts | 2 +- ...-search-result-detail-element.component.ts | 10 +-- ...-search-result-detail-element.component.ts | 7 +- .../search-result-detail-element.component.ts | 6 ++ ...-search-result-detail-element.component.ts | 2 +- ...-search-result-detail-element.component.ts | 2 +- .../object-detail/object-detail.component.ts | 11 +++ .../collection-grid-element.component.ts | 3 + .../community-grid-element.component.ts | 3 + .../object-grid/object-grid.component.ts | 67 ++++++++++++++++- ...on-search-result-grid-element.component.ts | 4 +- ...ty-search-result-grid-element.component.ts | 5 +- ...on-search-result-grid-element.component.ts | 2 +- .../search-result-grid-element.component.ts | 10 +++ .../collection-list-element.component.ts | 4 +- .../community-list-element.component.ts | 4 +- .../item-type-badge.component.ts | 6 ++ .../item-metadata-list-element.component.ts | 2 +- ...a-representation-list-element.component.ts | 3 + ...ed-search-result-list-element.component.ts | 3 +- .../item-list-preview.component.ts | 2 +- ...esult-list-element-submission.component.ts | 2 +- ...ol-search-result-list-element.component.ts | 8 ++- ...em-search-result-list-element.component.ts | 2 +- ...em-search-result-list-element.component.ts | 2 +- .../object-list/object-list.component.ts | 69 +++++++++++++++++- ...on-search-result-list-element.component.ts | 4 +- ...ty-search-result-list-element.component.ts | 4 +- ...on-search-result-list-element.component.ts | 2 +- .../search-result-list-element.component.ts | 11 ++- src/app/shared/shared.module.ts | 10 +++ .../view-mode-switch.component.ts | 18 +++++ src/backend/api.ts | 4 +- 84 files changed, 479 insertions(+), 93 deletions(-) diff --git a/src/app/+item-page/simple/field-components/specific-field/generic/generic-item-page-field.component.ts b/src/app/+item-page/simple/field-components/specific-field/generic/generic-item-page-field.component.ts index ee7d27a11f..3b8d261dcc 100644 --- a/src/app/+item-page/simple/field-components/specific-field/generic/generic-item-page-field.component.ts +++ b/src/app/+item-page/simple/field-components/specific-field/generic/generic-item-page-field.component.ts @@ -10,7 +10,7 @@ import { ItemPageFieldComponent } from '../item-page-field.component'; /** * This component can be used to represent metadata on a simple item page. * It is the most generic way of displaying metadata values - * It expects 4 parameters: The item, a seperator, the metadata keys and an i18n key + * It expects 4 parameters: The item, a separator, the metadata keys and an i18n key */ export class GenericItemPageFieldComponent extends ItemPageFieldComponent { diff --git a/src/app/+item-page/simple/item-page.component.ts b/src/app/+item-page/simple/item-page.component.ts index 3b51357e00..10deef23e4 100644 --- a/src/app/+item-page/simple/item-page.component.ts +++ b/src/app/+item-page/simple/item-page.component.ts @@ -1,19 +1,16 @@ - -import { mergeMap, filter, map, take, tap } from 'rxjs/operators'; +import { map } from 'rxjs/operators'; import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { Observable } from 'rxjs'; import { ItemDataService } from '../../core/data/item-data.service'; import { RemoteData } from '../../core/data/remote-data'; -import { Bitstream } from '../../core/shared/bitstream.model'; import { Item } from '../../core/shared/item.model'; import { MetadataService } from '../../core/metadata/metadata.service'; import { fadeInOut } from '../../shared/animations/fade'; -import { hasValue } from '../../shared/empty.util'; import { redirectToPageNotFoundOn404 } from '../../core/shared/operators'; import { ViewMode } from '../../core/shared/view-mode.model'; @@ -53,6 +50,9 @@ export class ItemPageComponent implements OnInit { private metadataService: MetadataService, ) { } + /** + * Initialize instance variables + */ ngOnInit(): void { this.itemRD$ = this.route.data.pipe( map((data) => data.item as RemoteData), diff --git a/src/app/+item-page/simple/item-types/publication/publication.component.ts b/src/app/+item-page/simple/item-types/publication/publication.component.ts index 777f42d1f0..7f49e41995 100644 --- a/src/app/+item-page/simple/item-types/publication/publication.component.ts +++ b/src/app/+item-page/simple/item-types/publication/publication.component.ts @@ -7,6 +7,10 @@ import { getRelatedItemsByTypeLabel } from '../shared/item-relationships-utils'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; +/** + * Component that represents a publication Item page + */ + @listableObjectComponent('Publication', ViewMode.StandalonePage) @listableObjectComponent(Item, ViewMode.StandalonePage) @Component({ @@ -36,6 +40,9 @@ export class PublicationComponent extends ItemComponent implements OnInit { */ journalIssues$: Observable; + /** + * Initialize instance variables + */ ngOnInit(): void { super.ngOnInit(); diff --git a/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.ts b/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.ts index f88bb12386..20512733f1 100644 --- a/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.ts +++ b/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.ts @@ -1,6 +1,5 @@ import { Component, Input } from '@angular/core'; import { MetadataRepresentation } from '../../../core/shared/metadata-representation/metadata-representation.model'; -import { ViewMode } from '../../../core/shared/view-mode.model'; @Component({ selector: 'ds-metadata-representation-list', diff --git a/src/app/+my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.ts b/src/app/+my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.ts index 09adc16af6..76853db924 100644 --- a/src/app/+my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.ts +++ b/src/app/+my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.ts @@ -25,6 +25,9 @@ import { SearchResult } from '../../+search-page/search-result.model'; templateUrl: './my-dspace-new-submission.component.html' }) export class MyDSpaceNewSubmissionComponent implements OnDestroy, OnInit { + /** + * Output that emits the workspace item when the upload has completed + */ @Output() uploadEnd = new EventEmitter>>(); /** diff --git a/src/app/+search-page/search-page.module.ts b/src/app/+search-page/search-page.module.ts index 940ac45442..da6d5856d5 100644 --- a/src/app/+search-page/search-page.module.ts +++ b/src/app/+search-page/search-page.module.ts @@ -43,8 +43,6 @@ const components = [ SearchResultsComponent, SearchSidebarComponent, SearchSettingsComponent, - CollectionSearchResultGridElementComponent, - CommunitySearchResultGridElementComponent, SearchFiltersComponent, SearchFilterComponent, SearchFacetFilterComponent, @@ -83,8 +81,6 @@ const components = [ SearchConfigurationService ], entryComponents: [ - CollectionSearchResultGridElementComponent, - CommunitySearchResultGridElementComponent, SearchFacetFilterComponent, SearchRangeFilterComponent, SearchTextFilterComponent, diff --git a/src/app/+search-page/search-result.model.ts b/src/app/+search-page/search-result.model.ts index 4f15656d59..95359209d9 100644 --- a/src/app/+search-page/search-result.model.ts +++ b/src/app/+search-page/search-result.model.ts @@ -17,6 +17,9 @@ export class SearchResult implements ListableObject { */ hitHighlights: MetadataMap; + /** + * Method that returns as which type of object this object should be rendered + */ getRenderTypes(): Array> { return [this.constructor as GenericConstructor]; } 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 46d15d97d9..24c973e296 100644 --- a/src/app/+search-page/search-results/search-results.component.ts +++ b/src/app/+search-page/search-results/search-results.component.ts @@ -25,6 +25,9 @@ import { CollectionElementLinkType } from '../../shared/object-collection/collec export class SearchResultsComponent { hasNoValue = hasNoValue; + /** + * The link type of the listed search results + */ @Input() linkType: CollectionElementLinkType; /** diff --git a/src/app/+search-page/search-service/search-result-element-decorator.ts b/src/app/+search-page/search-service/search-result-element-decorator.ts index 34e61abc01..62887387c5 100644 --- a/src/app/+search-page/search-service/search-result-element-decorator.ts +++ b/src/app/+search-page/search-service/search-result-element-decorator.ts @@ -18,7 +18,6 @@ export function searchResultFor(domainConstructor: GenericConstructor> { return [this.constructor as GenericConstructor]; } diff --git a/src/app/core/metadata/metadata-schema.model.ts b/src/app/core/metadata/metadata-schema.model.ts index 36ccaae36d..78d5338f2e 100644 --- a/src/app/core/metadata/metadata-schema.model.ts +++ b/src/app/core/metadata/metadata-schema.model.ts @@ -28,6 +28,9 @@ export class MetadataSchema implements ListableObject { */ namespace: string; + /** + * Method that returns as which type of object this object should be rendered + */ getRenderTypes(): Array> { return [this.constructor as GenericConstructor]; } diff --git a/src/app/core/shared/browse-entry.model.ts b/src/app/core/shared/browse-entry.model.ts index b2470032ad..977afb40f6 100644 --- a/src/app/core/shared/browse-entry.model.ts +++ b/src/app/core/shared/browse-entry.model.ts @@ -30,6 +30,9 @@ export class BrowseEntry implements ListableObject { */ count: number; + /** + * Method that returns as which type of object this object should be rendered + */ getRenderTypes(): Array> { return [this.constructor as GenericConstructor]; } diff --git a/src/app/core/shared/dspace-object.model.ts b/src/app/core/shared/dspace-object.model.ts index 685f886b19..2e50f19c4f 100644 --- a/src/app/core/shared/dspace-object.model.ts +++ b/src/app/core/shared/dspace-object.model.ts @@ -110,7 +110,7 @@ export class DSpaceObject implements CacheableObject, ListableObject { * Like [[firstMetadata]], but only returns a string value, or `undefined`. * * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[Metadata]]. - * @param {MetadataValueFilter} filter The value filter to use. If unspecified, no filtering will be done. + * @param {MetadataValueFilter} valueFilter The value filter to use. If unspecified, no filtering will be done. * @returns {string} the first matching string value, or `undefined`. */ firstMetadataValue(keyOrKeys: string | string[], valueFilter?: MetadataValueFilter): string { @@ -147,6 +147,9 @@ export class DSpaceObject implements CacheableObject, ListableObject { }); } + /** + * Method that returns as which type of object this object should be rendered + */ getRenderTypes(): Array> { return [this.constructor as GenericConstructor]; } diff --git a/src/app/core/shared/item.model.ts b/src/app/core/shared/item.model.ts index 191a258c4f..733a8f941c 100644 --- a/src/app/core/shared/item.model.ts +++ b/src/app/core/shared/item.model.ts @@ -14,6 +14,9 @@ import { GenericConstructor } from './generic-constructor'; import { ListableObject } from '../../shared/object-collection/shared/listable-object.model'; import { DEFAULT_ENTITY_TYPE } from '../../shared/metadata-representation/metadata-representation.decorator'; +/** + * Class representing a DSpace Item + */ export class Item extends DSpaceObject { static type = new ResourceType('item'); @@ -113,6 +116,9 @@ export class Item extends DSpaceObject { })); } + /** + * Method that returns as which type of object this object should be rendered + */ getRenderTypes(): Array> { let entityType = this.firstMetadataValue('relationship.type'); if (isEmpty(entityType)) { diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/journal/journal-grid-element.component.ts b/src/app/entity-groups/journal-entities/item-grid-elements/journal/journal-grid-element.component.ts index c86529317b..1d7c1e5b73 100644 --- a/src/app/entity-groups/journal-entities/item-grid-elements/journal/journal-grid-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-grid-elements/journal/journal-grid-element.component.ts @@ -1,5 +1,4 @@ import { Component } from '@angular/core'; -import { focusShadow } from '../../../../shared/animations/focus'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { AbstractListableElementComponent } from '../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.ts b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.ts index ceda357559..9d27842c16 100644 --- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.ts @@ -14,7 +14,7 @@ import { Item } from '../../../../../core/shared/item.model'; animations: [focusShadow] }) /** - * The component for displaying a grid element for an item of the type Journal Issue + * The component for displaying a grid element for an item search result of the type Journal Issue */ export class JournalIssueSearchResultGridElementComponent extends SearchResultGridElementComponent { } diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.ts b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.ts index 9ce106f962..802a6d8692 100644 --- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.ts @@ -14,7 +14,7 @@ import { focusShadow } from '../../../../../shared/animations/focus'; animations: [focusShadow] }) /** - * The component for displaying a grid element for an item of the type Journal Volume + * The component for displaying a grid element for an item search result of the type Journal Volume */ export class JournalVolumeSearchResultGridElementComponent extends SearchResultGridElementComponent { } diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.ts b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.ts index 5f24601223..97d43356c6 100644 --- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.ts @@ -14,7 +14,7 @@ import { Item } from '../../../../../core/shared/item.model'; animations: [focusShadow] }) /** - * The component for displaying a grid element for an item of the type Journal + * The component for displaying a grid element for an item search result of the type Journal */ export class JournalSearchResultGridElementComponent extends SearchResultGridElementComponent { } diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.ts index 65969752ea..1d320cbfe8 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.ts @@ -12,7 +12,7 @@ import { Item } from '../../../../../core/shared/item.model'; templateUrl: './journal-issue-search-result-list-element.component.html' }) /** - * The component for displaying a list element for an item of the type Journal Issue + * The component for displaying a list element for an item search result of the type Journal Issue */ export class JournalIssueSearchResultListElementComponent extends SearchResultListElementComponent { } diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts index 05ffe5ea57..41795b8022 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts @@ -12,7 +12,7 @@ import { ViewMode } from '../../../../../core/shared/view-mode.model'; templateUrl: './journal-volume-search-result-list-element.component.html' }) /** - * The component for displaying a list element for an item of the type Journal Volume + * The component for displaying a list element for an item search result of the type Journal Volume */ export class JournalVolumeSearchResultListElementComponent extends SearchResultListElementComponent { } diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts index 3e389dcc83..01de0d4626 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts @@ -12,7 +12,7 @@ import { ViewMode } from '../../../../../core/shared/view-mode.model'; templateUrl: './journal-search-result-list-element.component.html' }) /** - * The component for displaying a list element for an item of the type Journal + * The component for displaying a list element for an item search result of the type Journal */ export class JournalSearchResultListElementComponent extends SearchResultListElementComponent { } diff --git a/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.ts b/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.ts index 151a60a198..3643d5ad91 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.ts +++ b/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.ts @@ -27,6 +27,9 @@ export class JournalIssueComponent extends ItemComponent { */ publications$: Observable; + /** + * Initialize the instance variables + */ ngOnInit(): void { super.ngOnInit(); diff --git a/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.ts b/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.ts index b1d83c25f2..8864e05695 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.ts +++ b/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.ts @@ -27,6 +27,9 @@ export class JournalVolumeComponent extends ItemComponent { */ issues$: Observable; + /** + * Initialize the instance variables + */ ngOnInit(): void { super.ngOnInit(); diff --git a/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.ts b/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.ts index 1282144a2f..239993aa08 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.ts +++ b/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.ts @@ -22,6 +22,9 @@ export class JournalComponent extends ItemComponent { */ volumes$: Observable; + /** + * Initialize the instance variables + */ ngOnInit(): void { super.ngOnInit(); diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.ts index 535fb0cdbc..71a435762a 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.ts @@ -14,7 +14,7 @@ import { Item } from '../../../../../core/shared/item.model'; animations: [focusShadow] }) /** - * The component for displaying a grid element for an item of the type Organisation Unit + * The component for displaying a grid element for an item search result of the type Organisation Unit */ export class OrgunitSearchResultGridElementComponent extends SearchResultGridElementComponent { } diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts index 19293c9ed4..55bc4f5a0d 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts @@ -14,7 +14,7 @@ import { Item } from '../../../../../core/shared/item.model'; animations: [focusShadow] }) /** - * The component for displaying a grid element for an item of the type Person + * The component for displaying a grid element for an item search result of the type Person */ export class PersonSearchResultGridElementComponent extends SearchResultGridElementComponent { } diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts index 57c57c6cb1..a352d2dcb0 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts @@ -14,7 +14,7 @@ import { focusShadow } from '../../../../../shared/animations/focus'; animations: [focusShadow] }) /** - * The component for displaying a grid element for an item of the type Project + * The component for displaying a grid element for an item search result of the type Project */ export class ProjectSearchResultGridElementComponent extends SearchResultGridElementComponent { } diff --git a/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts index 2025faac75..7121670b38 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts @@ -9,7 +9,7 @@ import { ItemMetadataRepresentation } from '../../../../core/shared/metadata-rep templateUrl: './orgunit-item-page-list-element.component.html' }) /** - * The component for displaying a list element for an item of the type OrgUnit + * The component for displaying an item of the type OrgUnit as a metadata field */ export class OrgunitItemPageListElementComponent { metadataRepresentation: ItemMetadataRepresentation; diff --git a/src/app/entity-groups/research-entities/item-list-elements/person/person-item-page-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/person/person-item-page-list-element.component.ts index 6679852cdb..d7666237ad 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/person/person-item-page-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/person/person-item-page-list-element.component.ts @@ -12,8 +12,8 @@ import { ItemMetadataRepresentation } from '../../../../core/shared/metadata-rep templateUrl: './person-item-page-list-element.component.html' }) /** - * The component for displaying a list element for an item of the type Person - */ + * The component for displaying an item of the type Person as a metadata field +*/ export class PersonItemPageListElementComponent { metadataRepresentation: ItemMetadataRepresentation; } diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/orgunit/orgunit-search-result-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/orgunit/orgunit-search-result-list-element.component.ts index 860e1154ef..5e3cdedd60 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/orgunit/orgunit-search-result-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/orgunit/orgunit-search-result-list-element.component.ts @@ -12,7 +12,7 @@ import { Item } from '../../../../../core/shared/item.model'; templateUrl: './orgunit-search-result-list-element.component.html' }) /** - * The component for displaying a list element for an item of the type Organisation Unit + * The component for displaying a list element for an item search result of the type Organisation Unit */ export class OrgunitSearchResultListElementComponent extends SearchResultListElementComponent { } diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts index b53a369504..b4b4621261 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts @@ -12,7 +12,7 @@ import { Item } from '../../../../../core/shared/item.model'; templateUrl: './person-search-result-list-element.component.html' }) /** - * The component for displaying a list element for an item of the type Person + * The component for displaying a list element for an item search result of the type Person */ export class PersonSearchResultListElementComponent extends SearchResultListElementComponent { } diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts index c00ae53d6c..faa15add31 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts @@ -12,7 +12,7 @@ import { ViewMode } from '../../../../../core/shared/view-mode.model'; templateUrl: './project-search-result-list-element.component.html' }) /** - * The component for displaying a list element for an item of the type Project + * The component for displaying a list element for an item search result of the type Project */ export class ProjectSearchResultListElementComponent extends SearchResultListElementComponent { } diff --git a/src/app/shared/dso-selector/dso-selector/dso-selector.component.ts b/src/app/shared/dso-selector/dso-selector/dso-selector.component.ts index 32149e29dc..af26f3f04f 100644 --- a/src/app/shared/dso-selector/dso-selector/dso-selector.component.ts +++ b/src/app/shared/dso-selector/dso-selector/dso-selector.component.ts @@ -32,6 +32,9 @@ import { ViewMode } from '../../../core/shared/view-mode.model'; * The user can search the list by using the input field */ export class DSOSelectorComponent implements OnInit { + /** + * The view mode of the listed objects + */ viewMode = ViewMode.ListElement; /** * The initially selected DSO's uuid diff --git a/src/app/shared/input-suggestions/dso-input-suggestions/dso-input-suggestions.component.ts b/src/app/shared/input-suggestions/dso-input-suggestions/dso-input-suggestions.component.ts index 92775f25c6..cf3658d5c9 100644 --- a/src/app/shared/input-suggestions/dso-input-suggestions/dso-input-suggestions.component.ts +++ b/src/app/shared/input-suggestions/dso-input-suggestions/dso-input-suggestions.component.ts @@ -24,8 +24,16 @@ import { CollectionElementLinkType } from '../../object-collection/collection-el * Component representing a form with a autocomplete functionality for DSpaceObjects */ export class DsoInputSuggestionsComponent extends InputSuggestionsComponent { + /** + * The view mode of the listed object suggestions + */ viewMode = ViewMode.ListElement; + + /** + * The available link types + */ linkTypes = CollectionElementLinkType; + /** * The suggestions that should be shown */ diff --git a/src/app/shared/metadata-representation/metadata-representation-loader.component.ts b/src/app/shared/metadata-representation/metadata-representation-loader.component.ts index 9dcdeb14ec..eb385b5afd 100644 --- a/src/app/shared/metadata-representation/metadata-representation-loader.component.ts +++ b/src/app/shared/metadata-representation/metadata-representation-loader.component.ts @@ -12,19 +12,30 @@ import { MetadataRepresentationDirective } from './metadata-representation.direc templateUrl: './metadata-representation-loader.component.html' }) /** - * Component for determining what component to use depending on the item's relationship type (relationship.type) + * Component for determining what component to use depending on the item's relationship type (relationship.type), its metadata representation and, optionally, its context */ export class MetadataRepresentationLoaderComponent implements OnInit { /** * The item or metadata to determine the component for */ @Input() mdRepresentation: MetadataRepresentation; + + /** + * The optional context + */ @Input() context: Context; + + /** + * Directive to determine where the dynamic child component is located + */ @ViewChild(MetadataRepresentationDirective) mdRepDirective: MetadataRepresentationDirective; constructor(private componentFactoryResolver: ComponentFactoryResolver) { } + /** + * Set up the dynamic child component + */ ngOnInit(): void { const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.getComponent()); @@ -36,7 +47,7 @@ export class MetadataRepresentationLoaderComponent implements OnInit { } /** - * Fetch the component depending on the item's relationship type + * Fetch the component depending on the item's relationship type, metadata representation type and context * @returns {string} */ private getComponent(): GenericConstructor { diff --git a/src/app/shared/metadata-representation/metadata-representation.decorator.ts b/src/app/shared/metadata-representation/metadata-representation.decorator.ts index 7ba626dbf7..0903e05f56 100644 --- a/src/app/shared/metadata-representation/metadata-representation.decorator.ts +++ b/src/app/shared/metadata-representation/metadata-representation.decorator.ts @@ -8,6 +8,13 @@ export const DEFAULT_ENTITY_TYPE = 'Publication'; export const DEFAULT_REPRESENTATION_TYPE = MetadataRepresentationType.PlainText; export const DEFAULT_CONTEXT = Context.Undefined; + +/** + * Decorator function to store metadata representation mapping + * @param entityType The entity type the component represents + * @param mdRepresentationType The metadata representation type the component represents + * @param context The optional context the component represents + */ export function metadataRepresentationComponent(entityType: string, mdRepresentationType: MetadataRepresentationType, context: Context = DEFAULT_CONTEXT) { return function decorator(component: any) { if (hasNoValue(map.get(entityType))) { @@ -24,6 +31,12 @@ export function metadataRepresentationComponent(entityType: string, mdRepresenta } } +/** + * Getter to retrieve a matching component by entity type, metadata representation and context + * @param entityType The entity type to match + * @param mdRepresentationType The metadata representation to match + * @param context The context to match + */ export function getMetadataRepresentationComponent(entityType: string, mdRepresentationType: MetadataRepresentationType, context: Context = DEFAULT_CONTEXT) { const mapForEntity = map.get(entityType); if (hasValue(mapForEntity)) { diff --git a/src/app/shared/metadata-representation/metadata-representation.directive.ts b/src/app/shared/metadata-representation/metadata-representation.directive.ts index c8c909d03f..9ff0573baf 100644 --- a/src/app/shared/metadata-representation/metadata-representation.directive.ts +++ b/src/app/shared/metadata-representation/metadata-representation.directive.ts @@ -3,6 +3,9 @@ import { Directive, ViewContainerRef } from '@angular/core'; @Directive({ selector: '[dsMetadataRepresentation]', }) +/** + * Directive used as a hook to know where to inject the dynamic metadata representation component + */ export class MetadataRepresentationDirective { constructor(public viewContainerRef: ViewContainerRef) { } } diff --git a/src/app/shared/object-collection/collection-element-link.type.ts b/src/app/shared/object-collection/collection-element-link.type.ts index 5d50ac3bb2..78b690b5ab 100644 --- a/src/app/shared/object-collection/collection-element-link.type.ts +++ b/src/app/shared/object-collection/collection-element-link.type.ts @@ -1,3 +1,9 @@ +/** + * Enumeration used to render links in listable elements + * None: Don't render the link as a link, but as plain text + * Link: Render the link as a simple link + * ExternalLink: Render the link as a link that opens in a new tab + */ export enum CollectionElementLinkType { None, Link, ExternalLink } diff --git a/src/app/shared/object-collection/object-collection.component.ts b/src/app/shared/object-collection/object-collection.component.ts index 2756d38639..955c21a26a 100644 --- a/src/app/shared/object-collection/object-collection.component.ts +++ b/src/app/shared/object-collection/object-collection.component.ts @@ -15,21 +15,55 @@ import { CollectionElementLinkType } from './collection-element-link.type'; import { PaginatedList } from '../../core/data/paginated-list'; import { Context } from '../../core/shared/context.model'; +/** + * Component that can render a list of listable objects in different view modes + */ @Component({ selector: 'ds-viewable-collection', styleUrls: ['./object-collection.component.scss'], templateUrl: './object-collection.component.html', }) export class ObjectCollectionComponent implements OnInit { - + /** + * The list of listable objects to render in this component + */ @Input() objects: RemoteData>; + + /** + * The current pagination configuration + */ @Input() config?: PaginationComponentOptions; + + /** + * The current sorting configuration + */ @Input() sortConfig: SortOptions; + + /** + * Whether or not the list elements have a border or not + */ @Input() hasBorder = false; + + /** + * Whether or not to hide the gear to change the sort and pagination configuration + */ @Input() hideGear = false; + + /** + * The link type of the rendered list elements + */ @Input() linkType: CollectionElementLinkType; + + /** + * The context of the rendered list elements + */ @Input() context: Context; + + /** + * the page info of the list + */ pageInfo: Observable; + /** * An event fired when the page is changed. * Event's payload equals to the newly selected page. @@ -48,6 +82,9 @@ export class ObjectCollectionComponent implements OnInit { */ @Output() sortDirectionChange: EventEmitter = new EventEmitter(); + /** + * An event fired one of the pagination parameters is changed + */ @Output() paginationChange: EventEmitter = new EventEmitter(); /** @@ -55,8 +92,15 @@ export class ObjectCollectionComponent implements OnInit { * Event's payload equals to the newly selected sort field. */ @Output() sortFieldChange: EventEmitter = new EventEmitter(); - data: any = {}; + + /** + * Emits the current view mode + */ currentMode$: Observable; + + /** + * The available view modes + */ viewModeEnum = ViewMode; ngOnInit(): void { @@ -83,22 +127,39 @@ export class ObjectCollectionComponent implements OnInit { private router: Router) { } + /** + * Updates the page + * @param event The new page number + */ onPageChange(event) { this.pageChange.emit(event); } - + /** + * Updates the page size + * @param event The new page size + */ onPageSizeChange(event) { this.pageSizeChange.emit(event); } - + /** + * Updates the sort direction + * @param event The new sort direction + */ onSortDirectionChange(event) { this.sortDirectionChange.emit(event); } - + /** + * Updates the sort field + * @param event The new sort field + */ onSortFieldChange(event) { this.sortFieldChange.emit(event); } + /** + * Updates the pagination + * @param event The new pagination + */ onPaginationChange(event) { this.paginationChange.emit(event); } diff --git a/src/app/shared/object-collection/shared/claimed-task-search-result.model.ts b/src/app/shared/object-collection/shared/claimed-task-search-result.model.ts index 734b4716ba..4a7bf97850 100644 --- a/src/app/shared/object-collection/shared/claimed-task-search-result.model.ts +++ b/src/app/shared/object-collection/shared/claimed-task-search-result.model.ts @@ -1,6 +1,5 @@ import { ClaimedTask } from '../../../core/tasks/models/claimed-task-object.model'; import { SearchResult } from '../../../+search-page/search-result.model'; -import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type'; import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator'; /** diff --git a/src/app/shared/object-collection/shared/item-search-result.model.ts b/src/app/shared/object-collection/shared/item-search-result.model.ts index defd4a99c8..d38968ce76 100644 --- a/src/app/shared/object-collection/shared/item-search-result.model.ts +++ b/src/app/shared/object-collection/shared/item-search-result.model.ts @@ -3,10 +3,13 @@ import { Item } from '../../../core/shared/item.model'; import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator'; import { GenericConstructor } from '../../../core/shared/generic-constructor'; import { ListableObject } from './listable-object.model'; -import { isEmpty } from '../../empty.util'; @searchResultFor(Item) export class ItemSearchResult extends SearchResult { + + /** + * Method that returns as which type of object this object should be rendered + */ getRenderTypes(): Array> { return this.indexableObject.getRenderTypes().map((type) => { if (typeof type === 'string') { diff --git a/src/app/shared/object-collection/shared/listable-object.model.ts b/src/app/shared/object-collection/shared/listable-object.model.ts index a81c9f4aeb..d7eaf0750f 100644 --- a/src/app/shared/object-collection/shared/listable-object.model.ts +++ b/src/app/shared/object-collection/shared/listable-object.model.ts @@ -2,5 +2,9 @@ import { TypedObject } from '../../../core/cache/object-cache.reducer'; import { GenericConstructor } from '../../../core/shared/generic-constructor'; export interface ListableObject extends TypedObject { + + /** + * Method that returns as which type of object this object should be rendered + */ getRenderTypes(): Array>; } diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts index 2b90d3f94f..648298b0fe 100644 --- a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts +++ b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts @@ -21,20 +21,37 @@ export class ListableObjectComponentLoaderComponent implements OnInit { */ @Input() object: ListableObject; - // TODO DO SOMETHING WITH THIS + /** + * The index of the object in the list + */ @Input() index: number; + /** * The preferred view-mode to display */ @Input() viewMode: ViewMode; + /** + * The context of listable object + */ @Input() context: Context; + + /** + * The type of link used to render the links inside the listable object + */ @Input() linkType: CollectionElementLinkType; + + /** + * Directive hook used to place the dynamic child component + */ @ViewChild(ListableObjectDirective) listableObjectDirective: ListableObjectDirective; constructor(private componentFactoryResolver: ComponentFactoryResolver) { } + /** + * Setup the dynamic child component + */ ngOnInit(): void { const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.getComponent()); @@ -48,8 +65,8 @@ export class ListableObjectComponentLoaderComponent implements OnInit { } /** - * Fetch the component depending on the item's relationship type - * @returns {string} + * Fetch the component depending on the item's relationship type, view mode and context + * @returns {GenericConstructor} */ private getComponent(): GenericConstructor { return getListableObjectComponent(this.object.getRenderTypes(), this.viewMode, this.context) diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts b/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts index 1a0daa6505..66110516bb 100644 --- a/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts +++ b/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts @@ -10,9 +10,10 @@ export const DEFAULT_VIEW_MODE = ViewMode.ListElement; const map = new Map(); /** - * Decorator used for rendering simple item pages by type and viewMode (and optionally a representationType) - * @param type - * @param viewMode + * Decorator used for rendering a listable object + * @param type The object type or entity type the component represents + * @param viewMode The view mode the component represents + * @param context The optional context the component represents */ export function listableObjectComponent(objectType: string | GenericConstructor, viewMode: ViewMode, context: Context = DEFAULT_CONTEXT) { return function decorator(component: any) { @@ -29,6 +30,12 @@ export function listableObjectComponent(objectType: string | GenericConstructor< }; } +/** + * Getter to retrieve the matching listable object component + * @param types The types of which one should match the listable component + * @param viewMode The view mode that should match the components + * @param context The context that should match the components + */ export function getListableObjectComponent(types: Array>, viewMode: ViewMode, context: Context = DEFAULT_CONTEXT) { let bestMatch; let bestMatchValue = 0; diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object.directive.ts b/src/app/shared/object-collection/shared/listable-object/listable-object.directive.ts index ef84c8d7aa..93c06961f4 100644 --- a/src/app/shared/object-collection/shared/listable-object/listable-object.directive.ts +++ b/src/app/shared/object-collection/shared/listable-object/listable-object.directive.ts @@ -3,6 +3,9 @@ import { Directive, ViewContainerRef } from '@angular/core'; @Directive({ selector: '[dsListableObject]', }) +/** + * Directive used as a hook to know where to inject the dynamic listable object component + */ export class ListableObjectDirective { constructor(public viewContainerRef: ViewContainerRef) { } } diff --git a/src/app/shared/object-collection/shared/object-collection-element/abstract-listable-element.component.ts b/src/app/shared/object-collection/shared/object-collection-element/abstract-listable-element.component.ts index 6d9f0289dd..c09f7df18c 100644 --- a/src/app/shared/object-collection/shared/object-collection-element/abstract-listable-element.component.ts +++ b/src/app/shared/object-collection/shared/object-collection-element/abstract-listable-element.component.ts @@ -7,7 +7,18 @@ import { CollectionElementLinkType } from '../../collection-element-link.type'; template: ``, }) export class AbstractListableElementComponent { + /** + * The object to render in this list element + */ @Input() object: T; + + /** + * The link type to determine the type of link rendered in this element + */ @Input() linkType: CollectionElementLinkType; + + /** + * The available link types + */ linkTypes = CollectionElementLinkType; } diff --git a/src/app/shared/object-collection/shared/pool-task-search-result.model.ts b/src/app/shared/object-collection/shared/pool-task-search-result.model.ts index b44b172acb..0af55d31a4 100644 --- a/src/app/shared/object-collection/shared/pool-task-search-result.model.ts +++ b/src/app/shared/object-collection/shared/pool-task-search-result.model.ts @@ -1,6 +1,5 @@ import { PoolTask } from '../../../core/tasks/models/pool-task-object.model'; import { SearchResult } from '../../../+search-page/search-result.model'; -import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type'; import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator'; /** diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.ts index 01086897c5..fa51fa61f6 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-task-search-result/claimed-task-search-result-detail-element.component.ts @@ -15,7 +15,7 @@ import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claim import { Item } from '../../../../core/shared/item.model'; /** - * This component renders claimed task object for the mydspace result in the detail view. + * This component renders claimed task object for the search result in the detail view. */ @Component({ selector: 'ds-claimed-task-search-result-detail-element', diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts index c87a771f51..2456913080 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component.ts @@ -19,7 +19,7 @@ export class ItemDetailPreviewFieldComponent { @Input() item: Item; /** - * The mydspace result object + * The search result object */ @Input() object: SearchResult; diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts index 772ba3e50a..d9b0785559 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts @@ -25,7 +25,7 @@ export class ItemDetailPreviewComponent { @Input() item: Item; /** - * The mydspace result object + * The search result object */ @Input() object: SearchResult; diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts index 4a9b4d6380..7e611ec3c8 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts @@ -8,7 +8,7 @@ import { listableObjectComponent } from '../../../object-collection/shared/lista import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; /** - * This component renders item object for the mydspace result in the detail view. + * This component renders item object for the search result in the detail view. */ @Component({ selector: 'ds-item-search-result-detail-element', @@ -16,13 +16,7 @@ import { ItemSearchResult } from '../../../object-collection/shared/item-search- templateUrl: './item-search-result-detail-element.component.html' }) -@listableObjectComponent('PublicationSearchResult', ViewMode.DetailedListElement) -@listableObjectComponent('OrgUnitSearchResult', ViewMode.DetailedListElement) -@listableObjectComponent('PersonSearchResult', ViewMode.DetailedListElement) -@listableObjectComponent('JournalSearchResult', ViewMode.DetailedListElement) -@listableObjectComponent('JournalIssueSearchResult', ViewMode.DetailedListElement) -@listableObjectComponent('JournalVolumeSearchResult', ViewMode.DetailedListElement) -@listableObjectComponent('ProjectSearchResult', ViewMode.DetailedListElement) +@listableObjectComponent(Item, ViewMode.DetailedListElement) export class ItemSearchResultDetailElementComponent extends SearchResultDetailElementComponent { /** diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.ts index ad528b3877..f0ffe0b44f 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.ts @@ -1,4 +1,4 @@ -import { Component, Inject } from '@angular/core'; +import { Component } from '@angular/core'; import { Observable } from 'rxjs'; import { find } from 'rxjs/operators'; @@ -11,7 +11,6 @@ import { WorkflowItem } from '../../../../core/submission/models/workflowitem.mo import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { PoolTaskSearchResult } from '../../../object-collection/shared/pool-task-search-result.model'; -import { Item } from '../../../../core/shared/item.model'; /** * This component renders pool task object for the mydspace result in the detail view. @@ -40,10 +39,6 @@ export class PoolSearchResultDetailElementComponent extends SearchResultDetailEl */ public workflowitem: WorkflowItem; - constructor() { - super(); - } - /** * Initialize all instance variables */ diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/search-result-detail-element.component.ts index b5b60c9035..f1e9fe698c 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/search-result-detail-element.component.ts @@ -6,6 +6,9 @@ import { Metadata } from '../../../core/shared/metadata.utils'; import { SearchResult } from '../../../+search-page/search-result.model'; import { hasValue } from '../../empty.util'; +/** + * Component representing Search Results with ViewMode.DetailedElement + */ @Component({ selector: 'ds-search-result-detail-element', template: `` @@ -17,6 +20,9 @@ export class SearchResultDetailElementComponent, K ext */ dso: K; + /** + * Initialize instance variables + */ ngOnInit(): void { if (hasValue(this.object)) { this.dso = this.object.indexableObject; diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.ts index 6393e26dbb..830c842223 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.ts @@ -13,7 +13,7 @@ import { listableObjectComponent } from '../../../object-collection/shared/lista import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflowitem-search-result.model'; /** - * This component renders workflowitem object for the mydspace result in the detail view. + * This component renders workflowitem object for the search result in the detail view. */ @Component({ selector: 'ds-workflow-item-search-result-detail-element', diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts index fc2c6a87cc..0f8e1a65cb 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts @@ -14,7 +14,7 @@ import { listableObjectComponent } from '../../../object-collection/shared/lista import { WorkspaceItemSearchResult } from '../../../object-collection/shared/workspaceitem-search-result.model'; /** - * This component renders workspaceitem object for the mydspace result in the detail view. + * This component renders workspace item object for the search result in the detail view. */ @Component({ selector: 'ds-workspace-item-search-result-detail-element', diff --git a/src/app/shared/object-detail/object-detail.component.ts b/src/app/shared/object-detail/object-detail.component.ts index 36963b2f5d..fb68316251 100644 --- a/src/app/shared/object-detail/object-detail.component.ts +++ b/src/app/shared/object-detail/object-detail.component.ts @@ -31,6 +31,9 @@ import { CollectionElementLinkType } from '../object-collection/collection-eleme animations: [fadeIn] }) export class ObjectDetailComponent { + /** + * The view mode of this component + */ viewMode = ViewMode.DetailedListElement; /** @@ -52,7 +55,15 @@ export class ObjectDetailComponent { * A boolean representing if to hide pagination when there is only a page */ @Input() hidePagerWhenSinglePage = true; + + /** + * The link type of the rendered listable elements + */ @Input() linkType: CollectionElementLinkType; + + /** + * The context of the rendered listable elements + */ @Input() context: Context; /** diff --git a/src/app/shared/object-grid/collection-grid-element/collection-grid-element.component.ts b/src/app/shared/object-grid/collection-grid-element/collection-grid-element.component.ts index 1261cd6dfd..6f8bf5264e 100644 --- a/src/app/shared/object-grid/collection-grid-element/collection-grid-element.component.ts +++ b/src/app/shared/object-grid/collection-grid-element/collection-grid-element.component.ts @@ -5,6 +5,9 @@ import { AbstractListableElementComponent } from '../../object-collection/shared import { ViewMode } from '../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../object-collection/shared/listable-object/listable-object.decorator'; +/** + * Component representing a grid element for collection + */ @Component({ selector: 'ds-collection-grid-element', styleUrls: ['./collection-grid-element.component.scss'], diff --git a/src/app/shared/object-grid/community-grid-element/community-grid-element.component.ts b/src/app/shared/object-grid/community-grid-element/community-grid-element.component.ts index 67d4ac663c..05c84b683b 100644 --- a/src/app/shared/object-grid/community-grid-element/community-grid-element.component.ts +++ b/src/app/shared/object-grid/community-grid-element/community-grid-element.component.ts @@ -5,6 +5,9 @@ import { AbstractListableElementComponent } from '../../object-collection/shared import { ViewMode } from '../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../object-collection/shared/listable-object/listable-object.decorator'; +/** + * Component representing a grid element for a community + */ @Component({ selector: 'ds-community-grid-element', styleUrls: ['./community-grid-element.component.scss'], diff --git a/src/app/shared/object-grid/object-grid.component.ts b/src/app/shared/object-grid/object-grid.component.ts index 6b61e6bfd8..2da4abe13b 100644 --- a/src/app/shared/object-grid/object-grid.component.ts +++ b/src/app/shared/object-grid/object-grid.component.ts @@ -34,20 +34,57 @@ import { CollectionElementLinkType } from '../object-collection/collection-eleme }) export class ObjectGridComponent implements OnInit { + /** + * The view mode of the this component + */ viewMode = ViewMode.GridElement; + /** + * The current pagination configuration + */ @Input() config: PaginationComponentOptions; + + /** + * The current sort configuration + */ @Input() sortConfig: SortOptions; + + /** + * The whether or not the gear is hidden + */ @Input() hideGear = false; + + /** + * Whether or not the pager is visible when there is only a single page of results + */ @Input() hidePagerWhenSinglePage = true; + + /** + * The link type of the listable elements + */ @Input() linkType: CollectionElementLinkType; + + /** + * The context of the listable elements + */ @Input() context: Context; + + /** + * Behavior subject to output the current listable objects + */ private _objects$: BehaviorSubject>>; + /** + * Setter to make sure the observable is turned into an observable + * @param objects The new objects to output + */ @Input() set objects(objects: RemoteData>) { this._objects$.next(objects); } + /** + * Getter to return the current objects + */ get objects() { return this._objects$.getValue(); } @@ -82,7 +119,10 @@ export class ObjectGridComponent implements OnInit { */ @Output() sortDirectionChange: EventEmitter = new EventEmitter(); - @Output() paginationChange: EventEmitter = new EventEmitter(); + /** + * An event fired when on of the pagination parameters changes + */ + @Output() paginationChange: EventEmitter = new EventEmitter(); /** * An event fired when the sort field is changed. @@ -96,6 +136,9 @@ export class ObjectGridComponent implements OnInit { this._objects$ = new BehaviorSubject(undefined); } + /** + * Initialize the instance variables + */ ngOnInit(): void { const nbColumns$ = this.hostWindow.widthCategory.pipe( map((widthCat: WidthCategory) => { @@ -139,22 +182,40 @@ export class ObjectGridComponent implements OnInit { })); } + /** + * Emits the current page when it changes + * @param event The new page + */ onPageChange(event) { this.pageChange.emit(event); } - + /** + * Emits the current page size when it changes + * @param event The new page size + */ onPageSizeChange(event) { this.pageSizeChange.emit(event); } - + /** + * Emits the current sort direction when it changes + * @param event The new sort direction + */ onSortDirectionChange(event) { this.sortDirectionChange.emit(event); } + /** + * Emits the current sort field when it changes + * @param event The new sort field + */ onSortFieldChange(event) { this.sortFieldChange.emit(event); } + /** + * Emits the current pagination when it changes + * @param event The new pagination + */ onPaginationChange(event) { this.paginationChange.emit(event); } diff --git a/src/app/shared/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.ts b/src/app/shared/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.ts index 1d0f47b70b..a834327736 100644 --- a/src/app/shared/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.ts +++ b/src/app/shared/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component.ts @@ -11,6 +11,8 @@ import { listableObjectComponent } from '../../../object-collection/shared/lista styleUrls: ['../search-result-grid-element.component.scss', 'collection-search-result-grid-element.component.scss'], templateUrl: 'collection-search-result-grid-element.component.html' }) - +/** + * Component representing a grid element for a collection search result + */ @listableObjectComponent(CollectionSearchResult, ViewMode.GridElement) export class CollectionSearchResultGridElementComponent extends SearchResultGridElementComponent {} diff --git a/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.ts b/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.ts index 806e6a44e3..e726c3e803 100644 --- a/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.ts +++ b/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.ts @@ -10,8 +10,9 @@ import { listableObjectComponent } from '../../../object-collection/shared/lista styleUrls: ['../search-result-grid-element.component.scss', 'community-search-result-grid-element.component.scss'], templateUrl: 'community-search-result-grid-element.component.html' }) - +/** + * Component representing a grid element for a community search result + */ @listableObjectComponent(CommunitySearchResult, ViewMode.GridElement) export class CommunitySearchResultGridElementComponent extends SearchResultGridElementComponent { - } diff --git a/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.ts b/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.ts index bda211532a..76618f18f2 100644 --- a/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.ts +++ b/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.ts @@ -14,7 +14,7 @@ import { ItemSearchResult } from '../../../../object-collection/shared/item-sear animations: [focusShadow] }) /** - * The component for displaying a grid element for an item of the type Publication + * The component for displaying a grid element for an item search result of the type Publication */ export class PublicationSearchResultGridElementComponent extends SearchResultGridElementComponent { } diff --git a/src/app/shared/object-grid/search-result-grid-element/search-result-grid-element.component.ts b/src/app/shared/object-grid/search-result-grid-element/search-result-grid-element.component.ts index a136636cda..75345338e7 100644 --- a/src/app/shared/object-grid/search-result-grid-element/search-result-grid-element.component.ts +++ b/src/app/shared/object-grid/search-result-grid-element/search-result-grid-element.component.ts @@ -14,7 +14,14 @@ import { hasValue } from '../../empty.util'; }) export class SearchResultGridElementComponent, K extends DSpaceObject> extends AbstractListableElementComponent implements OnInit { + /** + * The DSpaceObject of the search result + */ dso: K; + + /** + * Whether or not the grid element is currently collapsed + */ isCollapsed$: Observable; public constructor(protected truncatableService: TruncatableService) { @@ -24,6 +31,9 @@ export class SearchResultGridElementComponent, K exten } } + /** + * Retrieve the dso from the search result + */ ngOnInit(): void { if (hasValue(this.object)) { this.dso = this.object.indexableObject; diff --git a/src/app/shared/object-list/collection-list-element/collection-list-element.component.ts b/src/app/shared/object-list/collection-list-element/collection-list-element.component.ts index 685a990409..48bd6697a0 100644 --- a/src/app/shared/object-list/collection-list-element/collection-list-element.component.ts +++ b/src/app/shared/object-list/collection-list-element/collection-list-element.component.ts @@ -10,6 +10,8 @@ import { listableObjectComponent } from '../../object-collection/shared/listable styleUrls: ['./collection-list-element.component.scss'], templateUrl: './collection-list-element.component.html' }) - +/** + * Component representing list element for a collection + */ @listableObjectComponent(Collection, ViewMode.ListElement) export class CollectionListElementComponent extends AbstractListableElementComponent {} diff --git a/src/app/shared/object-list/community-list-element/community-list-element.component.ts b/src/app/shared/object-list/community-list-element/community-list-element.component.ts index 4581c2c0da..aa583378de 100644 --- a/src/app/shared/object-list/community-list-element/community-list-element.component.ts +++ b/src/app/shared/object-list/community-list-element/community-list-element.component.ts @@ -10,6 +10,8 @@ import { listableObjectComponent } from '../../object-collection/shared/listable styleUrls: ['./community-list-element.component.scss'], templateUrl: './community-list-element.component.html' }) - +/** + * Component representing a list element for a community + */ @listableObjectComponent(Community, ViewMode.ListElement) export class CommunityListElementComponent extends AbstractListableElementComponent {} diff --git a/src/app/shared/object-list/item-type-badge/item-type-badge.component.ts b/src/app/shared/object-list/item-type-badge/item-type-badge.component.ts index a4e12959f4..5518ede202 100644 --- a/src/app/shared/object-list/item-type-badge/item-type-badge.component.ts +++ b/src/app/shared/object-list/item-type-badge/item-type-badge.component.ts @@ -7,6 +7,12 @@ import { DSpaceObject } from '../../../core/shared/dspace-object.model'; selector: 'ds-item-type-badge', templateUrl: './item-type-badge.component.html' }) +/** + * Component rendering the type of an item as a badge + */ export class ItemTypeBadgeComponent { + /** + * The component used to retrieve the type from + */ @Input() object: DSpaceObject; } diff --git a/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts b/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts index 4f27bf05dd..3be16bcb5e 100644 --- a/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts +++ b/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts @@ -17,7 +17,7 @@ import { metadataRepresentationComponent } from '../../../metadata-representatio export class ItemMetadataListElementComponent extends MetadataRepresentationListElementComponent { /** * The view-mode we're currently on - * @type {ElementViewMode} + * @type {ViewMode} */ viewMode = ViewMode.ListElement; } diff --git a/src/app/shared/object-list/metadata-representation-list-element/metadata-representation-list-element.component.ts b/src/app/shared/object-list/metadata-representation-list-element/metadata-representation-list-element.component.ts index 7b8e0d7f9c..2e14485fbb 100644 --- a/src/app/shared/object-list/metadata-representation-list-element/metadata-representation-list-element.component.ts +++ b/src/app/shared/object-list/metadata-representation-list-element/metadata-representation-list-element.component.ts @@ -9,5 +9,8 @@ import { MetadataRepresentation } from '../../../core/shared/metadata-representa * An abstract class for displaying a single MetadataRepresentation */ export class MetadataRepresentationListElementComponent { + /** + * The metadata representation of this component + */ metadataRepresentation: MetadataRepresentation; } diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts index aba6482bd1..6c1250773f 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts @@ -13,10 +13,9 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model'; import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component'; -import { Item } from '../../../../core/shared/item.model'; /** - * This component renders claimed task object for the mydspace result in the list view. + * This component renders claimed task object for the search result in the list view. */ @Component({ selector: 'ds-claimed-search-result-list-element', diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts index 8324e748f1..0395c8c84b 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts @@ -22,7 +22,7 @@ export class ItemListPreviewComponent { @Input() item: Item; /** - * The mydspace result object + * The search result object */ @Input() object: SearchResult; diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts index 72ee0ba235..db0216908d 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts @@ -9,7 +9,7 @@ import { ItemSearchResult } from '../../../object-collection/shared/item-search- import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component'; /** - * This component renders item object for the mydspace result in the list view. + * This component renders item object for the search result in the list view for submission. */ @Component({ selector: 'ds-item-search-result-list-element-submission', diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts index 5597a2126d..93941f8a81 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts @@ -1,4 +1,4 @@ -import { Component, Inject, OnInit } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; import { find } from 'rxjs/operators'; @@ -13,10 +13,9 @@ import { listableObjectComponent } from '../../../object-collection/shared/lista import { PoolTaskSearchResult } from '../../../object-collection/shared/pool-task-search-result.model'; import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component'; import { TruncatableService } from '../../../truncatable/truncatable.service'; -import { Item } from '../../../../core/shared/item.model'; /** - * This component renders pool task object for the mydspace result in the list view. + * This component renders pool task object for the search result in the list view. */ @Component({ selector: 'ds-pool-search-result-list-element', @@ -42,6 +41,9 @@ export class PoolSearchResultListElementComponent extends SearchResultListElemen */ public workflowitem: WorkflowItem; + /** + * The index of this list element + */ public index: number; constructor(protected truncatableService: TruncatableService) { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts index cb985b9906..8182342c3a 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts @@ -14,7 +14,7 @@ import { WorkflowItemSearchResult } from '../../../object-collection/shared/work import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component'; /** - * This component renders workflowitem object for the mydspace result in the list view. + * This component renders workflowitem object for the search result in the list view. */ @Component({ selector: 'ds-workflow-item-my-dspace-result-list-element', diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts index ed2770f852..2e9363decc 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts @@ -14,7 +14,7 @@ import { WorkspaceItemSearchResult } from '../../../object-collection/shared/wor import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component'; /** - * This component renders workspaceitem object for the mydspace result in the list view. + * This component renders workspaceitem object for the search result in the list view. */ @Component({ selector: 'ds-workspace-item-search-result-list-element', diff --git a/src/app/shared/object-list/object-list.component.ts b/src/app/shared/object-list/object-list.component.ts index 9704dee70e..e1dabce943 100644 --- a/src/app/shared/object-list/object-list.component.ts +++ b/src/app/shared/object-list/object-list.component.ts @@ -25,19 +25,63 @@ import { CollectionElementLinkType } from '../object-collection/collection-eleme animations: [fadeIn] }) export class ObjectListComponent { + /** + * The view mode of the this component + */ viewMode = ViewMode.ListElement; + + /** + * The current pagination configuration + */ @Input() config: PaginationComponentOptions; + + /** + * The current sort configuration + */ @Input() sortConfig: SortOptions; + + /** + * Whether or not the list elements have a border + */ @Input() hasBorder = false; + + /** + * The whether or not the gear is hidden + */ @Input() hideGear = false; + + /** + * Whether or not the pager is visible when there is only a single page of results + */ @Input() hidePagerWhenSinglePage = true; + + /** + * The link type of the listable elements + */ @Input() linkType: CollectionElementLinkType; + + /** + * The context of the listable elements + */ @Input() context: Context; + + /** + * The current listable objects + */ private _objects: RemoteData>; + + + /** + * Setter for the objects + * @param objects The new objects + */ @Input() set objects(objects: RemoteData>) { this._objects = objects; } + /** + * Getter to return the current objects + */ get objects() { return this._objects; } @@ -72,6 +116,9 @@ export class ObjectListComponent { */ @Output() sortDirectionChange: EventEmitter = new EventEmitter(); + /** + * An event fired when on of the pagination parameters changes + */ @Output() paginationChange: EventEmitter = new EventEmitter(); /** @@ -79,24 +126,42 @@ export class ObjectListComponent { * Event's payload equals to the newly selected sort field. */ @Output() sortFieldChange: EventEmitter = new EventEmitter(); - data: any = {}; + /** + * Emits the current page when it changes + * @param event The new page + */ onPageChange(event) { this.pageChange.emit(event); } + /** + * Emits the current page size when it changes + * @param event The new page size + */ onPageSizeChange(event) { this.pageSizeChange.emit(event); } - + /** + * Emits the current sort direction when it changes + * @param event The new sort direction + */ onSortDirectionChange(event) { this.sortDirectionChange.emit(event); } + /** + * Emits the current sort field when it changes + * @param event The new sort field + */ onSortFieldChange(event) { this.sortFieldChange.emit(event); } + /** + * Emits the current pagination when it changes + * @param event The new pagination + */ onPaginationChange(event) { this.paginationChange.emit(event); } diff --git a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts index b42186e367..9e09068ddf 100644 --- a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts +++ b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts @@ -10,6 +10,8 @@ import { listableObjectComponent } from '../../../object-collection/shared/lista styleUrls: ['../search-result-list-element.component.scss', 'collection-search-result-list-element.component.scss'], templateUrl: 'collection-search-result-list-element.component.html' }) - +/** + * Component representing a collection search result in list view + */ @listableObjectComponent(CollectionSearchResult, ViewMode.ListElement) export class CollectionSearchResultListElementComponent extends SearchResultListElementComponent {} diff --git a/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.ts b/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.ts index a1da9a04ff..b2fd695b39 100644 --- a/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.ts +++ b/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.ts @@ -10,7 +10,9 @@ import { listableObjectComponent } from '../../../object-collection/shared/lista styleUrls: ['../search-result-list-element.component.scss', 'community-search-result-list-element.component.scss'], templateUrl: 'community-search-result-list-element.component.html' }) - +/** + * Component representing a community search result in list view + */ @listableObjectComponent(CommunitySearchResult, ViewMode.ListElement) export class CommunitySearchResultListElementComponent extends SearchResultListElementComponent { diff --git a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.ts b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.ts index 7b376ead8e..3e0db60b4c 100644 --- a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.ts +++ b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.ts @@ -13,7 +13,7 @@ import { Item } from '../../../../../../core/shared/item.model'; templateUrl: './publication-search-result-list-element.component.html' }) /** - * The component for displaying a list element for an item of the type Publication + * The component for displaying a list element for an item search result of the type Publication */ export class PublicationSearchResultListElementComponent extends SearchResultListElementComponent { } diff --git a/src/app/shared/object-list/search-result-list-element/search-result-list-element.component.ts b/src/app/shared/object-list/search-result-list-element/search-result-list-element.component.ts index 3d4bf9224b..93fc00bc87 100644 --- a/src/app/shared/object-list/search-result-list-element/search-result-list-element.component.ts +++ b/src/app/shared/object-list/search-result-list-element/search-result-list-element.component.ts @@ -7,7 +7,6 @@ import { hasValue } from '../../empty.util'; import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component'; import { TruncatableService } from '../../truncatable/truncatable.service'; import { Metadata } from '../../../core/shared/metadata.utils'; -import { MetadataMap } from '../../../core/shared/metadata.models'; @Component({ selector: 'ds-search-result-list-element', @@ -15,13 +14,18 @@ import { MetadataMap } from '../../../core/shared/metadata.models'; }) export class SearchResultListElementComponent, K extends DSpaceObject> extends AbstractListableElementComponent implements OnInit { + /** + * The DSpaceObject of the search result + */ dso: K; - metadata: MetadataMap; public constructor(protected truncatableService: TruncatableService) { super(); } + /** + * Retrieve the dso from the search result + */ ngOnInit(): void { if (hasValue(this.object)) { this.dso = this.object.indexableObject; @@ -48,6 +52,9 @@ export class SearchResultListElementComponent, K exten return Metadata.firstValue([this.object.hitHighlights, this.dso.metadata], keyOrKeys); } + /** + * Emits if the list element is currently collapsed or not + */ isCollapsed(): Observable { return this.truncatableService.isCollapsed(this.dso.id); } diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 57bf6ae8bf..98fc375630 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -139,6 +139,8 @@ import { ListableObjectComponentLoaderComponent } from './object-collection/shar import { PublicationSearchResultListElementComponent } from './object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component'; import { PublicationSearchResultGridElementComponent } from './object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component'; import { ListableObjectDirective } from './object-collection/shared/listable-object/listable-object.directive'; +import { CommunitySearchResultGridElementComponent } from './object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component'; +import { CollectionSearchResultGridElementComponent } from './object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component'; const MODULES = [ // Do NOT include UniversalModule, HttpModule, or JsonpModule here @@ -253,7 +255,13 @@ const COMPONENTS = [ EditItemSelectorComponent, CommunitySearchResultListElementComponent, CollectionSearchResultListElementComponent, + CommunitySearchResultGridElementComponent, + CollectionSearchResultGridElementComponent, ListableObjectComponentLoaderComponent, + CollectionListElementComponent, + CommunityListElementComponent, + CollectionGridElementComponent, + CommunityGridElementComponent, BrowseByComponent, ItemTypeBadgeComponent, MetadataRepresentationLoaderComponent @@ -268,6 +276,8 @@ const ENTRY_COMPONENTS = [ CollectionSearchResultListElementComponent, CollectionGridElementComponent, CommunityGridElementComponent, + CommunitySearchResultGridElementComponent, + CollectionSearchResultGridElementComponent, SearchResultGridElementComponent, PublicationListElementComponent, PublicationGridElementComponent, diff --git a/src/app/shared/view-mode-switch/view-mode-switch.component.ts b/src/app/shared/view-mode-switch/view-mode-switch.component.ts index cd0d8ce47d..d406573646 100644 --- a/src/app/shared/view-mode-switch/view-mode-switch.component.ts +++ b/src/app/shared/view-mode-switch/view-mode-switch.component.ts @@ -22,13 +22,23 @@ export class ViewModeSwitchComponent implements OnInit, OnDestroy { */ @Input() inPlaceSearch; + /** + * The current view mode + */ currentMode: ViewMode = ViewMode.ListElement; + + /** + * All available view modes + */ viewModeEnum = ViewMode; private sub: Subscription; constructor(private searchService: SearchService) { } + /** + * Initialize the instance variables + */ ngOnInit(): void { if (isEmpty(this.viewModeList)) { this.viewModeList = [ViewMode.ListElement, ViewMode.GridElement]; @@ -39,6 +49,10 @@ export class ViewModeSwitchComponent implements OnInit, OnDestroy { }); } + /** + * Switch view modes + * @param viewMode The new view mode + */ switchViewTo(viewMode: ViewMode) { this.searchService.setViewMode(viewMode, this.getSearchLinkParts()); } @@ -49,6 +63,10 @@ export class ViewModeSwitchComponent implements OnInit, OnDestroy { } } + /** + * Whether or not to show a certain view mode + * @param viewMode The view mode to check for + */ isToShow(viewMode: ViewMode) { return this.viewModeList && this.viewModeList.includes(viewMode); } diff --git a/src/backend/api.ts b/src/backend/api.ts index da83b1ba12..e1943b5d30 100644 --- a/src/backend/api.ts +++ b/src/backend/api.ts @@ -117,7 +117,7 @@ export function createMockApi() { const id = req.params.item_id; try { req.item_id = id; - req.object = ITEMS.items.find((item) => { + req.item = ITEMS.items.find((item) => { return item.id === id; }); next(); @@ -127,7 +127,7 @@ export function createMockApi() { }); router.route('/items/:item_id').get((req, res) => { - res.json(toHALResponse(req, req.object)); + res.json(toHALResponse(req, req.item)); }); router.route('/bundles').get((req, res) => {