mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 18:14:17 +00:00
moved search module contents to shared
This commit is contained in:
@@ -2,8 +2,8 @@ import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
|
|||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { BehaviorSubject, of as observableOf, Observable, Subject } from 'rxjs';
|
import { BehaviorSubject, of as observableOf, Observable, Subject } from 'rxjs';
|
||||||
import { filter, flatMap, map, startWith, switchMap, take, tap } from 'rxjs/operators';
|
import { filter, flatMap, map, startWith, switchMap, take, tap } from 'rxjs/operators';
|
||||||
import { PaginatedSearchOptions } from '../+search-page/paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../shared/search/paginated-search-options.model';
|
||||||
import { SearchService } from '../+search-page/search-service/search.service';
|
import { SearchService } from '../core/shared/search/search.service';
|
||||||
import { SortDirection, SortOptions } from '../core/cache/models/sort-options.model';
|
import { SortDirection, SortOptions } from '../core/cache/models/sort-options.model';
|
||||||
import { CollectionDataService } from '../core/data/collection-data.service';
|
import { CollectionDataService } from '../core/data/collection-data.service';
|
||||||
import { PaginatedList } from '../core/data/paginated-list';
|
import { PaginatedList } from '../core/data/paginated-list';
|
||||||
|
@@ -9,7 +9,7 @@ import { CreateCollectionPageComponent } from './create-collection-page/create-c
|
|||||||
import { CollectionFormComponent } from './collection-form/collection-form.component';
|
import { CollectionFormComponent } from './collection-form/collection-form.component';
|
||||||
import { EditCollectionPageComponent } from './edit-collection-page/edit-collection-page.component';
|
import { EditCollectionPageComponent } from './edit-collection-page/edit-collection-page.component';
|
||||||
import { DeleteCollectionPageComponent } from './delete-collection-page/delete-collection-page.component';
|
import { DeleteCollectionPageComponent } from './delete-collection-page/delete-collection-page.component';
|
||||||
import { SearchService } from '../+search-page/search-service/search.service';
|
import { SearchService } from '../core/shared/search/search.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@@ -5,7 +5,7 @@ import { GenericItemPageFieldComponent } from '../../field-components/specific-f
|
|||||||
import { TruncatePipe } from '../../../../shared/utils/truncate.pipe';
|
import { TruncatePipe } from '../../../../shared/utils/truncate.pipe';
|
||||||
import { ITEM } from '../../../../shared/items/switcher/item-type-switcher.component';
|
import { ITEM } from '../../../../shared/items/switcher/item-type-switcher.component';
|
||||||
import { ItemDataService } from '../../../../core/data/item-data.service';
|
import { ItemDataService } from '../../../../core/data/item-data.service';
|
||||||
import { SearchFixedFilterService } from '../../../../+search-page/search-filters/search-filter/search-fixed-filter.service';
|
import { SearchFixedFilterService } from '../../../../core/shared/search/search-fixed-filter.service';
|
||||||
import { TruncatableService } from '../../../../shared/truncatable/truncatable.service';
|
import { TruncatableService } from '../../../../shared/truncatable/truncatable.service';
|
||||||
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
import { Item } from '../../../../core/shared/item.model';
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
@@ -10,7 +10,7 @@ import { ChangeDetectionStrategy, DebugElement, NO_ERRORS_SCHEMA } from '@angula
|
|||||||
import { ITEM } from '../../../../shared/items/switcher/item-type-switcher.component';
|
import { ITEM } from '../../../../shared/items/switcher/item-type-switcher.component';
|
||||||
import { TruncatePipe } from '../../../../shared/utils/truncate.pipe';
|
import { TruncatePipe } from '../../../../shared/utils/truncate.pipe';
|
||||||
import { isNotEmpty } from '../../../../shared/empty.util';
|
import { isNotEmpty } from '../../../../shared/empty.util';
|
||||||
import { SearchFixedFilterService } from '../../../../+search-page/search-filters/search-filter/search-fixed-filter.service';
|
import { SearchFixedFilterService } from '../../../../core/shared/search/search-fixed-filter.service';
|
||||||
import { RelationshipType } from '../../../../core/shared/item-relationships/relationship-type.model';
|
import { RelationshipType } from '../../../../core/shared/item-relationships/relationship-type.model';
|
||||||
import { PaginatedList } from '../../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../../core/data/paginated-list';
|
||||||
import { RemoteData } from '../../../../core/data/remote-data';
|
import { RemoteData } from '../../../../core/data/remote-data';
|
||||||
|
@@ -4,7 +4,7 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
|||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { NO_ERRORS_SCHEMA } from '@angular/core';
|
import { NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
import { FormsModule } from '@angular/forms';
|
import { FormsModule } from '@angular/forms';
|
||||||
import { SearchFixedFilterService } from '../../../../+search-page/search-filters/search-filter/search-fixed-filter.service';
|
import { SearchFixedFilterService } from '../../../../core/shared/search/search-fixed-filter.service';
|
||||||
import { Item } from '../../../../core/shared/item.model';
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
|
|
||||||
describe('RelatedEntitiesSearchComponent', () => {
|
describe('RelatedEntitiesSearchComponent', () => {
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Component, Input, OnInit } from '@angular/core';
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { Item } from '../../../../core/shared/item.model';
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
import { SearchFixedFilterService } from '../../../../+search-page/search-filters/search-filter/search-fixed-filter.service';
|
import { SearchFixedFilterService } from '../../../../core/shared/search/search-fixed-filter.service';
|
||||||
import { isNotEmpty } from '../../../../shared/empty.util';
|
import { isNotEmpty } from '../../../../shared/empty.util';
|
||||||
import { of } from 'rxjs/internal/observable/of';
|
import { of } from 'rxjs/internal/observable/of';
|
||||||
|
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
import { of as observableOf } from 'rxjs';
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
import { MyDSpaceConfigurationService } from './my-dspace-configuration.service';
|
import { MyDSpaceConfigurationService } from './my-dspace-configuration.service';
|
||||||
import { PaginatedSearchOptions } from '../+search-page/paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../shared/search/paginated-search-options.model';
|
||||||
import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model';
|
||||||
import { SortDirection, SortOptions } from '../core/cache/models/sort-options.model';
|
import { SortDirection, SortOptions } from '../core/cache/models/sort-options.model';
|
||||||
import { SearchFilter } from '../+search-page/search-filter.model';
|
import { SearchFilter } from '../shared/search/search-filter.model';
|
||||||
import { ActivatedRouteStub } from '../shared/testing/active-router-stub';
|
import { ActivatedRouteStub } from '../shared/testing/active-router-stub';
|
||||||
import { MockRoleService } from '../shared/mocks/mock-role-service';
|
import { MockRoleService } from '../shared/mocks/mock-role-service';
|
||||||
import { cold, hot } from 'jasmine-marbles';
|
import { cold, hot } from 'jasmine-marbles';
|
||||||
|
@@ -6,12 +6,12 @@ import { first, map } from 'rxjs/operators';
|
|||||||
|
|
||||||
import { MyDSpaceConfigurationValueType } from './my-dspace-configuration-value-type';
|
import { MyDSpaceConfigurationValueType } from './my-dspace-configuration-value-type';
|
||||||
import { RoleService } from '../core/roles/role.service';
|
import { RoleService } from '../core/roles/role.service';
|
||||||
import { SearchConfigurationOption } from '../+search-page/search-switch-configuration/search-configuration-option.model';
|
import { SearchConfigurationOption } from '../shared/search/search-switch-configuration/search-configuration-option.model';
|
||||||
import { SearchConfigurationService } from '../+search-page/search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../core/shared/search/search-configuration.service';
|
||||||
import { RouteService } from '../shared/services/route.service';
|
import { RouteService } from '../shared/services/route.service';
|
||||||
import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model';
|
||||||
import { SortDirection, SortOptions } from '../core/cache/models/sort-options.model';
|
import { SortDirection, SortOptions } from '../core/cache/models/sort-options.model';
|
||||||
import { SearchFixedFilterService } from '../+search-page/search-filters/search-filter/search-fixed-filter.service';
|
import { SearchFixedFilterService } from '../core/shared/search/search-fixed-filter.service';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service that performs all actions that have to do with the current mydspace configuration
|
* Service that performs all actions that have to do with the current mydspace configuration
|
||||||
|
@@ -20,15 +20,15 @@ import { MyDSpacePageComponent, SEARCH_CONFIG_SERVICE } from './my-dspace-page.c
|
|||||||
import { RouteService } from '../shared/services/route.service';
|
import { RouteService } from '../shared/services/route.service';
|
||||||
import { routeServiceStub } from '../shared/testing/route-service-stub';
|
import { routeServiceStub } from '../shared/testing/route-service-stub';
|
||||||
import { SearchConfigurationServiceStub } from '../shared/testing/search-configuration-service-stub';
|
import { SearchConfigurationServiceStub } from '../shared/testing/search-configuration-service-stub';
|
||||||
import { SearchService } from '../+search-page/search-service/search.service';
|
import { SearchService } from '../core/shared/search/search.service';
|
||||||
import { SearchConfigurationService } from '../+search-page/search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../core/shared/search/search-configuration.service';
|
||||||
import { PaginatedSearchOptions } from '../+search-page/paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../shared/search/paginated-search-options.model';
|
||||||
import { SearchSidebarService } from '../+search-page/search-sidebar/search-sidebar.service';
|
import { SearchSidebarService } from '../core/shared/search/search-sidebar.service';
|
||||||
import { SearchFilterService } from '../+search-page/search-filters/search-filter/search-filter.service';
|
import { SearchFilterService } from '../core/shared/search/search-filter.service';
|
||||||
import { RoleDirective } from '../shared/roles/role.directive';
|
import { RoleDirective } from '../shared/roles/role.directive';
|
||||||
import { RoleService } from '../core/roles/role.service';
|
import { RoleService } from '../core/roles/role.service';
|
||||||
import { MockRoleService } from '../shared/mocks/mock-role-service';
|
import { MockRoleService } from '../shared/mocks/mock-role-service';
|
||||||
import { SearchFixedFilterService } from '../+search-page/search-filters/search-filter/search-fixed-filter.service';
|
import { SearchFixedFilterService } from '../core/shared/search/search-fixed-filter.service';
|
||||||
|
|
||||||
describe('MyDSpacePageComponent', () => {
|
describe('MyDSpacePageComponent', () => {
|
||||||
let comp: MyDSpacePageComponent;
|
let comp: MyDSpacePageComponent;
|
||||||
|
@@ -15,16 +15,16 @@ import { RemoteData } from '../core/data/remote-data';
|
|||||||
import { DSpaceObject } from '../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../core/shared/dspace-object.model';
|
||||||
import { pushInOut } from '../shared/animations/push';
|
import { pushInOut } from '../shared/animations/push';
|
||||||
import { HostWindowService } from '../shared/host-window.service';
|
import { HostWindowService } from '../shared/host-window.service';
|
||||||
import { PaginatedSearchOptions } from '../+search-page/paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../shared/search/paginated-search-options.model';
|
||||||
import { SearchService } from '../+search-page/search-service/search.service';
|
import { SearchService } from '../core/shared/search/search.service';
|
||||||
import { SearchSidebarService } from '../+search-page/search-sidebar/search-sidebar.service';
|
import { SearchSidebarService } from '../core/shared/search/search-sidebar.service';
|
||||||
import { hasValue } from '../shared/empty.util';
|
import { hasValue } from '../shared/empty.util';
|
||||||
import { getSucceededRemoteData } from '../core/shared/operators';
|
import { getSucceededRemoteData } from '../core/shared/operators';
|
||||||
import { MyDSpaceResult } from './my-dspace-result.model';
|
import { MyDSpaceResult } from './my-dspace-result.model';
|
||||||
import { MyDSpaceResponseParsingService } from '../core/data/mydspace-response-parsing.service';
|
import { MyDSpaceResponseParsingService } from '../core/data/mydspace-response-parsing.service';
|
||||||
import { SearchConfigurationOption } from '../+search-page/search-switch-configuration/search-configuration-option.model';
|
import { SearchConfigurationOption } from '../shared/search/search-switch-configuration/search-configuration-option.model';
|
||||||
import { RoleType } from '../core/roles/role-types';
|
import { RoleType } from '../core/roles/role-types';
|
||||||
import { SearchConfigurationService } from '../+search-page/search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../core/shared/search/search-configuration.service';
|
||||||
import { MyDSpaceConfigurationService } from './my-dspace-configuration.service';
|
import { MyDSpaceConfigurationService } from './my-dspace-configuration.service';
|
||||||
import { ViewMode } from '../core/shared/view-mode.model';
|
import { ViewMode } from '../core/shared/view-mode.model';
|
||||||
import { MyDSpaceRequest } from '../core/data/request.models';
|
import { MyDSpaceRequest } from '../core/data/request.models';
|
||||||
|
@@ -5,7 +5,6 @@ import { SharedModule } from '../shared/shared.module';
|
|||||||
|
|
||||||
import { MyDspacePageRoutingModule } from './my-dspace-page-routing.module';
|
import { MyDspacePageRoutingModule } from './my-dspace-page-routing.module';
|
||||||
import { MyDSpacePageComponent } from './my-dspace-page.component';
|
import { MyDSpacePageComponent } from './my-dspace-page.component';
|
||||||
import { SearchPageModule } from '../+search-page/search-page.module';
|
|
||||||
import { MyDSpaceResultsComponent } from './my-dspace-results/my-dspace-results.component';
|
import { MyDSpaceResultsComponent } from './my-dspace-results/my-dspace-results.component';
|
||||||
import { WorkspaceitemMyDSpaceResultListElementComponent } from '../shared/object-list/my-dspace-result-list-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-list-element.component';
|
import { WorkspaceitemMyDSpaceResultListElementComponent } from '../shared/object-list/my-dspace-result-list-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-list-element.component';
|
||||||
import { ItemMyDSpaceResultListElementComponent } from '../shared/object-list/my-dspace-result-list-element/item-my-dspace-result/item-my-dspace-result-list-element.component';
|
import { ItemMyDSpaceResultListElementComponent } from '../shared/object-list/my-dspace-result-list-element/item-my-dspace-result/item-my-dspace-result-list-element.component';
|
||||||
@@ -26,7 +25,6 @@ import { MyDSpaceConfigurationService } from './my-dspace-configuration.service'
|
|||||||
CommonModule,
|
CommonModule,
|
||||||
SharedModule,
|
SharedModule,
|
||||||
MyDspacePageRoutingModule,
|
MyDspacePageRoutingModule,
|
||||||
SearchPageModule
|
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
MyDSpacePageComponent,
|
MyDSpacePageComponent,
|
||||||
|
@@ -4,7 +4,7 @@ import { RemoteData } from '../../core/data/remote-data';
|
|||||||
import { DSpaceObject } from '../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../core/shared/dspace-object.model';
|
||||||
import { fadeIn, fadeInOut } from '../../shared/animations/fade';
|
import { fadeIn, fadeInOut } from '../../shared/animations/fade';
|
||||||
import { MyDSpaceResult } from '../my-dspace-result.model';
|
import { MyDSpaceResult } from '../my-dspace-result.model';
|
||||||
import { SearchOptions } from '../../+search-page/search-options.model';
|
import { SearchOptions } from '../../shared/search/search-options.model';
|
||||||
import { PaginatedList } from '../../core/data/paginated-list';
|
import { PaginatedList } from '../../core/data/paginated-list';
|
||||||
import { ViewMode } from '../../core/shared/view-mode.model';
|
import { ViewMode } from '../../core/shared/view-mode.model';
|
||||||
import { isEmpty } from '../../shared/empty.util';
|
import { isEmpty } from '../../shared/empty.util';
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { FilteredSearchPageComponent } from './filtered-search-page.component';
|
import { FilteredSearchPageComponent } from './filtered-search-page.component';
|
||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
import { configureSearchComponentTestingModule } from './search-page.component.spec';
|
import { configureSearchComponentTestingModule } from './search-page.component.spec';
|
||||||
import { SearchConfigurationService } from './search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../core/shared/search/search-configuration.service';
|
||||||
|
|
||||||
describe('FilteredSearchPageComponent', () => {
|
describe('FilteredSearchPageComponent', () => {
|
||||||
let comp: FilteredSearchPageComponent;
|
let comp: FilteredSearchPageComponent;
|
||||||
|
@@ -1,13 +1,13 @@
|
|||||||
import { HostWindowService } from '../shared/host-window.service';
|
import { HostWindowService } from '../shared/host-window.service';
|
||||||
import { SearchService } from './search-service/search.service';
|
import { SearchService } from '../core/shared/search/search.service';
|
||||||
import { SearchSidebarService } from './search-sidebar/search-sidebar.service';
|
import { SearchSidebarService } from '../core/shared/search/search-sidebar.service';
|
||||||
import { SearchPageComponent } from './search-page.component';
|
import { SearchPageComponent } from './search-page.component';
|
||||||
import { ChangeDetectionStrategy, Component, Inject, Input, OnInit } from '@angular/core';
|
import { ChangeDetectionStrategy, Component, Inject, Input, OnInit } from '@angular/core';
|
||||||
import { pushInOut } from '../shared/animations/push';
|
import { pushInOut } from '../shared/animations/push';
|
||||||
import { RouteService } from '../shared/services/route.service';
|
import { RouteService } from '../shared/services/route.service';
|
||||||
import { SearchConfigurationService } from './search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../core/shared/search/search-configuration.service';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { PaginatedSearchOptions } from './paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../shared/search/paginated-search-options.model';
|
||||||
import { SEARCH_CONFIG_SERVICE } from '../+my-dspace-page/my-dspace-page.component';
|
import { SEARCH_CONFIG_SERVICE } from '../+my-dspace-page/my-dspace-page.component';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
|
|
||||||
|
@@ -1,2 +0,0 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
@import '../../../styles/mixins.scss';
|
|
@@ -11,20 +11,20 @@ import { CommunityDataService } from '../core/data/community-data.service';
|
|||||||
import { HostWindowService } from '../shared/host-window.service';
|
import { HostWindowService } from '../shared/host-window.service';
|
||||||
import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model';
|
||||||
import { SearchPageComponent } from './search-page.component';
|
import { SearchPageComponent } from './search-page.component';
|
||||||
import { SearchService } from './search-service/search.service';
|
import { SearchService } from '../core/shared/search/search.service';
|
||||||
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
import { ActivatedRoute } from '@angular/router';
|
import { ActivatedRoute } from '@angular/router';
|
||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
import { NgbCollapseModule } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbCollapseModule } from '@ng-bootstrap/ng-bootstrap';
|
||||||
import { SearchSidebarService } from './search-sidebar/search-sidebar.service';
|
import { SearchSidebarService } from '../core/shared/search/search-sidebar.service';
|
||||||
import { SearchFilterService } from './search-filters/search-filter/search-filter.service';
|
import { SearchFilterService } from '../core/shared/search/search-filter.service';
|
||||||
import { SearchConfigurationService } from './search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../core/shared/search/search-configuration.service';
|
||||||
import { RemoteData } from '../core/data/remote-data';
|
import { RemoteData } from '../core/data/remote-data';
|
||||||
import { SEARCH_CONFIG_SERVICE } from '../+my-dspace-page/my-dspace-page.component';
|
import { SEARCH_CONFIG_SERVICE } from '../+my-dspace-page/my-dspace-page.component';
|
||||||
import { RouteService } from '../shared/services/route.service';
|
import { RouteService } from '../shared/services/route.service';
|
||||||
import { SearchConfigurationServiceStub } from '../shared/testing/search-configuration-service-stub';
|
import { SearchConfigurationServiceStub } from '../shared/testing/search-configuration-service-stub';
|
||||||
import { PaginatedSearchOptions } from './paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../shared/search/paginated-search-options.model';
|
||||||
import { SearchFixedFilterService } from './search-filters/search-filter/search-fixed-filter.service';
|
import { SearchFixedFilterService } from '../core/shared/search/search-fixed-filter.service';
|
||||||
|
|
||||||
let comp: SearchPageComponent;
|
let comp: SearchPageComponent;
|
||||||
let fixture: ComponentFixture<SearchPageComponent>;
|
let fixture: ComponentFixture<SearchPageComponent>;
|
||||||
|
@@ -6,12 +6,12 @@ import { RemoteData } from '../core/data/remote-data';
|
|||||||
import { DSpaceObject } from '../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../core/shared/dspace-object.model';
|
||||||
import { pushInOut } from '../shared/animations/push';
|
import { pushInOut } from '../shared/animations/push';
|
||||||
import { HostWindowService } from '../shared/host-window.service';
|
import { HostWindowService } from '../shared/host-window.service';
|
||||||
import { PaginatedSearchOptions } from './paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../shared/search/paginated-search-options.model';
|
||||||
import { SearchResult } from './search-result.model';
|
import { SearchResult } from '../shared/search/search-result.model';
|
||||||
import { SearchService } from './search-service/search.service';
|
import { SearchService } from '../core/shared/search/search.service';
|
||||||
import { SearchSidebarService } from './search-sidebar/search-sidebar.service';
|
import { SearchSidebarService } from '../core/shared/search/search-sidebar.service';
|
||||||
import { hasValue, isNotEmpty } from '../shared/empty.util';
|
import { hasValue, isNotEmpty } from '../shared/empty.util';
|
||||||
import { SearchConfigurationService } from './search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../core/shared/search/search-configuration.service';
|
||||||
import { getSucceededRemoteData } from '../core/shared/operators';
|
import { getSucceededRemoteData } from '../core/shared/operators';
|
||||||
import { RouteService } from '../shared/services/route.service';
|
import { RouteService } from '../shared/services/route.service';
|
||||||
import { SEARCH_CONFIG_SERVICE } from '../+my-dspace-page/my-dspace-page.component';
|
import { SEARCH_CONFIG_SERVICE } from '../+my-dspace-page/my-dspace-page.component';
|
||||||
|
@@ -4,62 +4,11 @@ import { CoreModule } from '../core/core.module';
|
|||||||
import { SharedModule } from '../shared/shared.module';
|
import { SharedModule } from '../shared/shared.module';
|
||||||
import { SearchPageRoutingModule } from './search-page-routing.module';
|
import { SearchPageRoutingModule } from './search-page-routing.module';
|
||||||
import { SearchPageComponent } from './search-page.component';
|
import { SearchPageComponent } from './search-page.component';
|
||||||
import { SearchResultsComponent } from './search-results/search-results.component';
|
|
||||||
import { ItemSearchResultGridElementComponent } from '../shared/object-grid/search-result-grid-element/item-search-result/item-search-result-grid-element.component';
|
|
||||||
import { CommunitySearchResultGridElementComponent } from '../shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component'
|
|
||||||
import { CollectionSearchResultGridElementComponent } from '../shared/object-grid/search-result-grid-element/collection-search-result/collection-search-result-grid-element.component';
|
|
||||||
import { SearchSidebarComponent } from './search-sidebar/search-sidebar.component';
|
|
||||||
import { SearchSidebarService } from './search-sidebar/search-sidebar.service';
|
|
||||||
import { SearchSidebarEffects } from './search-sidebar/search-sidebar.effects';
|
|
||||||
import { SearchSettingsComponent } from './search-settings/search-settings.component';
|
|
||||||
import { EffectsModule } from '@ngrx/effects';
|
|
||||||
import { SearchFiltersComponent } from './search-filters/search-filters.component';
|
|
||||||
import { SearchFilterComponent } from './search-filters/search-filter/search-filter.component';
|
|
||||||
import { SearchFacetFilterComponent } from './search-filters/search-filter/search-facet-filter/search-facet-filter.component';
|
|
||||||
import { SearchFilterService } from './search-filters/search-filter/search-filter.service';
|
|
||||||
import { FilteredSearchPageComponent } from './filtered-search-page.component';
|
import { FilteredSearchPageComponent } from './filtered-search-page.component';
|
||||||
import { SearchFixedFilterService } from './search-filters/search-filter/search-fixed-filter.service';
|
|
||||||
import { FilteredSearchPageGuard } from './filtered-search-page.guard';
|
|
||||||
import { SearchLabelsComponent } from './search-labels/search-labels.component';
|
|
||||||
import { SearchRangeFilterComponent } from './search-filters/search-filter/search-range-filter/search-range-filter.component';
|
|
||||||
import { SearchTextFilterComponent } from './search-filters/search-filter/search-text-filter/search-text-filter.component';
|
|
||||||
import { SearchFacetFilterWrapperComponent } from './search-filters/search-filter/search-facet-filter-wrapper/search-facet-filter-wrapper.component';
|
|
||||||
import { SearchBooleanFilterComponent } from './search-filters/search-filter/search-boolean-filter/search-boolean-filter.component';
|
|
||||||
import { SearchHierarchyFilterComponent } from './search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component';
|
|
||||||
import { SearchConfigurationService } from './search-service/search-configuration.service';
|
|
||||||
import { SearchFacetOptionComponent } from './search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component';
|
|
||||||
import { SearchFacetSelectedOptionComponent } from './search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component';
|
|
||||||
import { SearchFacetRangeOptionComponent } from './search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component';
|
|
||||||
import { SearchSwitchConfigurationComponent } from './search-switch-configuration/search-switch-configuration.component';
|
|
||||||
import { SearchAuthorityFilterComponent } from './search-filters/search-filter/search-authority-filter/search-authority-filter.component';
|
|
||||||
|
|
||||||
const effects = [
|
|
||||||
SearchSidebarEffects
|
|
||||||
];
|
|
||||||
|
|
||||||
const components = [
|
const components = [
|
||||||
SearchPageComponent,
|
SearchPageComponent,
|
||||||
// SearchResultsComponent,
|
|
||||||
SearchSidebarComponent,
|
|
||||||
SearchSettingsComponent,
|
|
||||||
ItemSearchResultGridElementComponent,
|
|
||||||
CollectionSearchResultGridElementComponent,
|
|
||||||
CommunitySearchResultGridElementComponent,
|
|
||||||
SearchFiltersComponent,
|
|
||||||
SearchFilterComponent,
|
|
||||||
SearchFacetFilterComponent,
|
|
||||||
SearchLabelsComponent,
|
|
||||||
SearchFacetFilterComponent,
|
|
||||||
SearchFacetFilterWrapperComponent,
|
|
||||||
SearchRangeFilterComponent,
|
|
||||||
SearchTextFilterComponent,
|
|
||||||
SearchHierarchyFilterComponent,
|
|
||||||
SearchBooleanFilterComponent,
|
|
||||||
SearchFacetOptionComponent,
|
|
||||||
SearchFacetSelectedOptionComponent,
|
|
||||||
SearchFacetRangeOptionComponent,
|
|
||||||
SearchSwitchConfigurationComponent,
|
|
||||||
SearchAuthorityFilterComponent,
|
|
||||||
FilteredSearchPageComponent
|
FilteredSearchPageComponent
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -68,32 +17,9 @@ const components = [
|
|||||||
SearchPageRoutingModule,
|
SearchPageRoutingModule,
|
||||||
CommonModule,
|
CommonModule,
|
||||||
SharedModule,
|
SharedModule,
|
||||||
EffectsModule.forFeature(effects),
|
|
||||||
CoreModule.forRoot()
|
CoreModule.forRoot()
|
||||||
],
|
],
|
||||||
declarations: components,
|
declarations: components,
|
||||||
providers: [
|
|
||||||
SearchSidebarService,
|
|
||||||
SearchFilterService,
|
|
||||||
SearchFixedFilterService,
|
|
||||||
FilteredSearchPageGuard,
|
|
||||||
SearchFilterService,
|
|
||||||
SearchConfigurationService
|
|
||||||
],
|
|
||||||
entryComponents: [
|
|
||||||
ItemSearchResultGridElementComponent,
|
|
||||||
CollectionSearchResultGridElementComponent,
|
|
||||||
CommunitySearchResultGridElementComponent,
|
|
||||||
SearchFacetFilterComponent,
|
|
||||||
SearchRangeFilterComponent,
|
|
||||||
SearchTextFilterComponent,
|
|
||||||
SearchHierarchyFilterComponent,
|
|
||||||
SearchBooleanFilterComponent,
|
|
||||||
SearchFacetOptionComponent,
|
|
||||||
SearchFacetSelectedOptionComponent,
|
|
||||||
SearchFacetRangeOptionComponent,
|
|
||||||
SearchAuthorityFilterComponent
|
|
||||||
],
|
|
||||||
exports: components
|
exports: components
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -20,7 +20,7 @@ import { Store, StoreModule } from '@ngrx/store';
|
|||||||
// Load the implementations that should be tested
|
// Load the implementations that should be tested
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
|
|
||||||
import { HostWindowState } from './shared/host-window.reducer';
|
import { HostWindowState } from './shared/search/host-window.reducer';
|
||||||
import { HostWindowResizeAction } from './shared/host-window.actions';
|
import { HostWindowResizeAction } from './shared/host-window.actions';
|
||||||
|
|
||||||
import { MetadataService } from './core/metadata/metadata.service';
|
import { MetadataService } from './core/metadata/metadata.service';
|
||||||
|
@@ -18,7 +18,7 @@ import { GLOBAL_CONFIG, GlobalConfig } from '../config';
|
|||||||
|
|
||||||
import { MetadataService } from './core/metadata/metadata.service';
|
import { MetadataService } from './core/metadata/metadata.service';
|
||||||
import { HostWindowResizeAction } from './shared/host-window.actions';
|
import { HostWindowResizeAction } from './shared/host-window.actions';
|
||||||
import { HostWindowState } from './shared/host-window.reducer';
|
import { HostWindowState } from './shared/search/host-window.reducer';
|
||||||
import { NativeWindowRef, NativeWindowService } from './shared/services/window.service';
|
import { NativeWindowRef, NativeWindowService } from './shared/services/window.service';
|
||||||
import { isAuthenticated } from './core/auth/selectors';
|
import { isAuthenticated } from './core/auth/selectors';
|
||||||
import { AuthService } from './core/auth/auth.service';
|
import { AuthService } from './core/auth/auth.service';
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
import { StoreEffects } from './store.effects';
|
import { StoreEffects } from './store.effects';
|
||||||
import { NotificationsEffects } from './shared/notifications/notifications.effects';
|
import { NotificationsEffects } from './shared/notifications/notifications.effects';
|
||||||
import { NavbarEffects } from './navbar/navbar.effects';
|
import { NavbarEffects } from './navbar/navbar.effects';
|
||||||
|
import { SearchSidebarEffects } from './shared/search/search-sidebar/search-sidebar.effects';
|
||||||
|
|
||||||
export const appEffects = [
|
export const appEffects = [
|
||||||
StoreEffects,
|
StoreEffects,
|
||||||
NavbarEffects,
|
NavbarEffects,
|
||||||
NotificationsEffects,
|
NotificationsEffects,
|
||||||
|
SearchSidebarEffects
|
||||||
];
|
];
|
||||||
|
@@ -1,15 +1,15 @@
|
|||||||
import { ActionReducerMap, createSelector, MemoizedSelector } from '@ngrx/store';
|
import { ActionReducerMap, createSelector, MemoizedSelector } from '@ngrx/store';
|
||||||
import * as fromRouter from '@ngrx/router-store';
|
import * as fromRouter from '@ngrx/router-store';
|
||||||
import { hostWindowReducer, HostWindowState } from './shared/host-window.reducer';
|
import { hostWindowReducer, HostWindowState } from './shared/search/host-window.reducer';
|
||||||
import { formReducer, FormState } from './shared/form/form.reducer';
|
import { formReducer, FormState } from './shared/form/form.reducer';
|
||||||
import {
|
import {
|
||||||
SearchSidebarState,
|
SearchSidebarState,
|
||||||
sidebarReducer
|
sidebarReducer
|
||||||
} from './+search-page/search-sidebar/search-sidebar.reducer';
|
} from './shared/search/search-sidebar/search-sidebar.reducer';
|
||||||
import {
|
import {
|
||||||
filterReducer,
|
filterReducer,
|
||||||
SearchFiltersState
|
SearchFiltersState
|
||||||
} from './+search-page/search-filters/search-filter/search-filter.reducer';
|
} from './shared/search/search-filters/search-filter/search-filter.reducer';
|
||||||
import {
|
import {
|
||||||
notificationsReducer,
|
notificationsReducer,
|
||||||
NotificationsState
|
NotificationsState
|
||||||
|
6
src/app/core/cache/response.models.ts
vendored
6
src/app/core/cache/response.models.ts
vendored
@@ -1,9 +1,9 @@
|
|||||||
import { SearchQueryResponse } from '../../+search-page/search-service/search-query-response.model';
|
import { SearchQueryResponse } from '../../shared/search/search-query-response.model';
|
||||||
import { RequestError } from '../data/request.models';
|
import { RequestError } from '../data/request.models';
|
||||||
import { PageInfo } from '../shared/page-info.model';
|
import { PageInfo } from '../shared/page-info.model';
|
||||||
import { ConfigObject } from '../config/models/config.model';
|
import { ConfigObject } from '../config/models/config.model';
|
||||||
import { FacetValue } from '../../+search-page/search-service/facet-value.model';
|
import { FacetValue } from '../../shared/search/facet-value.model';
|
||||||
import { SearchFilterConfig } from '../../+search-page/search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../shared/search/search-filter-config.model';
|
||||||
import { IntegrationModel } from '../integration/models/integration.model';
|
import { IntegrationModel } from '../integration/models/integration.model';
|
||||||
import { RegistryMetadataschemasResponse } from '../registry/registry-metadataschemas-response.model';
|
import { RegistryMetadataschemasResponse } from '../registry/registry-metadataschemas-response.model';
|
||||||
import { RegistryMetadatafieldsResponse } from '../registry/registry-metadatafields-response.model';
|
import { RegistryMetadatafieldsResponse } from '../registry/registry-metadatafields-response.model';
|
||||||
|
@@ -80,7 +80,7 @@ import { NormalizedObjectBuildService } from './cache/builders/normalized-object
|
|||||||
import { DSOChangeAnalyzer } from './data/dso-change-analyzer.service';
|
import { DSOChangeAnalyzer } from './data/dso-change-analyzer.service';
|
||||||
import { ObjectUpdatesService } from './data/object-updates/object-updates.service';
|
import { ObjectUpdatesService } from './data/object-updates/object-updates.service';
|
||||||
import { DefaultChangeAnalyzer } from './data/default-change-analyzer.service';
|
import { DefaultChangeAnalyzer } from './data/default-change-analyzer.service';
|
||||||
import { SearchService } from '../+search-page/search-service/search.service';
|
import { SearchService } from './shared/search/search.service';
|
||||||
import { RelationshipService } from './data/relationship.service';
|
import { RelationshipService } from './data/relationship.service';
|
||||||
import { RoleService } from './roles/role.service';
|
import { RoleService } from './roles/role.service';
|
||||||
import { MyDSpaceGuard } from '../+my-dspace-page/my-dspace.guard';
|
import { MyDSpaceGuard } from '../+my-dspace-page/my-dspace.guard';
|
||||||
@@ -95,6 +95,11 @@ import {
|
|||||||
} from './dspace-rest-v2/mocks/mock-response-map';
|
} from './dspace-rest-v2/mocks/mock-response-map';
|
||||||
import { EndpointMockingRestService } from './dspace-rest-v2/endpoint-mocking-rest.service';
|
import { EndpointMockingRestService } from './dspace-rest-v2/endpoint-mocking-rest.service';
|
||||||
import { ENV_CONFIG, GLOBAL_CONFIG, GlobalConfig } from '../../config';
|
import { ENV_CONFIG, GLOBAL_CONFIG, GlobalConfig } from '../../config';
|
||||||
|
import { SearchSidebarService } from './shared/search/search-sidebar.service';
|
||||||
|
import { SearchFilterService } from './shared/search/search-filter.service';
|
||||||
|
import { SearchFixedFilterService } from './shared/search/search-fixed-filter.service';
|
||||||
|
import { FilteredSearchPageGuard } from '../+search-page/filtered-search-page.guard';
|
||||||
|
import { SearchConfigurationService } from './shared/search/search-configuration.service';
|
||||||
|
|
||||||
export const restServiceFactory = (cfg: GlobalConfig, mocks: MockResponseMap, http: HttpClient) => {
|
export const restServiceFactory = (cfg: GlobalConfig, mocks: MockResponseMap, http: HttpClient) => {
|
||||||
// if (ENV_CONFIG.production) {
|
// if (ENV_CONFIG.production) {
|
||||||
@@ -193,6 +198,13 @@ const PROVIDERS = [
|
|||||||
TaskResponseParsingService,
|
TaskResponseParsingService,
|
||||||
ClaimedTaskDataService,
|
ClaimedTaskDataService,
|
||||||
PoolTaskDataService,
|
PoolTaskDataService,
|
||||||
|
SearchService,
|
||||||
|
SearchSidebarService,
|
||||||
|
SearchFilterService,
|
||||||
|
SearchFixedFilterService,
|
||||||
|
FilteredSearchPageGuard,
|
||||||
|
SearchFilterService,
|
||||||
|
SearchConfigurationService,
|
||||||
// register AuthInterceptor as HttpInterceptor
|
// register AuthInterceptor as HttpInterceptor
|
||||||
{
|
{
|
||||||
provide: HTTP_INTERCEPTORS,
|
provide: HTTP_INTERCEPTORS,
|
||||||
|
@@ -7,7 +7,7 @@ import { ResponseParsingService } from './parsing.service';
|
|||||||
import { RestRequest } from './request.models';
|
import { RestRequest } from './request.models';
|
||||||
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
||||||
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
|
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
|
||||||
import { SearchFilterConfig } from '../../+search-page/search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../shared/search/search-filter-config.model';
|
||||||
import { BaseResponseParsingService } from './base-response-parsing.service';
|
import { BaseResponseParsingService } from './base-response-parsing.service';
|
||||||
import { ObjectCacheService } from '../cache/object-cache.service';
|
import { ObjectCacheService } from '../cache/object-cache.service';
|
||||||
import { GlobalConfig } from '../../../config/global-config.interface';
|
import { GlobalConfig } from '../../../config/global-config.interface';
|
||||||
|
@@ -9,7 +9,7 @@ import { ResponseParsingService } from './parsing.service';
|
|||||||
import { RestRequest } from './request.models';
|
import { RestRequest } from './request.models';
|
||||||
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
||||||
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
|
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
|
||||||
import { FacetValue } from '../../+search-page/search-service/facet-value.model';
|
import { FacetValue } from '../../shared/search/facet-value.model';
|
||||||
import { BaseResponseParsingService } from './base-response-parsing.service';
|
import { BaseResponseParsingService } from './base-response-parsing.service';
|
||||||
import { ObjectCacheService } from '../cache/object-cache.service';
|
import { ObjectCacheService } from '../cache/object-cache.service';
|
||||||
import { GlobalConfig } from '../../../config/global-config.interface';
|
import { GlobalConfig } from '../../../config/global-config.interface';
|
||||||
|
@@ -4,7 +4,7 @@ import { ResponseParsingService } from './parsing.service';
|
|||||||
import { RestRequest } from './request.models';
|
import { RestRequest } from './request.models';
|
||||||
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
||||||
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
|
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
|
||||||
import { FacetValue } from '../../+search-page/search-service/facet-value.model';
|
import { FacetValue } from '../../shared/search/facet-value.model';
|
||||||
import { BaseResponseParsingService } from './base-response-parsing.service';
|
import { BaseResponseParsingService } from './base-response-parsing.service';
|
||||||
import { ObjectCacheService } from '../cache/object-cache.service';
|
import { ObjectCacheService } from '../cache/object-cache.service';
|
||||||
import { GLOBAL_CONFIG } from '../../../config';
|
import { GLOBAL_CONFIG } from '../../../config';
|
||||||
|
@@ -6,7 +6,7 @@ import { RestRequest } from './request.models';
|
|||||||
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
||||||
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
|
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
|
||||||
import { hasValue } from '../../shared/empty.util';
|
import { hasValue } from '../../shared/empty.util';
|
||||||
import { SearchQueryResponse } from '../../+search-page/search-service/search-query-response.model';
|
import { SearchQueryResponse } from '../../shared/search/search-query-response.model';
|
||||||
import { MetadataMap, MetadataValue } from '../shared/metadata.models';
|
import { MetadataMap, MetadataValue } from '../shared/metadata.models';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
@@ -64,11 +64,6 @@ export class RelationshipService {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Send a post request for a relationship by ID
|
|
||||||
* @param item1
|
|
||||||
* @param item2
|
|
||||||
*/
|
|
||||||
addRelationship(item1: Item, item2: Item): Observable<RestResponse> {
|
addRelationship(item1: Item, item2: Item): Observable<RestResponse> {
|
||||||
return this.halService.getEndpoint(this.linkPath).pipe(
|
return this.halService.getEndpoint(this.linkPath).pipe(
|
||||||
isNotEmptyOperator(),
|
isNotEmptyOperator(),
|
||||||
|
@@ -6,7 +6,7 @@ import { RestRequest } from './request.models';
|
|||||||
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
|
||||||
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
|
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
|
||||||
import { hasValue } from '../../shared/empty.util';
|
import { hasValue } from '../../shared/empty.util';
|
||||||
import { SearchQueryResponse } from '../../+search-page/search-service/search-query-response.model';
|
import { SearchQueryResponse } from '../../shared/search/search-query-response.model';
|
||||||
import { MetadataMap, MetadataValue } from '../shared/metadata.models';
|
import { MetadataMap, MetadataValue } from '../shared/metadata.models';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
@@ -9,7 +9,7 @@ import { RequestService } from '../data/request.service';
|
|||||||
import { BrowseDefinition } from './browse-definition.model';
|
import { BrowseDefinition } from './browse-definition.model';
|
||||||
import { DSpaceObject } from './dspace-object.model';
|
import { DSpaceObject } from './dspace-object.model';
|
||||||
import { PaginatedList } from '../data/paginated-list';
|
import { PaginatedList } from '../data/paginated-list';
|
||||||
import { SearchResult } from '../../+search-page/search-result.model';
|
import { SearchResult } from '../../shared/search/search-result.model';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
import { SearchConfigurationService } from './search-configuration.service';
|
import { SearchConfigurationService } from './search-configuration.service';
|
||||||
import { ActivatedRouteStub } from '../../shared/testing/active-router-stub';
|
import { ActivatedRouteStub } from '../../../shared/testing/active-router-stub';
|
||||||
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
|
||||||
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
|
import { SortDirection, SortOptions } from '../../cache/models/sort-options.model';
|
||||||
import { PaginatedSearchOptions } from '../paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../../../shared/search/paginated-search-options.model';
|
||||||
import { SearchFilter } from '../search-filter.model';
|
import { SearchFilter } from '../../../shared/search/search-filter.model';
|
||||||
import { of as observableOf } from 'rxjs';
|
import { of as observableOf } from 'rxjs';
|
||||||
|
|
||||||
describe('SearchConfigurationService', () => {
|
describe('SearchConfigurationService', () => {
|
@@ -10,17 +10,17 @@ import {
|
|||||||
Subscription
|
Subscription
|
||||||
} from 'rxjs';
|
} from 'rxjs';
|
||||||
import { filter, flatMap, map, switchMap, tap } from 'rxjs/operators';
|
import { filter, flatMap, map, switchMap, tap } from 'rxjs/operators';
|
||||||
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
|
import { SortDirection, SortOptions } from '../../cache/models/sort-options.model';
|
||||||
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
|
||||||
import { SearchOptions } from '../search-options.model';
|
import { SearchOptions } from '../../../shared/search/search-options.model';
|
||||||
import { PaginatedSearchOptions } from '../paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../../../shared/search/paginated-search-options.model';
|
||||||
import { RouteService } from '../../shared/services/route.service';
|
import { RouteService } from '../../../shared/services/route.service';
|
||||||
import { hasNoValue, hasValue, isNotEmpty, isNotEmptyOperator } from '../../shared/empty.util';
|
import { hasNoValue, hasValue, isNotEmpty, isNotEmptyOperator } from '../../../shared/empty.util';
|
||||||
import { RemoteData } from '../../core/data/remote-data';
|
import { RemoteData } from '../../data/remote-data';
|
||||||
import { getSucceededRemoteData } from '../../core/shared/operators';
|
import { getSucceededRemoteData } from '../operators';
|
||||||
import { SearchFilter } from '../search-filter.model';
|
import { SearchFilter } from '../../../shared/search/search-filter.model';
|
||||||
import { DSpaceObjectType } from '../../core/shared/dspace-object-type.model';
|
import { DSpaceObjectType } from '../dspace-object-type.model';
|
||||||
import { SearchFixedFilterService } from '../search-filters/search-filter/search-fixed-filter.service';
|
import { SearchFixedFilterService } from './search-fixed-filter.service';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service that performs all actions that have to do with the current search configuration
|
* Service that performs all actions that have to do with the current search configuration
|
@@ -8,14 +8,14 @@ import {
|
|||||||
SearchFilterInitializeAction,
|
SearchFilterInitializeAction,
|
||||||
SearchFilterResetPageAction,
|
SearchFilterResetPageAction,
|
||||||
SearchFilterToggleAction
|
SearchFilterToggleAction
|
||||||
} from './search-filter.actions';
|
} from '../../../shared/search/search-filters/search-filter/search-filter.actions';
|
||||||
import { SearchFiltersState } from './search-filter.reducer';
|
import { SearchFiltersState } from '../../../shared/search/search-filters/search-filter/search-filter.reducer';
|
||||||
import { SearchFilterConfig } from '../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../shared/search/search-filter-config.model';
|
||||||
import { FilterType } from '../../search-service/filter-type.model';
|
import { FilterType } from '../../../shared/search/filter-type.model';
|
||||||
import { SearchFixedFilterService } from './search-fixed-filter.service';
|
import { SearchFixedFilterService } from './search-fixed-filter.service';
|
||||||
import { ActivatedRouteStub } from '../../../shared/testing/active-router-stub';
|
import { ActivatedRouteStub } from '../../../shared/testing/active-router-stub';
|
||||||
import { of as observableOf } from 'rxjs';
|
import { of as observableOf } from 'rxjs';
|
||||||
import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model';
|
import { SortDirection, SortOptions } from '../../cache/models/sort-options.model';
|
||||||
|
|
||||||
describe('SearchFilterService', () => {
|
describe('SearchFilterService', () => {
|
||||||
let service: SearchFilterService;
|
let service: SearchFilterService;
|
@@ -1,7 +1,7 @@
|
|||||||
import { combineLatest as observableCombineLatest, Observable } from 'rxjs';
|
import { combineLatest as observableCombineLatest, Observable } from 'rxjs';
|
||||||
import { mergeMap, map, distinctUntilChanged } from 'rxjs/operators';
|
import { mergeMap, map, distinctUntilChanged } from 'rxjs/operators';
|
||||||
import { Injectable, InjectionToken } from '@angular/core';
|
import { Injectable, InjectionToken } from '@angular/core';
|
||||||
import { SearchFiltersState, SearchFilterState } from './search-filter.reducer';
|
import { SearchFiltersState, SearchFilterState } from '../../../shared/search/search-filters/search-filter/search-filter.reducer';
|
||||||
import { createSelector, MemoizedSelector, select, Store } from '@ngrx/store';
|
import { createSelector, MemoizedSelector, select, Store } from '@ngrx/store';
|
||||||
import {
|
import {
|
||||||
SearchFilterCollapseAction,
|
SearchFilterCollapseAction,
|
||||||
@@ -11,14 +11,14 @@ import {
|
|||||||
SearchFilterInitializeAction,
|
SearchFilterInitializeAction,
|
||||||
SearchFilterResetPageAction,
|
SearchFilterResetPageAction,
|
||||||
SearchFilterToggleAction
|
SearchFilterToggleAction
|
||||||
} from './search-filter.actions';
|
} from '../../../shared/search/search-filters/search-filter/search-filter.actions';
|
||||||
import { hasValue, isNotEmpty, } from '../../../shared/empty.util';
|
import { hasValue, isNotEmpty, } from '../../../shared/empty.util';
|
||||||
import { SearchFilterConfig } from '../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../shared/search/search-filter-config.model';
|
||||||
import { RouteService } from '../../../shared/services/route.service';
|
import { RouteService } from '../../../shared/services/route.service';
|
||||||
import { SortDirection, SortOptions } from '../../../core/cache/models/sort-options.model';
|
import { SortDirection, SortOptions } from '../../cache/models/sort-options.model';
|
||||||
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
|
||||||
import { SearchOptions } from '../../search-options.model';
|
import { SearchOptions } from '../../../shared/search/search-options.model';
|
||||||
import { PaginatedSearchOptions } from '../../paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../../../shared/search/paginated-search-options.model';
|
||||||
import { SearchFixedFilterService } from './search-fixed-filter.service';
|
import { SearchFixedFilterService } from './search-fixed-filter.service';
|
||||||
import { Params } from '@angular/router';
|
import { Params } from '@angular/router';
|
||||||
import * as postcss from 'postcss';
|
import * as postcss from 'postcss';
|
@@ -1,10 +1,10 @@
|
|||||||
import { SearchFixedFilterService } from './search-fixed-filter.service';
|
import { SearchFixedFilterService } from './search-fixed-filter.service';
|
||||||
import { RouteService } from '../../../shared/services/route.service';
|
import { RouteService } from '../../../shared/services/route.service';
|
||||||
import { RequestService } from '../../../core/data/request.service';
|
import { RequestService } from '../../data/request.service';
|
||||||
import { HALEndpointService } from '../../../core/shared/hal-endpoint.service';
|
import { HALEndpointService } from '../hal-endpoint.service';
|
||||||
import { of as observableOf } from 'rxjs';
|
import { of as observableOf } from 'rxjs';
|
||||||
import { RequestEntry } from '../../../core/data/request.reducer';
|
import { RequestEntry } from '../../data/request.reducer';
|
||||||
import { FilteredDiscoveryQueryResponse, RestResponse } from '../../../core/cache/response.models';
|
import { FilteredDiscoveryQueryResponse, RestResponse } from '../../cache/response.models';
|
||||||
|
|
||||||
describe('SearchFixedFilterService', () => {
|
describe('SearchFixedFilterService', () => {
|
||||||
let service: SearchFixedFilterService;
|
let service: SearchFixedFilterService;
|
@@ -1,16 +1,16 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { flatMap, map, switchMap, tap } from 'rxjs/operators';
|
import { flatMap, map, switchMap, tap } from 'rxjs/operators';
|
||||||
import { Observable, of as observableOf } from 'rxjs';
|
import { Observable, of as observableOf } from 'rxjs';
|
||||||
import { HALEndpointService } from '../../../core/shared/hal-endpoint.service';
|
import { HALEndpointService } from '../hal-endpoint.service';
|
||||||
import { GetRequest, RestRequest } from '../../../core/data/request.models';
|
import { GetRequest, RestRequest } from '../../data/request.models';
|
||||||
import { RequestService } from '../../../core/data/request.service';
|
import { RequestService } from '../../data/request.service';
|
||||||
import { ResponseParsingService } from '../../../core/data/parsing.service';
|
import { ResponseParsingService } from '../../data/parsing.service';
|
||||||
import { GenericConstructor } from '../../../core/shared/generic-constructor';
|
import { GenericConstructor } from '../generic-constructor';
|
||||||
import { FilteredDiscoveryPageResponseParsingService } from '../../../core/data/filtered-discovery-page-response-parsing.service';
|
import { FilteredDiscoveryPageResponseParsingService } from '../../data/filtered-discovery-page-response-parsing.service';
|
||||||
import { hasValue } from '../../../shared/empty.util';
|
import { hasValue } from '../../../shared/empty.util';
|
||||||
import { configureRequest, getResponseFromEntry } from '../../../core/shared/operators';
|
import { configureRequest, getResponseFromEntry } from '../operators';
|
||||||
import { RouteService } from '../../../shared/services/route.service';
|
import { RouteService } from '../../../shared/services/route.service';
|
||||||
import { FilteredDiscoveryQueryResponse } from '../../../core/cache/response.models';
|
import { FilteredDiscoveryQueryResponse } from '../../cache/response.models';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service for performing actions on the filtered-discovery-pages REST endpoint
|
* Service for performing actions on the filtered-discovery-pages REST endpoint
|
@@ -3,7 +3,7 @@ import { SearchSidebarService } from './search-sidebar.service';
|
|||||||
import { AppState } from '../../app.reducer';
|
import { AppState } from '../../app.reducer';
|
||||||
import { async, TestBed } from '@angular/core/testing';
|
import { async, TestBed } from '@angular/core/testing';
|
||||||
import { of as observableOf } from 'rxjs';
|
import { of as observableOf } from 'rxjs';
|
||||||
import { SearchSidebarCollapseAction, SearchSidebarExpandAction } from './search-sidebar.actions';
|
import { SearchSidebarCollapseAction, SearchSidebarExpandAction } from '../../../shared/search/search-sidebar/search-sidebar.actions';
|
||||||
import { HostWindowService } from '../../shared/host-window.service';
|
import { HostWindowService } from '../../shared/host-window.service';
|
||||||
|
|
||||||
describe('SearchSidebarService', () => {
|
describe('SearchSidebarService', () => {
|
@@ -1,10 +1,10 @@
|
|||||||
import { combineLatest as observableCombineLatest, Observable } from 'rxjs';
|
import { combineLatest as observableCombineLatest, Observable } from 'rxjs';
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { SearchSidebarState } from './search-sidebar.reducer';
|
import { SearchSidebarState } from '../../../shared/search/search-sidebar/search-sidebar.reducer';
|
||||||
import { createSelector, select, Store } from '@ngrx/store';
|
import { createSelector, select, Store } from '@ngrx/store';
|
||||||
import { SearchSidebarCollapseAction, SearchSidebarExpandAction } from './search-sidebar.actions';
|
import { SearchSidebarCollapseAction, SearchSidebarExpandAction } from '../../../shared/search/search-sidebar/search-sidebar.actions';
|
||||||
import { AppState } from '../../app.reducer';
|
import { AppState } from '../../../app.reducer';
|
||||||
import { HostWindowService } from '../../shared/host-window.service';
|
import { HostWindowService } from '../../../shared/host-window.service';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
|
|
||||||
const sidebarStateSelector = (state: AppState) => state.searchSidebar;
|
const sidebarStateSelector = (state: AppState) => state.searchSidebar;
|
@@ -5,29 +5,29 @@ import { CommonModule } from '@angular/common';
|
|||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
import { SearchService } from './search.service';
|
import { SearchService } from './search.service';
|
||||||
import { ItemDataService } from './../../core/data/item-data.service';
|
import { ItemDataService } from '../../data/item-data.service';
|
||||||
import { SetViewMode } from '../../shared/view-mode';
|
import { SetViewMode } from '../../../shared/view-mode';
|
||||||
import { GLOBAL_CONFIG } from '../../../config';
|
import { GLOBAL_CONFIG } from '../../../../config';
|
||||||
import { RemoteDataBuildService } from '../../core/cache/builders/remote-data-build.service';
|
import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service';
|
||||||
import { Router, UrlTree } from '@angular/router';
|
import { Router, UrlTree } from '@angular/router';
|
||||||
import { RequestService } from '../../core/data/request.service';
|
import { RequestService } from '../../data/request.service';
|
||||||
import { ActivatedRouteStub } from '../../shared/testing/active-router-stub';
|
import { ActivatedRouteStub } from '../../../shared/testing/active-router-stub';
|
||||||
import { RouterStub } from '../../shared/testing/router-stub';
|
import { RouterStub } from '../../../shared/testing/router-stub';
|
||||||
import { HALEndpointService } from '../../core/shared/hal-endpoint.service';
|
import { HALEndpointService } from '../hal-endpoint.service';
|
||||||
import { combineLatest as observableCombineLatest, Observable, of as observableOf } from 'rxjs';
|
import { combineLatest as observableCombineLatest, Observable, of as observableOf } from 'rxjs';
|
||||||
import { PaginatedSearchOptions } from '../paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../../../shared/search/paginated-search-options.model';
|
||||||
import { RemoteData } from '../../core/data/remote-data';
|
import { RemoteData } from '../../data/remote-data';
|
||||||
import { RequestEntry } from '../../core/data/request.reducer';
|
import { RequestEntry } from '../../data/request.reducer';
|
||||||
import { getMockRequestService } from '../../shared/mocks/mock-request.service';
|
import { getMockRequestService } from '../../../shared/mocks/mock-request.service';
|
||||||
import { FacetConfigSuccessResponse, SearchSuccessResponse } from '../../core/cache/response.models';
|
import { FacetConfigSuccessResponse, SearchSuccessResponse } from '../../cache/response.models';
|
||||||
import { SearchQueryResponse } from './search-query-response.model';
|
import { SearchQueryResponse } from '../../../shared/search/search-query-response.model';
|
||||||
import { SearchFilterConfig } from './search-filter-config.model';
|
import { SearchFilterConfig } from '../../../shared/search/search-filter-config.model';
|
||||||
import { CommunityDataService } from '../../core/data/community-data.service';
|
import { CommunityDataService } from '../../data/community-data.service';
|
||||||
import { ViewMode } from '../../core/shared/view-mode.model';
|
import { ViewMode } from '../view-mode.model';
|
||||||
import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service';
|
import { DSpaceObjectDataService } from '../../data/dspace-object-data.service';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import { RouteService } from '../../shared/services/route.service';
|
import { RouteService } from '../../../shared/services/route.service';
|
||||||
import { routeServiceStub } from '../../shared/testing/route-service-stub';
|
import { routeServiceStub } from '../../../shared/testing/route-service-stub';
|
||||||
|
|
||||||
@Component({ template: '' })
|
@Component({ template: '' })
|
||||||
class DummyComponent {
|
class DummyComponent {
|
@@ -2,47 +2,47 @@ import { combineLatest as observableCombineLatest, Observable, of as observableO
|
|||||||
import { Injectable, OnDestroy } from '@angular/core';
|
import { Injectable, OnDestroy } from '@angular/core';
|
||||||
import { NavigationExtras, PRIMARY_OUTLET, Router, UrlSegmentGroup } from '@angular/router';
|
import { NavigationExtras, PRIMARY_OUTLET, Router, UrlSegmentGroup } from '@angular/router';
|
||||||
import { first, map, switchMap } from 'rxjs/operators';
|
import { first, map, switchMap } from 'rxjs/operators';
|
||||||
import { RemoteDataBuildService } from '../../core/cache/builders/remote-data-build.service';
|
import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service';
|
||||||
import {
|
import {
|
||||||
FacetConfigSuccessResponse,
|
FacetConfigSuccessResponse,
|
||||||
FacetValueSuccessResponse,
|
FacetValueSuccessResponse,
|
||||||
SearchSuccessResponse
|
SearchSuccessResponse
|
||||||
} from '../../core/cache/response.models';
|
} from '../../cache/response.models';
|
||||||
import { PaginatedList } from '../../core/data/paginated-list';
|
import { PaginatedList } from '../../data/paginated-list';
|
||||||
import { ResponseParsingService } from '../../core/data/parsing.service';
|
import { ResponseParsingService } from '../../data/parsing.service';
|
||||||
import { RemoteData } from '../../core/data/remote-data';
|
import { RemoteData } from '../../data/remote-data';
|
||||||
import { GetRequest, RestRequest } from '../../core/data/request.models';
|
import { GetRequest, RestRequest } from '../../data/request.models';
|
||||||
import { RequestService } from '../../core/data/request.service';
|
import { RequestService } from '../../data/request.service';
|
||||||
import { DSpaceObject } from '../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../dspace-object.model';
|
||||||
import { GenericConstructor } from '../../core/shared/generic-constructor';
|
import { GenericConstructor } from '../generic-constructor';
|
||||||
import { HALEndpointService } from '../../core/shared/hal-endpoint.service';
|
import { HALEndpointService } from '../hal-endpoint.service';
|
||||||
import {
|
import {
|
||||||
configureRequest,
|
configureRequest,
|
||||||
filterSuccessfulResponses,
|
filterSuccessfulResponses,
|
||||||
getResponseFromEntry,
|
getResponseFromEntry,
|
||||||
getSucceededRemoteData
|
getSucceededRemoteData
|
||||||
} from '../../core/shared/operators';
|
} from '../operators';
|
||||||
import { URLCombiner } from '../../core/url-combiner/url-combiner';
|
import { URLCombiner } from '../../url-combiner/url-combiner';
|
||||||
import { hasValue, isEmpty, isNotEmpty, isNotUndefined } from '../../shared/empty.util';
|
import { hasValue, isEmpty, isNotEmpty, isNotUndefined } from '../../../shared/empty.util';
|
||||||
import { NormalizedSearchResult } from '../normalized-search-result.model';
|
import { NormalizedSearchResult } from '../../../shared/search/normalized-search-result.model';
|
||||||
import { SearchOptions } from '../search-options.model';
|
import { SearchOptions } from '../../../shared/search/search-options.model';
|
||||||
import { SearchResult } from '../search-result.model';
|
import { SearchResult } from '../../../shared/search/search-result.model';
|
||||||
import { FacetValue } from './facet-value.model';
|
import { FacetValue } from '../../../shared/search/facet-value.model';
|
||||||
import { SearchFilterConfig } from './search-filter-config.model';
|
import { SearchFilterConfig } from '../../../shared/search/search-filter-config.model';
|
||||||
import { SearchResponseParsingService } from '../../core/data/search-response-parsing.service';
|
import { SearchResponseParsingService } from '../../data/search-response-parsing.service';
|
||||||
import { SearchQueryResponse } from './search-query-response.model';
|
import { SearchQueryResponse } from '../../../shared/search/search-query-response.model';
|
||||||
import { PageInfo } from '../../core/shared/page-info.model';
|
import { PageInfo } from '../page-info.model';
|
||||||
import { getSearchResultFor } from './search-result-element-decorator';
|
import { getSearchResultFor } from '../../../shared/search/search-result-element-decorator';
|
||||||
import { ListableObject } from '../../shared/object-collection/shared/listable-object.model';
|
import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model';
|
||||||
import { FacetValueResponseParsingService } from '../../core/data/facet-value-response-parsing.service';
|
import { FacetValueResponseParsingService } from '../../data/facet-value-response-parsing.service';
|
||||||
import { FacetConfigResponseParsingService } from '../../core/data/facet-config-response-parsing.service';
|
import { FacetConfigResponseParsingService } from '../../data/facet-config-response-parsing.service';
|
||||||
import { PaginatedSearchOptions } from '../paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../../../shared/search/paginated-search-options.model';
|
||||||
import { Community } from '../../core/shared/community.model';
|
import { Community } from '../community.model';
|
||||||
import { CommunityDataService } from '../../core/data/community-data.service';
|
import { CommunityDataService } from '../../data/community-data.service';
|
||||||
import { ViewMode } from '../../core/shared/view-mode.model';
|
import { ViewMode } from '../view-mode.model';
|
||||||
import { ResourceType } from '../../core/shared/resource-type';
|
import { ResourceType } from '../resource-type';
|
||||||
import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service';
|
import { DSpaceObjectDataService } from '../../data/dspace-object-data.service';
|
||||||
import { RouteService } from '../../shared/services/route.service';
|
import { RouteService } from '../../../shared/services/route.service';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service that performs all general actions that have to do with the search page
|
* Service that performs all general actions that have to do with the search page
|
@@ -3,7 +3,7 @@ import { Observable , of as observableOf } from 'rxjs';
|
|||||||
import { Item } from '../../../../core/shared/item.model';
|
import { Item } from '../../../../core/shared/item.model';
|
||||||
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator';
|
import { ItemViewMode, rendersItemType } from '../../../../shared/items/item-type-decorator';
|
||||||
import { ITEM } from '../../../../shared/items/switcher/item-type-switcher.component';
|
import { ITEM } from '../../../../shared/items/switcher/item-type-switcher.component';
|
||||||
import { SearchFixedFilterService } from '../../../../+search-page/search-filters/search-filter/search-fixed-filter.service';
|
import { SearchFixedFilterService } from '../../../../core/shared/search/search-fixed-filter.service';
|
||||||
import { isNotEmpty } from '../../../../shared/empty.util';
|
import { isNotEmpty } from '../../../../shared/empty.util';
|
||||||
import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component';
|
import { ItemComponent } from '../../../../+item-page/simple/item-types/shared/item.component';
|
||||||
import {
|
import {
|
||||||
|
@@ -2,9 +2,9 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
|
import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
import { DSOSelectorComponent } from './dso-selector.component';
|
import { DSOSelectorComponent } from './dso-selector.component';
|
||||||
import { SearchService } from '../../../+search-page/search-service/search.service';
|
import { SearchService } from '../../../core/shared/search/search.service';
|
||||||
import { DSpaceObjectType } from '../../../core/shared/dspace-object-type.model';
|
import { DSpaceObjectType } from '../../../core/shared/dspace-object-type.model';
|
||||||
import { PaginatedSearchOptions } from '../../../+search-page/paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../../search/paginated-search-options.model';
|
||||||
import { RemoteData } from '../../../core/data/remote-data';
|
import { RemoteData } from '../../../core/data/remote-data';
|
||||||
import { ItemSearchResult } from '../../object-collection/shared/item-search-result.model';
|
import { ItemSearchResult } from '../../object-collection/shared/item-search-result.model';
|
||||||
import { Item } from '../../../core/shared/item.model';
|
import { Item } from '../../../core/shared/item.model';
|
||||||
|
@@ -12,12 +12,12 @@ import { FormControl } from '@angular/forms';
|
|||||||
|
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { debounceTime, startWith, switchMap } from 'rxjs/operators';
|
import { debounceTime, startWith, switchMap } from 'rxjs/operators';
|
||||||
import { SearchService } from '../../../+search-page/search-service/search.service';
|
import { SearchService } from '../../../core/shared/search/search.service';
|
||||||
import { PaginatedSearchOptions } from '../../../+search-page/paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../../search/paginated-search-options.model';
|
||||||
import { DSpaceObjectType } from '../../../core/shared/dspace-object-type.model';
|
import { DSpaceObjectType } from '../../../core/shared/dspace-object-type.model';
|
||||||
import { RemoteData } from '../../../core/data/remote-data';
|
import { RemoteData } from '../../../core/data/remote-data';
|
||||||
import { PaginatedList } from '../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../core/data/paginated-list';
|
||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@@ -1,89 +1,116 @@
|
|||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h4 class="modal-title" id="modal-title">Choose a {{fieldName}}</h4>
|
<h4 class="modal-title" id="modal-title">Choose a {{fieldName}}</h4>
|
||||||
<button type="button" class="close" aria-label="Close button" aria-describedby="modal-title"
|
<button type="button" class="close" aria-label="Close button" aria-describedby="modal-title"
|
||||||
(click)="modal.dismiss('Cross click')">
|
(click)="modal.dismiss()">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body" *ngVar="(resultsRD$ | async) as resultsRD">
|
<div class="search-page">
|
||||||
<form class="input-group mb-3" #queryForm="ngForm" (ngSubmit)="search(queryForm.value.query)">
|
<div class="modal-body" *ngVar="(resultsRD$ | async) as resultsRD">
|
||||||
<input type="text" class="form-control" name="query" placeholder="Search query"
|
<div class="row">
|
||||||
[ngModel]="searchQuery">
|
<ds-search-sidebar class="col-4" id="search-sidebar"
|
||||||
<div class="input-group-append">
|
[resultCount]="(resultsRD$ | async)?.payload?.totalElements"
|
||||||
<button class="btn btn-outline-secondary" type="submit">Go</button>
|
[inPlaceSearch]="true"></ds-search-sidebar>
|
||||||
</div>
|
<div class="col-8">
|
||||||
</form>
|
<form class="input-group mb-3" #queryForm="ngForm"
|
||||||
<ds-loading *ngIf="!resultsRD || resultsRD.isLoading"></ds-loading>
|
(ngSubmit)="search(queryForm.value.query)">
|
||||||
<div *ngIf="resultsRD?.hasSucceeded && resultsRD.payload.page.length > 0">
|
<input type="text" class="form-control" name="query" placeholder="Search query"
|
||||||
<div *ngIf="repeatable">
|
[ngModel]="searchQuery">
|
||||||
<div class="input-group mb-3">
|
<div class="input-group-append">
|
||||||
<div class="input-group-prepend">
|
<button class="btn btn-outline-secondary" type="submit">Go</button>
|
||||||
<div class="input-group-text">
|
|
||||||
<!-- In theory we don't need separate checkboxes for this,
|
|
||||||
but I wasn't able to get this to work correctly without them.
|
|
||||||
Checkboxes that are in the indeterminate state always switch to checked when clicked
|
|
||||||
This seemed like the cleanest and clearest solution to solve this issue for now.
|
|
||||||
-->
|
|
||||||
<input *ngIf="!isAllSelected() && !isSomeSelected()" type="checkbox"
|
|
||||||
[indeterminate]="false"
|
|
||||||
(change)="selectAll()">
|
|
||||||
<input *ngIf="!isAllSelected() && isSomeSelected()" type="checkbox"
|
|
||||||
[indeterminate]="true"
|
|
||||||
(change)="deselectAll()">
|
|
||||||
<input *ngIf="isAllSelected()" type="checkbox"
|
|
||||||
[checked]="true"
|
|
||||||
(change)="deselectAll()">
|
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
|
<ds-loading *ngIf="!resultsRD || resultsRD.isLoading"></ds-loading>
|
||||||
|
<div *ngIf="resultsRD?.hasSucceeded && resultsRD.payload.page.length > 0">
|
||||||
|
<div *ngIf="repeatable">
|
||||||
|
<div class="input-group mb-3">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<div class="input-group-text">
|
||||||
|
<!-- In theory we don't need separate checkboxes for this,
|
||||||
|
but I wasn't able to get this to work correctly without them.
|
||||||
|
Checkboxes that are in the indeterminate state always switch to checked when clicked
|
||||||
|
This seemed like the cleanest and clearest solution to solve this issue for now.
|
||||||
|
-->
|
||||||
|
<input *ngIf="!isAllSelected() && !isSomeSelected()"
|
||||||
|
type="checkbox"
|
||||||
|
[indeterminate]="false"
|
||||||
|
(change)="selectAll()">
|
||||||
|
<input *ngIf="!isAllSelected() && isSomeSelected()"
|
||||||
|
type="checkbox"
|
||||||
|
[indeterminate]="true"
|
||||||
|
(change)="deselectAll()">
|
||||||
|
<input *ngIf="isAllSelected()" type="checkbox"
|
||||||
|
[checked]="true"
|
||||||
|
(change)="deselectAll()">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button *ngIf="selectAllLoading" type="button"
|
||||||
|
class="btn btn-outline-secondary">
|
||||||
|
<span class="spinner-border spinner-border-sm" role="status"
|
||||||
|
aria-hidden="true"></span>
|
||||||
|
<span class="sr-only">Loading...</span>
|
||||||
|
</button>
|
||||||
|
<div ngbDropdown class="input-group-append">
|
||||||
|
<button *ngIf="!selectAllLoading" id="resultdropdown" type="button"
|
||||||
|
ngbDropdownToggle
|
||||||
|
class="btn btn-outline-secondary dropdown-toggle-split"
|
||||||
|
data-toggle="dropdown" aria-haspopup="true"
|
||||||
|
aria-expanded="false">
|
||||||
|
<span class="sr-only">Toggle Dropdown</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div ngbDropdownMenu aria-labelledby="resultdropdown">
|
||||||
|
<button class="dropdown-item"
|
||||||
|
(click)="selectPage(resultsRD?.payload?.page)">Select
|
||||||
|
page
|
||||||
|
</button>
|
||||||
|
<button class="dropdown-item"
|
||||||
|
(click)="deselectPage(resultsRD?.payload?.page)">
|
||||||
|
Deselect
|
||||||
|
page
|
||||||
|
</button>
|
||||||
|
<button class="dropdown-item" (click)="selectAll()">Select all
|
||||||
|
</button>
|
||||||
|
<button class="dropdown-item" (click)="deselectAll()">Deselect
|
||||||
|
all
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ds-pagination
|
||||||
|
[paginationOptions]="searchConfig.pagination"
|
||||||
|
[collectionSize]="resultsRD?.payload?.totalElements"
|
||||||
|
[sortOptions]="searchConfig.sort"
|
||||||
|
[hideGear]="true"
|
||||||
|
[hidePagerWhenSinglePage]="true"
|
||||||
|
(paginationChange)="onPaginationChange($event.pagination)">
|
||||||
|
<div class="form-check"
|
||||||
|
*ngFor="let result of resultsRD?.payload?.page; let i = index">
|
||||||
|
<input *ngIf="repeatable" class="form-check-input" type="checkbox"
|
||||||
|
[name]="'checkbox' + i"
|
||||||
|
[id]="'object'+i"
|
||||||
|
[checked]="isSelected(result.indexableObject)"
|
||||||
|
[disabled]="isDisabled(result.indexableObject)"
|
||||||
|
(change)="selectCheckbox($event.currentTarget.checked, result.indexableObject)">
|
||||||
|
<input *ngIf="!repeatable" class="form-check-input" type="radio"
|
||||||
|
[name]="'radio' + i"
|
||||||
|
[id]="'object'+i"
|
||||||
|
[checked]="isSelected(result.indexableObject)"
|
||||||
|
(change)="selectRadio($event.currentTarget.checked, result.indexableObject)">
|
||||||
|
<label class="form-check-label" [for]="'object'+i">
|
||||||
|
<ds-wrapper-list-element class="result-list-element"
|
||||||
|
[object]="result"
|
||||||
|
[index]="i"></ds-wrapper-list-element>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</ds-pagination>
|
||||||
</div>
|
</div>
|
||||||
<div ngbDropdown class="input-group-append">
|
<div *ngIf="resultsRD?.hasSucceeded && resultsRD.payload.page.length === 0">
|
||||||
<button id="resultdropdown" type="button" ngbDropdownToggle
|
{{ 'form.no-results' | translate}}
|
||||||
class="btn btn-outline-secondary dropdown-toggle-split"
|
|
||||||
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
||||||
<span class="sr-only">Toggle Dropdown</span>
|
|
||||||
</button>
|
|
||||||
<div ngbDropdownMenu aria-labelledby="resultdropdown">
|
|
||||||
<button class="dropdown-item"
|
|
||||||
(click)="selectPage(resultsRD?.payload?.page)">Select page
|
|
||||||
</button>
|
|
||||||
<button class="dropdown-item"
|
|
||||||
(click)="deselectPage(resultsRD?.payload?.page)">Deselect
|
|
||||||
page
|
|
||||||
</button>
|
|
||||||
<button class="dropdown-item" (click)="selectAll()">Select all</button>
|
|
||||||
<button class="dropdown-item" (click)="deselectAll()">Deselect all</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ds-pagination
|
|
||||||
[paginationOptions]="searchConfig.pagination"
|
|
||||||
[collectionSize]="resultsRD?.payload?.totalElements"
|
|
||||||
[sortOptions]="searchConfig.sort"
|
|
||||||
[hideGear]="true"
|
|
||||||
[hidePagerWhenSinglePage]="true"
|
|
||||||
(paginationChange)="onPaginationChange($event.pagination)">
|
|
||||||
<div class="form-check" *ngFor="let result of resultsRD?.payload?.page; let i = index">
|
|
||||||
<input *ngIf="repeatable" class="form-check-input" type="checkbox"
|
|
||||||
[name]="'checkbox' + i"
|
|
||||||
[id]="'object'+i"
|
|
||||||
[checked]="isSelected(result.indexableObject)"
|
|
||||||
[disabled]="isDisabled(result.indexableObject)"
|
|
||||||
(change)="selectCheckbox($event.currentTarget.checked, result.indexableObject)">
|
|
||||||
<input *ngIf="!repeatable" class="form-check-input" type="radio"
|
|
||||||
[name]="'radio' + i"
|
|
||||||
[id]="'object'+i"
|
|
||||||
[checked]="isSelected(result.indexableObject)"
|
|
||||||
(change)="selectRadio($event.currentTarget.checked, result.indexableObject)">
|
|
||||||
<label class="form-check-label" [for]="'object'+i">
|
|
||||||
<ds-wrapper-list-element class="result-list-element"
|
|
||||||
[object]="result"
|
|
||||||
[index]="i"></ds-wrapper-list-element>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</ds-pagination>
|
|
||||||
</div>
|
|
||||||
<div *ngIf="resultsRD?.hasSucceeded && resultsRD.payload.page.length === 0">
|
|
||||||
{{ 'form.no-results' | translate}}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
|
@@ -1,16 +1,19 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { PaginatedList } from '../../../../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../../../../core/data/paginated-list';
|
||||||
import { SearchResult } from '../../../../../../+search-page/search-result.model';
|
import { SearchResult } from '../../../../../search/search-result.model';
|
||||||
import { RemoteData } from '../../../../../../core/data/remote-data';
|
import { RemoteData } from '../../../../../../core/data/remote-data';
|
||||||
import { Observable, ReplaySubject } from 'rxjs';
|
import { Observable, ReplaySubject } from 'rxjs';
|
||||||
import { SearchService } from '../../../../../../+search-page/search-service/search.service';
|
import { SearchService } from '../../../../../../core/shared/search/search.service';
|
||||||
import { PaginatedSearchOptions } from '../../../../../../+search-page/paginated-search-options.model';
|
import { PaginatedSearchOptions } from '../../../../../search/paginated-search-options.model';
|
||||||
import { DSpaceObject } from '../../../../../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../../../../../core/shared/dspace-object.model';
|
||||||
import { PaginationComponentOptions } from '../../../../../pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../../../../../pagination/pagination-component-options.model';
|
||||||
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
|
||||||
import { hasNoValue, hasValue, isNotEmpty } from '../../../../../empty.util';
|
import { hasNoValue, hasValue, isNotEmpty } from '../../../../../empty.util';
|
||||||
import { getSucceededRemoteData } from '../../../../../../core/shared/operators';
|
import { getSucceededRemoteData } from '../../../../../../core/shared/operators';
|
||||||
import { concat, map, multicast, take, takeWhile } from 'rxjs/operators';
|
import { concat, map, multicast, take, takeWhile, tap } from 'rxjs/operators';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import { SEARCH_CONFIG_SERVICE } from '../../../../../../+my-dspace-page/my-dspace-page.component';
|
||||||
|
import { SearchConfigurationService } from '../../../../../../core/shared/search/search-configuration.service';
|
||||||
|
|
||||||
const RELATION_TYPE_FILTER_PREFIX = 'f.entityType=';
|
const RELATION_TYPE_FILTER_PREFIX = 'f.entityType=';
|
||||||
|
|
||||||
@@ -20,7 +23,13 @@ const RELATION_TYPE_METADATA_PREFIX = 'relation.isPublicationOf';
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-dynamic-lookup-relation-modal',
|
selector: 'ds-dynamic-lookup-relation-modal',
|
||||||
styleUrls: ['./dynamic-lookup-relation-modal.component.scss'],
|
styleUrls: ['./dynamic-lookup-relation-modal.component.scss'],
|
||||||
templateUrl: './dynamic-lookup-relation-modal.component.html'
|
templateUrl: './dynamic-lookup-relation-modal.component.html',
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
provide: SEARCH_CONFIG_SERVICE,
|
||||||
|
useClass: SearchConfigurationService
|
||||||
|
}
|
||||||
|
]
|
||||||
})
|
})
|
||||||
export class DsDynamicLookupRelationModalComponent implements OnInit {
|
export class DsDynamicLookupRelationModalComponent implements OnInit {
|
||||||
relationKey: string;
|
relationKey: string;
|
||||||
@@ -34,19 +43,22 @@ export class DsDynamicLookupRelationModalComponent implements OnInit {
|
|||||||
searchQuery;
|
searchQuery;
|
||||||
initialPagination = Object.assign(new PaginationComponentOptions(), {
|
initialPagination = Object.assign(new PaginationComponentOptions(), {
|
||||||
id: 'submission-relation-list',
|
id: 'submission-relation-list',
|
||||||
pageSize: 5
|
pageSize: 10
|
||||||
});
|
});
|
||||||
|
selectAllLoading = false;
|
||||||
|
|
||||||
constructor(public modal: NgbActiveModal, private searchService: SearchService) {
|
constructor(public modal: NgbActiveModal, private searchService: SearchService, private router: Router) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
|
this.resetRoute();
|
||||||
this.fieldName = this.relationKey.substring(RELATION_TYPE_METADATA_PREFIX.length);
|
this.fieldName = this.relationKey.substring(RELATION_TYPE_METADATA_PREFIX.length);
|
||||||
this.onPaginationChange(this.initialPagination);
|
this.onPaginationChange(this.initialPagination);
|
||||||
}
|
}
|
||||||
|
|
||||||
search(query: string) {
|
search(query: string) {
|
||||||
this.searchQuery = query;
|
this.searchQuery = query;
|
||||||
|
this.resetRoute();
|
||||||
this.onPaginationChange(this.initialPagination);
|
this.onPaginationChange(this.initialPagination);
|
||||||
this.deselectAll();
|
this.deselectAll();
|
||||||
}
|
}
|
||||||
@@ -118,6 +130,7 @@ export class DsDynamicLookupRelationModalComponent implements OnInit {
|
|||||||
|
|
||||||
selectAll() {
|
selectAll() {
|
||||||
this.allSelected = true;
|
this.allSelected = true;
|
||||||
|
this.selectAllLoading = true;
|
||||||
const fullPagination = Object.assign(new PaginationComponentOptions(), {
|
const fullPagination = Object.assign(new PaginationComponentOptions(), {
|
||||||
query: this.searchQuery,
|
query: this.searchQuery,
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
@@ -127,7 +140,8 @@ export class DsDynamicLookupRelationModalComponent implements OnInit {
|
|||||||
const results = this.searchService.search(fullSearchConfig);
|
const results = this.searchService.search(fullSearchConfig);
|
||||||
results.pipe(
|
results.pipe(
|
||||||
getSucceededRemoteData(),
|
getSucceededRemoteData(),
|
||||||
map((resultsRD) => resultsRD.payload.page)
|
map((resultsRD) => resultsRD.payload.page),
|
||||||
|
tap(() => this.selectAllLoading = false)
|
||||||
)
|
)
|
||||||
.subscribe((results) =>
|
.subscribe((results) =>
|
||||||
this.selection = results
|
this.selection = results
|
||||||
@@ -149,4 +163,10 @@ export class DsDynamicLookupRelationModalComponent implements OnInit {
|
|||||||
isSomeSelected() {
|
isSomeSelected() {
|
||||||
return isNotEmpty(this.selection);
|
return isNotEmpty(this.selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resetRoute() {
|
||||||
|
this.router.navigate([], {
|
||||||
|
queryParams: Object.assign({}, { page: 1, query: this.searchQuery }),
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
@@ -11,6 +11,8 @@ import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
|
|||||||
import { DsDynamicLookupRelationModalComponent } from './dynamic-lookup-relation-modal.component';
|
import { DsDynamicLookupRelationModalComponent } from './dynamic-lookup-relation-modal.component';
|
||||||
import { DynamicLookupRelationModel } from './dynamic-lookup-relation.model';
|
import { DynamicLookupRelationModel } from './dynamic-lookup-relation.model';
|
||||||
import { DSpaceObject } from '../../../../../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../../../../../core/shared/dspace-object.model';
|
||||||
|
import { RelationshipService } from '../../../../../../core/data/relationship.service';
|
||||||
|
import { Item } from '../../../../../../core/shared/item.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-dynamic-lookup-relation',
|
selector: 'ds-dynamic-lookup-relation',
|
||||||
@@ -28,11 +30,12 @@ export class DsDynamicLookupRelationComponent extends DynamicFormControlComponen
|
|||||||
|
|
||||||
modalRef: NgbModalRef;
|
modalRef: NgbModalRef;
|
||||||
modalValuesString = '';
|
modalValuesString = '';
|
||||||
selectedResults: DSpaceObject[];
|
selectedResults: Item[];
|
||||||
|
|
||||||
constructor(private modalService: NgbModal,
|
constructor(private modalService: NgbModal,
|
||||||
protected layoutService: DynamicFormLayoutService,
|
protected layoutService: DynamicFormLayoutService,
|
||||||
protected validationService: DynamicFormValidationService,
|
protected validationService: DynamicFormValidationService,
|
||||||
|
private relationService: RelationshipService
|
||||||
) {
|
) {
|
||||||
super(layoutService, validationService);
|
super(layoutService, validationService);
|
||||||
}
|
}
|
||||||
@@ -45,7 +48,7 @@ export class DsDynamicLookupRelationComponent extends DynamicFormControlComponen
|
|||||||
}
|
}
|
||||||
|
|
||||||
openLookup() {
|
openLookup() {
|
||||||
this.modalRef = this.modalService.open(DsDynamicLookupRelationModalComponent);
|
this.modalRef = this.modalService.open(DsDynamicLookupRelationModalComponent, { size: 'lg' });
|
||||||
this.modalRef.componentInstance.repeatable = this.model.repeatable;
|
this.modalRef.componentInstance.repeatable = this.model.repeatable;
|
||||||
this.modalRef.componentInstance.selection = this.selectedResults || [];
|
this.modalRef.componentInstance.selection = this.selectedResults || [];
|
||||||
this.modalRef.componentInstance.previousSelection = this.model.value || [];
|
this.modalRef.componentInstance.previousSelection = this.model.value || [];
|
||||||
@@ -65,6 +68,9 @@ export class DsDynamicLookupRelationComponent extends DynamicFormControlComponen
|
|||||||
|
|
||||||
this.modalValuesString = '';
|
this.modalValuesString = '';
|
||||||
this.selectedResults = [];
|
this.selectedResults = [];
|
||||||
|
this.selectedResults.forEach((item: Item) => {
|
||||||
|
this.relationService.addRelationship(this.model.item, item);
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
removeSelection(uuid: string) {
|
removeSelection(uuid: string) {
|
||||||
|
@@ -1,11 +1,13 @@
|
|||||||
import { DynamicFormControlLayout, serializable } from '@ng-dynamic-forms/core';
|
import { DynamicFormControlLayout, serializable } from '@ng-dynamic-forms/core';
|
||||||
import { DsDynamicInputModel, DsDynamicInputModelConfig } from '../ds-dynamic-input.model';
|
import { DsDynamicInputModel, DsDynamicInputModelConfig } from '../ds-dynamic-input.model';
|
||||||
|
import { Item } from '../../../../../../core/shared/item.model';
|
||||||
|
|
||||||
export const DYNAMIC_FORM_CONTROL_TYPE_LOOKUP_RELATION = 'LOOKUP_RELATION';
|
export const DYNAMIC_FORM_CONTROL_TYPE_LOOKUP_RELATION = 'LOOKUP_RELATION';
|
||||||
|
|
||||||
export interface DynamicLookupRelationModelConfig extends DsDynamicInputModelConfig {
|
export interface DynamicLookupRelationModelConfig extends DsDynamicInputModelConfig {
|
||||||
value?: any;
|
value?: any;
|
||||||
repeatable: boolean;
|
repeatable: boolean;
|
||||||
|
item: Item;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class DynamicLookupRelationModel extends DsDynamicInputModel {
|
export class DynamicLookupRelationModel extends DsDynamicInputModel {
|
||||||
@@ -13,6 +15,7 @@ export class DynamicLookupRelationModel extends DsDynamicInputModel {
|
|||||||
@serializable() readonly type: string = DYNAMIC_FORM_CONTROL_TYPE_LOOKUP_RELATION;
|
@serializable() readonly type: string = DYNAMIC_FORM_CONTROL_TYPE_LOOKUP_RELATION;
|
||||||
@serializable() value: any[];
|
@serializable() value: any[];
|
||||||
@serializable() repeatable: boolean;
|
@serializable() repeatable: boolean;
|
||||||
|
item: Item;
|
||||||
|
|
||||||
constructor(config: DynamicLookupRelationModelConfig, layout?: DynamicFormControlLayout) {
|
constructor(config: DynamicLookupRelationModelConfig, layout?: DynamicFormControlLayout) {
|
||||||
|
|
||||||
@@ -21,6 +24,7 @@ export class DynamicLookupRelationModel extends DsDynamicInputModel {
|
|||||||
this.readOnly = true;
|
this.readOnly = true;
|
||||||
this.disabled = true;
|
this.disabled = true;
|
||||||
this.repeatable = config.repeatable;
|
this.repeatable = config.repeatable;
|
||||||
|
this.item = config.item;
|
||||||
this.valueUpdates.next(config.value);
|
this.valueUpdates.next(config.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import * as deepFreeze from 'deep-freeze';
|
import * as deepFreeze from 'deep-freeze';
|
||||||
import { hostWindowReducer } from './host-window.reducer';
|
import { hostWindowReducer } from './search/host-window.reducer';
|
||||||
import { HostWindowResizeAction } from './host-window.actions';
|
import { HostWindowResizeAction } from './host-window.actions';
|
||||||
|
|
||||||
class NullAction extends HostWindowResizeAction {
|
class NullAction extends HostWindowResizeAction {
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { combineLatest as observableCombineLatest, Observable } from 'rxjs';
|
import { combineLatest as observableCombineLatest, Observable } from 'rxjs';
|
||||||
|
|
||||||
import { filter, distinctUntilChanged, map } from 'rxjs/operators';
|
import { filter, distinctUntilChanged, map } from 'rxjs/operators';
|
||||||
import { HostWindowState } from './host-window.reducer';
|
import { HostWindowState } from './search/host-window.reducer';
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { createSelector, select, Store } from '@ngrx/store';
|
import { createSelector, select, Store } from '@ngrx/store';
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { Component, InjectionToken, Injector, Input, OnInit } from '@angular/core';
|
import { Component, InjectionToken, Injector, Input, OnInit } from '@angular/core';
|
||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
import { Item } from '../../../core/shared/item.model';
|
import { Item } from '../../../core/shared/item.model';
|
||||||
import { hasValue } from '../../empty.util';
|
import { hasValue } from '../../empty.util';
|
||||||
import { ItemSearchResult } from '../../object-collection/shared/item-search-result.model';
|
import { ItemSearchResult } from '../../object-collection/shared/item-search-result.model';
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { ClaimedTask } from '../../../core/tasks/models/claimed-task-object.model';
|
import { ClaimedTask } from '../../../core/tasks/models/claimed-task-object.model';
|
||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
|
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
|
||||||
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
|
import { searchResultFor } from '../../search/search-result-element-decorator';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a search result object of a ClaimedTask object
|
* Represents a search result object of a ClaimedTask object
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
import { Collection } from '../../../core/shared/collection.model';
|
import { Collection } from '../../../core/shared/collection.model';
|
||||||
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
|
import { searchResultFor } from '../../search/search-result-element-decorator';
|
||||||
|
|
||||||
@searchResultFor(Collection)
|
@searchResultFor(Collection)
|
||||||
export class CollectionSearchResult extends SearchResult<Collection> {
|
export class CollectionSearchResult extends SearchResult<Collection> {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { Community } from '../../../core/shared/community.model';
|
import { Community } from '../../../core/shared/community.model';
|
||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
|
import { searchResultFor } from '../../search/search-result-element-decorator';
|
||||||
|
|
||||||
@searchResultFor(Community)
|
@searchResultFor(Community)
|
||||||
export class CommunitySearchResult extends SearchResult<Community> {
|
export class CommunitySearchResult extends SearchResult<Community> {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { Item } from '../../../core/shared/item.model';
|
import { Item } from '../../../core/shared/item.model';
|
||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
|
import { searchResultFor } from '../../search/search-result-element-decorator';
|
||||||
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
|
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
import { Item } from '../../../core/shared/item.model';
|
import { Item } from '../../../core/shared/item.model';
|
||||||
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
|
import { searchResultFor } from '../../search/search-result-element-decorator';
|
||||||
|
|
||||||
@searchResultFor(Item)
|
@searchResultFor(Item)
|
||||||
export class ItemSearchResult extends SearchResult<Item> {
|
export class ItemSearchResult extends SearchResult<Item> {
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { PoolTask } from '../../../core/tasks/models/pool-task-object.model';
|
import { PoolTask } from '../../../core/tasks/models/pool-task-object.model';
|
||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
|
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
|
||||||
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
|
import { searchResultFor } from '../../search/search-result-element-decorator';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a search result object of a PoolTask object
|
* Represents a search result object of a PoolTask object
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Workflowitem } from '../../../core/submission/models/workflowitem.model';
|
import { Workflowitem } from '../../../core/submission/models/workflowitem.model';
|
||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
|
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
|
||||||
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
|
import { searchResultFor } from '../../search/search-result-element-decorator';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a search result object of a Workflowitem object
|
* Represents a search result object of a Workflowitem object
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Workspaceitem } from '../../../core/submission/models/workspaceitem.model';
|
import { Workspaceitem } from '../../../core/submission/models/workspaceitem.model';
|
||||||
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
|
import { MyDSpaceConfigurationValueType } from '../../../+my-dspace-page/my-dspace-configuration-value-type';
|
||||||
import { searchResultFor } from '../../../+search-page/search-service/search-result-element-decorator';
|
import { searchResultFor } from '../../search/search-result-element-decorator';
|
||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a search result object of a Workspaceitem object
|
* Represents a search result object of a Workspaceitem object
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
|
|
||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
||||||
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
|
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
|
||||||
import { ListableObject } from '../../object-collection/shared/listable-object.model';
|
import { ListableObject } from '../../object-collection/shared/listable-object.model';
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
|
|
||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../search/search-result.model';
|
||||||
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
||||||
import { hasValue } from '../../empty.util';
|
import { hasValue } from '../../empty.util';
|
||||||
import { ListableObject } from '../../object-collection/shared/listable-object.model';
|
import { ListableObject } from '../../object-collection/shared/listable-object.model';
|
||||||
|
@@ -15,7 +15,7 @@ import { isNumeric } from 'rxjs/internal-compatibility';
|
|||||||
import { isEqual, isObject, transform } from 'lodash';
|
import { isEqual, isObject, transform } from 'lodash';
|
||||||
|
|
||||||
import { HostWindowService } from '../host-window.service';
|
import { HostWindowService } from '../host-window.service';
|
||||||
import { HostWindowState } from '../host-window.reducer';
|
import { HostWindowState } from '../search/host-window.reducer';
|
||||||
import { PaginationComponentOptions } from './pagination-component-options.model';
|
import { PaginationComponentOptions } from './pagination-component-options.model';
|
||||||
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
|
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
|
||||||
import { hasValue, isNotEmpty } from '../empty.util';
|
import { hasValue, isNotEmpty } from '../empty.util';
|
||||||
@@ -513,5 +513,4 @@ export class PaginationComponent implements OnDestroy, OnInit {
|
|||||||
get shouldShowBottomPager(): boolean {
|
get shouldShowBottomPager(): boolean {
|
||||||
return this.hasMultiplePages || !this.hidePagerWhenSinglePage
|
return this.hasMultiplePages || !this.hidePagerWhenSinglePage
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -8,7 +8,7 @@ import { RouterTestingModule } from '@angular/router/testing';
|
|||||||
import { Community } from '../../core/shared/community.model';
|
import { Community } from '../../core/shared/community.model';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { DSpaceObject } from '../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../core/shared/dspace-object.model';
|
||||||
import { SearchService } from '../../+search-page/search-service/search.service';
|
import { SearchService } from '../../core/shared/search/search.service';
|
||||||
|
|
||||||
describe('SearchFormComponent', () => {
|
describe('SearchFormComponent', () => {
|
||||||
let comp: SearchFormComponent;
|
let comp: SearchFormComponent;
|
||||||
|
@@ -4,7 +4,7 @@ import { Router } from '@angular/router';
|
|||||||
import { hasValue, isNotEmpty } from '../empty.util';
|
import { hasValue, isNotEmpty } from '../empty.util';
|
||||||
import { QueryParamsHandling } from '@angular/router/src/config';
|
import { QueryParamsHandling } from '@angular/router/src/config';
|
||||||
import { MYDSPACE_ROUTE } from '../../+my-dspace-page/my-dspace-page.component';
|
import { MYDSPACE_ROUTE } from '../../+my-dspace-page/my-dspace-page.component';
|
||||||
import { SearchService } from '../../+search-page/search-service/search.service';
|
import { SearchService } from '../../core/shared/search/search.service';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This component renders a simple item page.
|
* This component renders a simple item page.
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { HostWindowAction, HostWindowActionTypes } from './host-window.actions';
|
import { HostWindowAction, HostWindowActionTypes } from '../host-window.actions';
|
||||||
|
|
||||||
export interface HostWindowState {
|
export interface HostWindowState {
|
||||||
width: number;
|
width: number;
|
@@ -1,6 +1,6 @@
|
|||||||
import { autoserialize, autoserializeAs } from 'cerialize';
|
import { autoserialize, autoserializeAs } from 'cerialize';
|
||||||
import { MetadataMap } from '../core/shared/metadata.models';
|
import { MetadataMap } from '../../core/shared/metadata.models';
|
||||||
import { ListableObject } from '../shared/object-collection/shared/listable-object.model';
|
import { ListableObject } from '../object-collection/shared/listable-object.model';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a normalized version of a search result object of a certain DSpaceObject
|
* Represents a normalized version of a search result object of a certain DSpaceObject
|
@@ -1,7 +1,7 @@
|
|||||||
import { SortDirection, SortOptions } from '../core/cache/models/sort-options.model';
|
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
|
||||||
import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../pagination/pagination-component-options.model';
|
||||||
import { PaginatedSearchOptions } from './paginated-search-options.model';
|
import { PaginatedSearchOptions } from './paginated-search-options.model';
|
||||||
import { DSpaceObjectType } from '../core/shared/dspace-object-type.model';
|
import { DSpaceObjectType } from '../../core/shared/dspace-object-type.model';
|
||||||
import { SearchFilter } from './search-filter.model';
|
import { SearchFilter } from './search-filter.model';
|
||||||
|
|
||||||
describe('PaginatedSearchOptions', () => {
|
describe('PaginatedSearchOptions', () => {
|
@@ -1,9 +1,9 @@
|
|||||||
import { SortOptions } from '../core/cache/models/sort-options.model';
|
import { SortOptions } from '../../core/cache/models/sort-options.model';
|
||||||
import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model';
|
import { PaginationComponentOptions } from '../pagination/pagination-component-options.model';
|
||||||
import { isNotEmpty } from '../shared/empty.util';
|
import { isNotEmpty } from '../empty.util';
|
||||||
import { SearchOptions } from './search-options.model';
|
import { SearchOptions } from './search-options.model';
|
||||||
import { SearchFilter } from './search-filter.model';
|
import { SearchFilter } from './search-filter.model';
|
||||||
import { DSpaceObjectType } from '../core/shared/dspace-object-type.model';
|
import { DSpaceObjectType } from '../../core/shared/dspace-object-type.model';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This model class represents all parameters needed to request information about a certain page of a search request, in a certain order
|
* This model class represents all parameters needed to request information about a certain page of a search request, in a certain order
|
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* Represents a search filter
|
* Represents a search filter
|
||||||
*/
|
*/
|
||||||
import { hasValue } from '../shared/empty.util';
|
import { hasValue } from '../empty.util';
|
||||||
|
|
||||||
export class SearchFilter {
|
export class SearchFilter {
|
||||||
key: string;
|
key: string;
|
@@ -1,5 +1,5 @@
|
|||||||
@import '../../../../../styles/variables.scss';
|
@import '../../../../../../styles/variables';
|
||||||
@import '../../../../../styles/mixins.scss';
|
@import '../../../../../../styles/mixins';
|
||||||
|
|
||||||
.filters {
|
.filters {
|
||||||
a {
|
a {
|
@@ -1,9 +1,9 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
|
||||||
import { FilterType } from '../../../search-service/filter-type.model';
|
import { FilterType } from '../../../filter-type.model';
|
||||||
import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component';
|
import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component';
|
||||||
import { renderFacetFor } from '../search-filter-type-decorator';
|
import { renderFacetFor } from '../search-filter-type-decorator';
|
||||||
import { FacetValue } from '../../../search-service/facet-value.model';
|
import { FacetValue } from '../../../facet-value.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-search-authority-filter',
|
selector: 'ds-search-authority-filter',
|
@@ -1,5 +1,5 @@
|
|||||||
@import '../../../../../styles/variables.scss';
|
@import '../../../../../../styles/variables';
|
||||||
@import '../../../../../styles/mixins.scss';
|
@import '../../../../../../styles/mixins';
|
||||||
|
|
||||||
.filters {
|
.filters {
|
||||||
.toggle-more-filters a {
|
.toggle-more-filters a {
|
@@ -1,5 +1,5 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { FilterType } from '../../../search-service/filter-type.model';
|
import { FilterType } from '../../../filter-type.model';
|
||||||
import { renderFacetFor } from '../search-filter-type-decorator';
|
import { renderFacetFor } from '../search-filter-type-decorator';
|
||||||
import {
|
import {
|
||||||
facetLoad,
|
facetLoad,
|
@@ -1,4 +1,4 @@
|
|||||||
@import '../../../../../../styles/variables.scss';
|
@import '../../../../../../../styles/variables';
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $body-color;
|
color: $body-color;
|
@@ -3,17 +3,17 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
import { SearchFacetOptionComponent } from './search-facet-option.component';
|
import { SearchFacetOptionComponent } from './search-facet-option.component';
|
||||||
import { SearchFilterConfig } from '../../../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../../search-filter-config.model';
|
||||||
import { FilterType } from '../../../../search-service/filter-type.model';
|
import { FilterType } from '../../../../filter-type.model';
|
||||||
import { FacetValue } from '../../../../search-service/facet-value.model';
|
import { FacetValue } from '../../../../facet-value.model';
|
||||||
import { FormsModule } from '@angular/forms';
|
import { FormsModule } from '@angular/forms';
|
||||||
import { of as observableOf } from 'rxjs';
|
import { of as observableOf } from 'rxjs';
|
||||||
import { SearchService } from '../../../../search-service/search.service';
|
import { SearchService } from '../../../../../../core/shared/search/search.service';
|
||||||
import { SearchServiceStub } from '../../../../../shared/testing/search-service-stub';
|
import { SearchServiceStub } from '../../../../../testing/search-service-stub';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { RouterStub } from '../../../../../shared/testing/router-stub';
|
import { RouterStub } from '../../../../../testing/router-stub';
|
||||||
import { SearchConfigurationService } from '../../../../search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../../../../../../core/shared/search/search-configuration.service';
|
||||||
import { SearchFilterService } from '../../search-filter.service';
|
import { SearchFilterService } from '../../../../../../core/shared/search/search-filter.service';
|
||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
|
|
||||||
describe('SearchFacetOptionComponent', () => {
|
describe('SearchFacetOptionComponent', () => {
|
@@ -2,13 +2,13 @@ import { combineLatest as observableCombineLatest, Observable, Subscription } fr
|
|||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { FacetValue } from '../../../../search-service/facet-value.model';
|
import { FacetValue } from '../../../../facet-value.model';
|
||||||
import { SearchFilterConfig } from '../../../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../../search-filter-config.model';
|
||||||
import { SearchService } from '../../../../search-service/search.service';
|
import { SearchService } from '../../../../../../core/shared/search/search.service';
|
||||||
import { SearchFilterService } from '../../search-filter.service';
|
import { SearchFilterService } from '../../../../../../core/shared/search/search-filter.service';
|
||||||
import { SearchConfigurationService } from '../../../../search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../../../../../../core/shared/search/search-configuration.service';
|
||||||
import { hasValue } from '../../../../../shared/empty.util';
|
import { hasValue } from '../../../../../empty.util';
|
||||||
import { FilterType } from '../../../../search-service/filter-type.model';
|
import { FilterType } from '../../../../filter-type.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-search-facet-option',
|
selector: 'ds-search-facet-option',
|
@@ -1,4 +1,4 @@
|
|||||||
@import '../../../../../../styles/variables.scss';
|
@import '../../../../../../../styles/variables';
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $link-color;
|
color: $link-color;
|
@@ -2,17 +2,17 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
import { SearchFilterConfig } from '../../../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../../search-filter-config.model';
|
||||||
import { FilterType } from '../../../../search-service/filter-type.model';
|
import { FilterType } from '../../../../filter-type.model';
|
||||||
import { FacetValue } from '../../../../search-service/facet-value.model';
|
import { FacetValue } from '../../../../facet-value.model';
|
||||||
import { FormsModule } from '@angular/forms';
|
import { FormsModule } from '@angular/forms';
|
||||||
import { of as observableOf } from 'rxjs';
|
import { of as observableOf } from 'rxjs';
|
||||||
import { SearchService } from '../../../../search-service/search.service';
|
import { SearchService } from '../../../../../../core/shared/search/search.service';
|
||||||
import { SearchServiceStub } from '../../../../../shared/testing/search-service-stub';
|
import { SearchServiceStub } from '../../../../../testing/search-service-stub';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { RouterStub } from '../../../../../shared/testing/router-stub';
|
import { RouterStub } from '../../../../../testing/router-stub';
|
||||||
import { SearchConfigurationService } from '../../../../search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../../../../../../core/shared/search/search-configuration.service';
|
||||||
import { SearchFilterService } from '../../search-filter.service';
|
import { SearchFilterService } from '../../../../../../core/shared/search/search-filter.service';
|
||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
import { SearchFacetRangeOptionComponent } from './search-facet-range-option.component';
|
import { SearchFacetRangeOptionComponent } from './search-facet-range-option.component';
|
||||||
import {
|
import {
|
@@ -2,16 +2,16 @@ import { Observable, Subscription } from 'rxjs';
|
|||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { FacetValue } from '../../../../search-service/facet-value.model';
|
import { FacetValue } from '../../../../facet-value.model';
|
||||||
import { SearchFilterConfig } from '../../../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../../search-filter-config.model';
|
||||||
import { SearchService } from '../../../../search-service/search.service';
|
import { SearchService } from '../../../../../../core/shared/search/search.service';
|
||||||
import { SearchFilterService } from '../../search-filter.service';
|
import { SearchFilterService } from '../../../../../../core/shared/search/search-filter.service';
|
||||||
import {
|
import {
|
||||||
RANGE_FILTER_MAX_SUFFIX,
|
RANGE_FILTER_MAX_SUFFIX,
|
||||||
RANGE_FILTER_MIN_SUFFIX
|
RANGE_FILTER_MIN_SUFFIX
|
||||||
} from '../../search-range-filter/search-range-filter.component';
|
} from '../../search-range-filter/search-range-filter.component';
|
||||||
import { SearchConfigurationService } from '../../../../search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../../../../../../core/shared/search/search-configuration.service';
|
||||||
import { hasValue } from '../../../../../shared/empty.util';
|
import { hasValue } from '../../../../../empty.util';
|
||||||
|
|
||||||
const rangeDelimiter = '-';
|
const rangeDelimiter = '-';
|
||||||
|
|
@@ -1,4 +1,4 @@
|
|||||||
@import '../../../../../../styles/variables.scss';
|
@import '../../../../../../../styles/variables';
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $body-color;
|
color: $body-color;
|
@@ -2,18 +2,18 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
import { SearchFilterConfig } from '../../../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../../search-filter-config.model';
|
||||||
import { FilterType } from '../../../../search-service/filter-type.model';
|
import { FilterType } from '../../../../filter-type.model';
|
||||||
import { FormsModule } from '@angular/forms';
|
import { FormsModule } from '@angular/forms';
|
||||||
import { of as observableOf } from 'rxjs';
|
import { of as observableOf } from 'rxjs';
|
||||||
import { SearchService } from '../../../../search-service/search.service';
|
import { SearchService } from '../../../../../../core/shared/search/search.service';
|
||||||
import { SearchServiceStub } from '../../../../../shared/testing/search-service-stub';
|
import { SearchServiceStub } from '../../../../../testing/search-service-stub';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { RouterStub } from '../../../../../shared/testing/router-stub';
|
import { RouterStub } from '../../../../../testing/router-stub';
|
||||||
import { SearchConfigurationService } from '../../../../search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../../../../../../core/shared/search/search-configuration.service';
|
||||||
import { SearchFilterService } from '../../search-filter.service';
|
import { SearchFilterService } from '../../../../../../core/shared/search/search-filter.service';
|
||||||
import { SearchFacetSelectedOptionComponent } from './search-facet-selected-option.component';
|
import { SearchFacetSelectedOptionComponent } from './search-facet-selected-option.component';
|
||||||
import { FacetValue } from '../../../../search-service/facet-value.model';
|
import { FacetValue } from '../../../../facet-value.model';
|
||||||
|
|
||||||
describe('SearchFacetSelectedOptionComponent', () => {
|
describe('SearchFacetSelectedOptionComponent', () => {
|
||||||
let comp: SearchFacetSelectedOptionComponent;
|
let comp: SearchFacetSelectedOptionComponent;
|
@@ -1,13 +1,13 @@
|
|||||||
import { combineLatest as observableCombineLatest, Observable, Subscription } from 'rxjs';
|
import { combineLatest as observableCombineLatest, Observable, Subscription } from 'rxjs';
|
||||||
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { SearchFilterConfig } from '../../../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../../search-filter-config.model';
|
||||||
import { SearchService } from '../../../../search-service/search.service';
|
import { SearchService } from '../../../../../../core/shared/search/search.service';
|
||||||
import { SearchFilterService } from '../../search-filter.service';
|
import { SearchFilterService } from '../../../../../../core/shared/search/search-filter.service';
|
||||||
import { hasValue } from '../../../../../shared/empty.util';
|
import { hasValue } from '../../../../../empty.util';
|
||||||
import { SearchConfigurationService } from '../../../../search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../../../../../../core/shared/search/search-configuration.service';
|
||||||
import { FacetValue } from '../../../../search-service/facet-value.model';
|
import { FacetValue } from '../../../../facet-value.model';
|
||||||
import { FilterType } from '../../../../search-service/filter-type.model';
|
import { FilterType } from '../../../../filter-type.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-search-facet-selected-option',
|
selector: 'ds-search-facet-selected-option',
|
@@ -1,9 +1,9 @@
|
|||||||
import { Component, Injector, Input, OnInit } from '@angular/core';
|
import { Component, Injector, Input, OnInit } from '@angular/core';
|
||||||
import { renderFilterType } from '../search-filter-type-decorator';
|
import { renderFilterType } from '../search-filter-type-decorator';
|
||||||
import { FilterType } from '../../../search-service/filter-type.model';
|
import { FilterType } from '../../../filter-type.model';
|
||||||
import { SearchFilterConfig } from '../../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../search-filter-config.model';
|
||||||
import { FILTER_CONFIG, IN_PLACE_SEARCH } from '../search-filter.service';
|
import { FILTER_CONFIG, IN_PLACE_SEARCH } from '../../../../../core/shared/search/search-filter.service';
|
||||||
import { GenericConstructor } from '../../../../core/shared/generic-constructor';
|
import { GenericConstructor } from '../../../../../core/shared/generic-constructor';
|
||||||
import { SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component';
|
import { SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
@@ -2,23 +2,23 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
import { FILTER_CONFIG, IN_PLACE_SEARCH, SearchFilterService } from '../search-filter.service';
|
import { FILTER_CONFIG, IN_PLACE_SEARCH, SearchFilterService } from '../../../../../core/shared/search/search-filter.service';
|
||||||
import { SearchFilterConfig } from '../../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../search-filter-config.model';
|
||||||
import { FilterType } from '../../../search-service/filter-type.model';
|
import { FilterType } from '../../../filter-type.model';
|
||||||
import { FacetValue } from '../../../search-service/facet-value.model';
|
import { FacetValue } from '../../../facet-value.model';
|
||||||
import { FormsModule } from '@angular/forms';
|
import { FormsModule } from '@angular/forms';
|
||||||
import { of as observableOf } from 'rxjs';
|
import { of as observableOf } from 'rxjs';
|
||||||
import { SearchService } from '../../../search-service/search.service';
|
import { SearchService } from '../../../../../core/shared/search/search.service';
|
||||||
import { SearchServiceStub } from '../../../../shared/testing/search-service-stub';
|
import { SearchServiceStub } from '../../../../testing/search-service-stub';
|
||||||
import { RemoteData } from '../../../../core/data/remote-data';
|
import { RemoteData } from '../../../../../core/data/remote-data';
|
||||||
import { PaginatedList } from '../../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../../../core/data/paginated-list';
|
||||||
import { RouterStub } from '../../../../shared/testing/router-stub';
|
import { RouterStub } from '../../../../testing/router-stub';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { PageInfo } from '../../../../core/shared/page-info.model';
|
import { PageInfo } from '../../../../../core/shared/page-info.model';
|
||||||
import { SearchFacetFilterComponent } from './search-facet-filter.component';
|
import { SearchFacetFilterComponent } from './search-facet-filter.component';
|
||||||
import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service';
|
import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service';
|
||||||
import { SearchConfigurationServiceStub } from '../../../../shared/testing/search-configuration-service-stub';
|
import { SearchConfigurationServiceStub } from '../../../../testing/search-configuration-service-stub';
|
||||||
import { SEARCH_CONFIG_SERVICE } from '../../../../+my-dspace-page/my-dspace-page.component';
|
import { SEARCH_CONFIG_SERVICE } from '../../../../../+my-dspace-page/my-dspace-page.component';
|
||||||
import { tap } from 'rxjs/operators';
|
import { tap } from 'rxjs/operators';
|
||||||
|
|
||||||
describe('SearchFacetFilterComponent', () => {
|
describe('SearchFacetFilterComponent', () => {
|
@@ -10,20 +10,20 @@ import { distinctUntilChanged, map, switchMap, take, tap } from 'rxjs/operators'
|
|||||||
import { animate, state, style, transition, trigger } from '@angular/animations';
|
import { animate, state, style, transition, trigger } from '@angular/animations';
|
||||||
import { Component, Inject, OnDestroy, OnInit } from '@angular/core';
|
import { Component, Inject, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service';
|
import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service';
|
||||||
import { PaginatedList } from '../../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../../../core/data/paginated-list';
|
||||||
import { RemoteData } from '../../../../core/data/remote-data';
|
import { RemoteData } from '../../../../../core/data/remote-data';
|
||||||
import { hasNoValue, hasValue, isNotEmpty } from '../../../../shared/empty.util';
|
import { hasNoValue, hasValue, isNotEmpty } from '../../../../empty.util';
|
||||||
import { EmphasizePipe } from '../../../../shared/utils/emphasize.pipe';
|
import { EmphasizePipe } from '../../../../utils/emphasize.pipe';
|
||||||
import { FacetValue } from '../../../search-service/facet-value.model';
|
import { FacetValue } from '../../../facet-value.model';
|
||||||
import { SearchFilterConfig } from '../../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../../search-filter-config.model';
|
||||||
import { SearchService } from '../../../search-service/search.service';
|
import { SearchService } from '../../../../../core/shared/search/search.service';
|
||||||
import { FILTER_CONFIG, IN_PLACE_SEARCH, SearchFilterService } from '../search-filter.service';
|
import { FILTER_CONFIG, IN_PLACE_SEARCH, SearchFilterService } from '../../../../../core/shared/search/search-filter.service';
|
||||||
import { SearchConfigurationService } from '../../../search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../../../../../core/shared/search/search-configuration.service';
|
||||||
import { getSucceededRemoteData } from '../../../../core/shared/operators';
|
import { getSucceededRemoteData } from '../../../../../core/shared/operators';
|
||||||
import { InputSuggestion } from '../../../../shared/input-suggestions/input-suggestions.model';
|
import { InputSuggestion } from '../../../../input-suggestions/input-suggestions.model';
|
||||||
import { SearchOptions } from '../../../search-options.model';
|
import { SearchOptions } from '../../../search-options.model';
|
||||||
import { SEARCH_CONFIG_SERVICE } from '../../../../+my-dspace-page/my-dspace-page.component';
|
import { SEARCH_CONFIG_SERVICE } from '../../../../../+my-dspace-page/my-dspace-page.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-search-facet-filter',
|
selector: 'ds-search-facet-filter',
|
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
import { FilterType } from '../../search-service/filter-type.model';
|
import { FilterType } from '../../filter-type.model';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contains the mapping between a facet component and a FilterType
|
* Contains the mapping between a facet component and a FilterType
|
@@ -1,7 +1,7 @@
|
|||||||
import { Action } from '@ngrx/store';
|
import { Action } from '@ngrx/store';
|
||||||
|
|
||||||
import { type } from '../../../shared/ngrx/type';
|
import { type } from '../../../ngrx/type';
|
||||||
import { SearchFilterConfig } from '../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../search-filter-config.model';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For each action type in an action group, make a simple
|
* For each action type in an action group, make a simple
|
@@ -1,5 +1,5 @@
|
|||||||
@import '../../../../styles/variables.scss';
|
@import '../../../../../styles/variables';
|
||||||
@import '../../../../styles/mixins.scss';
|
@import '../../../../../styles/mixins';
|
||||||
|
|
||||||
:host .facet-filter {
|
:host .facet-filter {
|
||||||
border: 1px solid map-get($theme-colors, light);
|
border: 1px solid map-get($theme-colors, light);
|
@@ -5,14 +5,14 @@ import { RouterTestingModule } from '@angular/router/testing';
|
|||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import { Observable, of as observableOf } from 'rxjs';
|
import { Observable, of as observableOf } from 'rxjs';
|
||||||
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
import { SearchFilterService } from './search-filter.service';
|
import { SearchFilterService } from '../../../../core/shared/search/search-filter.service';
|
||||||
import { SearchService } from '../../search-service/search.service';
|
import { SearchService } from '../../../../core/shared/search/search.service';
|
||||||
import { SearchFilterComponent } from './search-filter.component';
|
import { SearchFilterComponent } from './search-filter.component';
|
||||||
import { SearchFilterConfig } from '../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../search-filter-config.model';
|
||||||
import { FilterType } from '../../search-service/filter-type.model';
|
import { FilterType } from '../../filter-type.model';
|
||||||
import { SearchConfigurationService } from '../../search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service';
|
||||||
import { SearchConfigurationServiceStub } from '../../../shared/testing/search-configuration-service-stub';
|
import { SearchConfigurationServiceStub } from '../../../testing/search-configuration-service-stub';
|
||||||
import { SEARCH_CONFIG_SERVICE } from '../../../+my-dspace-page/my-dspace-page.component';
|
import { SEARCH_CONFIG_SERVICE } from '../../../../+my-dspace-page/my-dspace-page.component';
|
||||||
|
|
||||||
describe('SearchFilterComponent', () => {
|
describe('SearchFilterComponent', () => {
|
||||||
let comp: SearchFilterComponent;
|
let comp: SearchFilterComponent;
|
@@ -3,13 +3,13 @@ import { Component, Inject, Input, OnInit } from '@angular/core';
|
|||||||
import { Observable, of as observableOf } from 'rxjs';
|
import { Observable, of as observableOf } from 'rxjs';
|
||||||
import { filter, first, map, startWith, switchMap, take } from 'rxjs/operators';
|
import { filter, first, map, startWith, switchMap, take } from 'rxjs/operators';
|
||||||
|
|
||||||
import { SearchFilterConfig } from '../../search-service/search-filter-config.model';
|
import { SearchFilterConfig } from '../../search-filter-config.model';
|
||||||
import { SearchFilterService } from './search-filter.service';
|
import { SearchFilterService } from '../../../../core/shared/search/search-filter.service';
|
||||||
import { slide } from '../../../shared/animations/slide';
|
import { slide } from '../../../animations/slide';
|
||||||
import { isNotEmpty } from '../../../shared/empty.util';
|
import { isNotEmpty } from '../../../empty.util';
|
||||||
import { SearchService } from '../../search-service/search.service';
|
import { SearchService } from '../../../../core/shared/search/search.service';
|
||||||
import { SearchConfigurationService } from '../../search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service';
|
||||||
import { SEARCH_CONFIG_SERVICE } from '../../../+my-dspace-page/my-dspace-page.component';
|
import { SEARCH_CONFIG_SERVICE } from '../../../../+my-dspace-page/my-dspace-page.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-search-filter',
|
selector: 'ds-search-filter',
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user