45621: commit before small sidebar changes

This commit is contained in:
Lotte Hofstede
2017-11-17 11:28:48 +01:00
parent 86234afc42
commit 889318f162
9 changed files with 80 additions and 32 deletions

View File

@@ -6,13 +6,13 @@
<input type="checkbox" [checked]="true"/>
<span class="filter-value">{{value}}</span>
</a>
<a *ngFor="let value of filterValues; let i=index" class="d-block"
<a *ngFor="let value of filterValues; let i=index" class="d-block row"
[routerLink]="[getSearchLink()]"
[queryParams]="getQueryParamsWith(value.value) | async">
<ng-template [ngIf]="i < (facetCount | async)">
<input type="checkbox" [checked]="false"/>
<span class="filter-value">{{value.value}}</span>
<span class="filter-value-count float-right">({{value.count}})</span>
<span class="col-10"><input type="checkbox" [checked]="false"/>
<span class="filter-value">{{value.value}}</span></span>
<span class="col-2 filter-value-count">({{value.count}})</span>
</ng-template>
</a>
<div class="clearfix toggle-more-filters">

View File

@@ -1,4 +1,4 @@
<h2>{{"search.filters.head" | translate}}</h2>
<h3>{{"search.filters.head" | translate}}</h3>
<div *ngIf="(filters | async).hasSucceeded">
<div *ngFor="let filter of (filters | async).payload">
<ds-search-filter class="d-block mb-3 p-3" [filter]="filter"></ds-search-filter>

View File

@@ -1,19 +1,15 @@
<div class="container">
<div class="search-page row">
<div class="col-3">
<ds-search-sidebar *ngIf="!(isMobileView | async)" class="sidebar-sm-sticky"
<ds-search-sidebar *ngIf="!(isMobileView | async)" class="col-3 sidebar-sm-sticky"
id="search-sidebar"
[resultCount]="(resultsRDObs | async)?.pageInfo?.totalElements"></ds-search-sidebar>
</div>
<div class="col-9">
<div id="search-header" class="row">
<div class="col-12 col-sm-9">
<ds-search-form id="search-form"
[query]="query"
[scope]="(scopeObjectRDObs | async)?.payload"
[currentParams]="currentParams"
[scopes]="(scopeListRDObs | async)?.payload">
</ds-search-form>
</div>
<div class="row">
<div id="search-body"
class="row-offcanvas row-offcanvas-left"

View File

@@ -1,20 +1,18 @@
<h3 class="mt-3">{{ 'search.sidebar.settings.title' | translate}}</h3>
<div *ngIf="[searchOptions].sort" class="setting-option result-order-settings d-block mb-3 px-3 py-2 ng-tns-c13-5">
<h4>{{ 'search.sidebar.settings.sort-by' | translate}}</h4>
<div class="form-group">
<h3>{{ 'search.sidebar.settings.title' | translate}}</h3>
<div *ngIf="[searchOptions].sort" class="setting-option result-order-settings mb-3 p-3">
<h5>{{ 'search.sidebar.settings.sort-by' | translate}}</h5>
<select class="form-control" (change)="reloadOrder($event)">
<option *ngFor="let direction of (sortDirections | dsKeys); let currentElementIndex = index" [value]="currentElementIndex"
<option *ngFor="let direction of (sortDirections | dsKeys); let currentElementIndex = index"
[value]="currentElementIndex"
[selected]="direction === searchOptions.sort? 'selected': null">
{{direction.value}}
</option>
</select>
</div>
</div>
<div *ngIf="searchOptions.pagination.pageSize" class="setting-option page-size-settings d-block mb-3 px-3 py-2 ng-tns-c13-5">
<h4>{{ 'search.sidebar.settings.rpp' | translate}}</h4>
<div *ngIf="searchOptions.pagination.pageSize" class="setting-option page-size-settings mb-3 p-3">
<h5>{{ 'search.sidebar.settings.rpp' | translate}}</h5>
<div class="form-group">
<select class="form-control" (change)="reloadRPP($event)">
<option *ngFor="let item of searchOptions.pagination.pageSizeOptions" [value]="item"
[selected]="item === searchOptions.pagination.pageSize ? 'selected': null">
@@ -22,4 +20,3 @@
</option>
</select>
</div>
</div>

View File

@@ -2,13 +2,16 @@
<div id="sidebar-options" class="d-block d-sm-none search-controls clearfix">
<small class="results">{{resultCount}} {{"search.sidebar.results" | translate}}</small>
<button (click)="toggleSidebar.emit()"
aria-controls="#search-body" class="btn btn-outline-primary float-right close-sidebar"><i
aria-controls="#search-body"
class="btn btn-outline-primary float-right close-sidebar"><i
class="fa fa-arrow-right"></i> {{"search.sidebar.close" | translate}}
</button>
</div>
<div id="search-sidebar-content">
<ds-view-mode-switch class="d-none d-sm-block"></ds-view-mode-switch>
<div class="sidebar-content">
<ds-search-filters></ds-search-filters>
<ds-search-settings></ds-search-settings>
</div>
</div>
</div>

View File

@@ -8,4 +8,8 @@
ds-view-mode-switch {
margin-bottom: $spacer;
}
.sidebar-content > *:not(:last-child) {
margin-bottom: 4*$spacer;
display: block;
}
}

View File

@@ -3,16 +3,26 @@ import { Effect, Actions } from '@ngrx/effects'
import * as fromRouter from '@ngrx/router-store';
import { SearchSidebarCollapseAction } from './search-sidebar.actions';
import { URLBaser } from '../../core/url-baser/url-baser';
@Injectable()
export class SearchSidebarEffects {
private previousPath: string;
@Effect() routeChange$ = this.actions$
.ofType(fromRouter.ROUTER_NAVIGATION)
.filter((action) => this.previousPath !== this.getBaseUrl(action))
.do((action) => {this.previousPath = this.getBaseUrl(action)})
.map(() => new SearchSidebarCollapseAction());
constructor(private actions$: Actions) {
}
getBaseUrl(action: any): string {
/* tslint:disable:no-string-literal */
const url: string = action['payload'].routerState.url;
return new URLBaser(url).toString();
/* tslint:enable:no-string-literal */
}
}

View File

@@ -0,0 +1,39 @@
import { isEmpty } from '../../shared/empty.util';
/**
* Extracts the base URL
* from a URL with query parameters
*/
export class URLBaser {
private original: string;
/**
* Creates a new URLBaser
*
* @param originalURL
* a string representing the original URL with possible query parameters
*/
constructor(originalURL: string) {
this.original = originalURL;
}
/**
* Removes the query parameters from the original URL of this URLBaser
*
* @return {string}
* The base URL
*/
toString(): string {
if (isEmpty(this.original)) {
return '';
} else {
const index = this.original.indexOf('?');
if (index < 0) {
return this.original;
} else {
return this.original.substring(0, index);
}
}
}
}

View File

@@ -25,7 +25,6 @@ export class RouteService {
return this.route.queryParamMap.map((map) => map.getAll(paramName).indexOf(paramValue) > -1);
}
addQueryParameterValue(paramName: string, paramValue: string): Observable<Params> {
return this.route.queryParams.map((currentParams) => {
const newParam = {};