[ADF-2846] new facets (#3251)

* schema and configuration improvements

* check list search widget

* "Clear all" button to reset the list

* page size and "show more" for response facet fields

* test fixes

* fix tests

* fix pagination bug (skipCount reseting)

* integrate date range picker from #3248

* i18n support for date and number range

* some docs for search filter

* docs update

* docs update

* cleanup code as per review
This commit is contained in:
Denys Vuika
2018-05-01 14:49:03 +01:00
committed by Eugenio Romano
parent bb664a283b
commit dbe88a5efc
34 changed files with 1161 additions and 244 deletions

View File

@@ -0,0 +1,77 @@
/*!
* @license
* Copyright 2016 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
import { MatCheckboxChange } from '@angular/material';
import { SearchWidget } from '../../search-widget.interface';
import { SearchWidgetSettings } from '../../search-widget-settings.interface';
import { SearchQueryBuilderService } from '../../search-query-builder.service';
@Component({
selector: 'adf-search-check-list',
templateUrl: './search-check-list.component.html',
styleUrls: ['./search-check-list.component.scss'],
encapsulation: ViewEncapsulation.None,
host: { class: 'adf-search-check-list' }
})
export class SearchCheckListComponent implements SearchWidget, OnInit {
id: string;
settings?: SearchWidgetSettings;
context?: SearchQueryBuilderService;
options: { name: string, value: string, checked: boolean }[] = [];
operator: string = 'OR';
ngOnInit(): void {
if (this.settings) {
this.operator = this.settings.operator || 'OR';
if (this.settings.options && this.settings.options.length > 0) {
this.options = [...this.settings.options];
}
}
}
reset() {
this.options.forEach(opt => {
opt.checked = false;
});
if (this.id && this.context) {
this.context.queryFragments[this.id] = '';
this.context.update();
}
}
changeHandler(event: MatCheckboxChange, option: any) {
option.checked = event.checked;
this.flush();
}
flush() {
const checkedValues = this.options
.filter(option => option.checked)
.map(option => option.value);
const query = checkedValues.join(` ${this.operator} `);
if (this.id && this.context) {
this.context.queryFragments[this.id] = query;
this.context.update();
}
}
}