From dbe88a5efcc57088f9857c1de2db236cf86e52db Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Tue, 1 May 2018 14:49:03 +0100 Subject: [PATCH] [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 --- .vscode/settings.json | 1 + demo-shell/src/app.config.json | 158 ++++--- .../search/search-result.component.ts | 11 +- .../search-filter.component.md | 447 +++++++++++++++++- docs/docassets/images/search-check-list.png | Bin 0 -> 22160 bytes docs/docassets/images/search-date-range.png | Bin 0 -> 28992 bytes docs/docassets/images/search-facet-fields.png | Bin 0 -> 85344 bytes .../docassets/images/search-facet-queries.png | Bin 0 -> 43172 bytes docs/docassets/images/search-number-range.png | Bin 0 -> 11773 bytes docs/docassets/images/search-radio.png | Bin 0 -> 11956 bytes docs/docassets/images/search-slider.png | Bin 0 -> 8111 bytes docs/docassets/images/search-text.png | Bin 0 -> 7335 bytes .../components/document-list.component.ts | 3 - lib/content-services/i18n/en.json | 12 +- .../search-check-list.component.html | 12 + .../search-check-list.component.scss | 8 + .../search-check-list.component.spec.ts | 118 +++++ .../search-check-list.component.ts | 77 +++ .../search-date-range.component.html | 36 ++ .../search-date-range.component.scss | 8 + .../search-date-range.component.spec.ts | 98 ++++ .../search-date-range.component.ts | 92 ++++ .../search-filter.component.html | 11 +- .../search-filter.component.spec.ts | 21 +- .../search-filter/search-filter.component.ts | 25 +- .../search-filter/search-filter.service.ts | 6 +- .../search-number-range.component.html | 12 +- .../search/facet-field.interface.ts | 3 + .../search/response-facet-field.interface.ts | 7 +- .../search/search-configuration.interface.ts | 8 +- .../search-query-builder.service.spec.ts | 108 ++--- .../search/search-query-builder.service.ts | 27 +- lib/content-services/search/search.module.ts | 14 +- lib/core/app-config/schema.json | 82 ++-- 34 files changed, 1161 insertions(+), 244 deletions(-) create mode 100644 docs/docassets/images/search-check-list.png create mode 100644 docs/docassets/images/search-date-range.png create mode 100644 docs/docassets/images/search-facet-fields.png create mode 100644 docs/docassets/images/search-facet-queries.png create mode 100644 docs/docassets/images/search-number-range.png create mode 100644 docs/docassets/images/search-radio.png create mode 100644 docs/docassets/images/search-slider.png create mode 100644 docs/docassets/images/search-text.png create mode 100644 lib/content-services/search/components/search-check-list/search-check-list.component.html create mode 100644 lib/content-services/search/components/search-check-list/search-check-list.component.scss create mode 100644 lib/content-services/search/components/search-check-list/search-check-list.component.spec.ts create mode 100644 lib/content-services/search/components/search-check-list/search-check-list.component.ts create mode 100644 lib/content-services/search/components/search-date-range/search-date-range.component.html create mode 100644 lib/content-services/search/components/search-date-range/search-date-range.component.scss create mode 100644 lib/content-services/search/components/search-date-range/search-date-range.component.spec.ts create mode 100644 lib/content-services/search/components/search-date-range/search-date-range.component.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index d1d4ace8ba..aed227378d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -20,6 +20,7 @@ "MD031" : false }, "cSpell.words": [ + "mincount", "webscript" ] } diff --git a/demo-shell/src/app.config.json b/demo-shell/src/app.config.json index 21d4f81841..2d3ea63b49 100644 --- a/demo-shell/src/app.config.json +++ b/demo-shell/src/app.config.json @@ -54,19 +54,17 @@ ], "search": { "include": ["path", "allowableOperations"], - "fields": [], "filterQueries": [ { "query": "TYPE:'cm:folder' OR TYPE:'cm:content'" }, { "query": "NOT cm:creator:System" } ], - "facetFields": { - "facets": [ - { "field": "content.mimetype", "mincount": 1, "label": "Type" }, - { "field": "content.size", "mincount": 1, "label": "Size" }, - { "field": "creator", "mincount": 1, "label": "Creator" }, - { "field": "modifier", "mincount": 1, "label": "Modifier" } - ] - }, + "facetFields": [ + { "field": "content.mimetype", "mincount": 1, "label": "Type" }, + { "field": "content.size", "mincount": 1, "label": "Size" }, + { "field": "creator", "mincount": 1, "label": "Creator" }, + { "field": "modifier", "mincount": 1, "label": "Modifier" }, + { "field": "created", "mincount": 1, "label": "Created" } + ], "facetQueries": [ { "query": "created:2018", "label": "Created This Year" }, { "query": "content.mimetype", "label": "Type" }, @@ -77,67 +75,91 @@ { "query": "content.size:[16777216 TO 134217728]", "label": "Size: xtra large" }, { "query": "content.size:[134217728 TO MAX]", "label": "Size: XX large" } ], - "query": { - "categories": [ - { - "id": "queryName", - "name": "Name", - "enabled": true, - "expanded": true, - "component": { - "selector": "text", - "settings": { - "pattern": "cm:name:'(.*?)'", - "field": "cm:name", - "placeholder": "Enter the name" - } - } - }, - { - "id": "contentSize", - "name": "Content Size", - "enabled": true, - "component": { - "selector": "slider", - "settings": { - "field": "cm:content.size", - "min": 0, - "max": 18, - "step": 1, - "thumbLabel": true - } - } - }, - { - "id": "contentSizeRange", - "name": "Content Size (range)", - "enabled": true, - "component": { - "selector": "number-range", - "settings": { - "field": "cm:content.size" - } - } - }, - { - "id": "queryType", - "name": "Type", - "enabled": true, - "component": { - "selector": "radio", - "settings": { - "field": null, - "options": [ - { "name": "None", "value": "", "default": true }, - { "name": "All", "value": "TYPE:'cm:folder' OR TYPE:'cm:content'" }, - { "name": "Folder", "value": "TYPE:'cm:folder'" }, - { "name": "Document", "value": "TYPE:'cm:content'" } - ] - } + "categories": [ + { + "id": "queryName", + "name": "Name", + "enabled": true, + "expanded": true, + "component": { + "selector": "text", + "settings": { + "pattern": "cm:name:'(.*?)'", + "field": "cm:name", + "placeholder": "Enter the name" } } - ] - } + }, + { + "id": "checkList", + "name": "Check List", + "enabled": true, + "component": { + "selector": "check-list", + "settings": { + "operator": "OR", + "options": [ + { "name": "Folder", "value": "TYPE:'cm:folder'" }, + { "name": "Document", "value": "TYPE:'cm:content'" } + ] + } + } + }, + { + "id": "contentSize", + "name": "Content Size", + "enabled": true, + "component": { + "selector": "slider", + "settings": { + "field": "cm:content.size", + "min": 0, + "max": 18, + "step": 1, + "thumbLabel": true + } + } + }, + { + "id": "contentSizeRange", + "name": "Content Size (range)", + "enabled": true, + "component": { + "selector": "number-range", + "settings": { + "field": "cm:content.size" + } + } + }, + { + "id": "createdDateRange", + "name": "Created Date (range)", + "enabled": true, + "component": { + "selector": "date-range", + "settings": { + "field": "cm:created" + } + } + }, + { + "id": "queryType", + "name": "Type", + "enabled": true, + "component": { + "selector": "radio", + "settings": { + "field": null, + "options": [ + { "name": "None", "value": "", "default": true }, + { "name": "All", "value": "TYPE:'cm:folder' OR TYPE:'cm:content'" }, + { "name": "Folder", "value": "TYPE:'cm:folder'" }, + { "name": "Document", "value": "TYPE:'cm:content'" } + ] + } + } + } + ] }, "pagination": { "size": 25, diff --git a/demo-shell/src/app/components/search/search-result.component.ts b/demo-shell/src/app/components/search/search-result.component.ts index b44da7d1b6..b66a49baec 100644 --- a/demo-shell/src/app/components/search/search-result.component.ts +++ b/demo-shell/src/app/components/search/search-result.component.ts @@ -34,17 +34,14 @@ export class SearchResultComponent implements OnInit { queryParamName = 'q'; searchedWord = ''; resultNodePageList: NodePaging; - maxItems: number; - skipCount = 0; pagination: Pagination; constructor(public router: Router, private preferences: UserPreferencesService, private queryBuilder: SearchQueryBuilderService, @Optional() private route: ActivatedRoute) { - this.maxItems = this.preferences.paginationSize; queryBuilder.paging = { - maxItems: this.maxItems, + maxItems: this.preferences.paginationSize, skipCount: 0 }; } @@ -57,18 +54,14 @@ export class SearchResultComponent implements OnInit { this.queryBuilder.update(); }); } - this.maxItems = this.preferences.paginationSize; } onSearchResultLoaded(nodePaging: NodePaging) { this.resultNodePageList = nodePaging; - this.pagination = nodePaging.list.pagination; + this.pagination = {...nodePaging.list.pagination }; } onRefreshPagination(pagination: Pagination) { - this.maxItems = pagination.maxItems; - this.skipCount = pagination.skipCount; - this.queryBuilder.paging = { maxItems: pagination.maxItems, skipCount: pagination.skipCount diff --git a/docs/content-services/search-filter.component.md b/docs/content-services/search-filter.component.md index 7e8dcda7ab..427f7112be 100644 --- a/docs/content-services/search-filter.component.md +++ b/docs/content-services/search-filter.component.md @@ -28,22 +28,16 @@ Below is an example configuration: ```json { "search": { - "limits": { - "permissionEvaluationTime": null, - "permissionEvaluationCount": null - }, "filterQueries": [ { "query": "TYPE:'cm:folder' OR TYPE:'cm:content'" }, { "query": "NOT cm:creator:System" } ], - "facetFields": { - "facets": [ + "facetFields": [ { "field": "content.mimetype", "mincount": 1, "label": "Type" }, { "field": "content.size", "mincount": 1, "label": "Size" }, { "field": "creator", "mincount": 1, "label": "Creator" }, { "field": "modifier", "mincount": 1, "label": "Modifier" } - ] - }, + ], "facetQueries": [ { "query": "created:2018", "label": "Created This Year" }, { "query": "content.mimetype", "label": "Type" }, @@ -54,34 +48,61 @@ Below is an example configuration: { "query": "content.size:[16777216 TO 134217728]", "label": "Size: xtra large" }, { "query": "content.size:[134217728 TO MAX]", "label": "Size: XX large" } ], - "query": { - "categories": [ - { - "id": "queryName", - "name": "Name", - "enabled": true, - "expanded": true, - "component": { - "selector": "adf-search-text", - "settings": { - "pattern": "cm:name:'(.*?)'", - "field": "cm:name", - "placeholder": "Enter the name" - } + "categories": [ + { + "id": "queryName", + "name": "Name", + "enabled": true, + "expanded": true, + "component": { + "selector": "adf-search-text", + "settings": { + "pattern": "cm:name:'(.*?)'", + "field": "cm:name", + "placeholder": "Enter the name" } } - ] - } + } + ] } } ``` +Please refer to the [schema.json](https://github.com/Alfresco/alfresco-ng2-components/blob/master/lib/core/app-config/schema.json) to get more details on available settings, values and formats. + +### Extra fields and filter queries + +You can explicitly define the `include` section for the query from within the application configuration file. + +```json +{ + "search": { + "include": ["path", "allowableOperations"] + } +} +``` + +In addition, it is also possible to provide a set of queries that are always executed alongside user-defined settings: + +```json +{ + "search": { + "filterQueries": [ + { "query": "TYPE:'cm:folder' OR TYPE:'cm:content'" }, + { "query": "NOT cm:creator:System" } + ] + } +} +``` + +Note that the entries of the `filterQueries` array are joined using the `AND` operator. + ### Categories The Search Settings component and Query Builder require a `categories` section provided within the configuration. -Categories are needed to build widgets so that users can modify the search query at runtime. Every Category can be represented by a single Angular component, which can be either a simple one or a -composite one. +Categories are needed to build widgets so that users can modify the search query at runtime. +Every Category can be represented by a single Angular component, which can be either a simple one or a composite one. ```ts export interface SearchCategory { @@ -115,6 +136,380 @@ export interface SearchWidgetSettings { } ``` +### Facet Fields + +```json +{ + "search": { + "facetFields": [ + { "field": "content.mimetype", "mincount": 1, "label": "Type" }, + { "field": "content.size", "mincount": 1, "label": "Size" }, + { "field": "creator", "mincount": 1, "label": "Creator" }, + { "field": "modifier", "mincount": 1, "label": "Modifier" }, + { "field": "created", "mincount": 1, "label": "Created" } + ] + } +} +``` + +Every field declared within the `facetFields` group is presented by a separate collapsible category at runtime. + +By default, users see only top 5 entries. +If there are more than 5 entries, the "Show more" button is displayed to allow displaying next block of results. + +![Facet Fields](../docassets/images/search-facet-fields.png) + +### Facet Queries + +```json +{ + "search": { + "facetQueries": [ + { "query": "created:2018", "label": "Created This Year" }, + { "query": "content.mimetype", "label": "Type" }, + { "query": "content.size:[0 TO 10240]", "label": "Size: xtra small"}, + { "query": "content.size:[10240 TO 102400]", "label": "Size: small"}, + { "query": "content.size:[102400 TO 1048576]", "label": "Size: medium" }, + { "query": "content.size:[1048576 TO 16777216]", "label": "Size: large" }, + { "query": "content.size:[16777216 TO 134217728]", "label": "Size: xtra large" }, + { "query": "content.size:[134217728 TO MAX]", "label": "Size: XX large" } + ] + } +} +``` + +The queries declared in the `facetQueries` are collected into a single collapsible category. + +![Facet Queries](../docassets/images/search-facet-queries.png) + +## Widgets + +You can use external application configuration to define a set of Angular components (aka Search Filter Widgets) +that provide extra features and/or behaviour for the Search Filter component. + +The Search Filter supports the following widgets out of the box: + +- Check List (`check-list`) +- Date Range (`date-range`) +- Number Range (`number-range`) +- Radio List (`radio`) +- Slider (`slider`) +- Text (`text`) + +At runtime, ADF uses `selector` attribute values to map and create corresponding Angular element. + +### Check List Widget + +Provides you with a list of check-boxes, each backed by a particular query fragment. +You can choose a `label` (or i18n resources key) and a `value`, alongside the conditional `operator` (either `AND` or `OR`). + +```json +{ + "search": { + "categories": [ + { + "id": "checkList", + "name": "Check List", + "enabled": true, + "component": { + "selector": "check-list", + "settings": { + "operator": "OR", + "options": [ + { "name": "Folder", "value": "TYPE:'cm:folder'" }, + { "name": "Document", "value": "TYPE:'cm:content'" } + ] + } + } + } + ] + } +} +``` + +![Check List Widget](../docassets/images/search-check-list.png) + +If user checks both boxes, the underlying query will get the following fragment: + +```text +... (TYPE:'cm:folder' OR TYPE:'cm:content') ... +``` + +### Date Range Widget + +Provides ability to select a range between two Dates based on the particular `field`. + +```json +{ + "search": { + "categories": [ + { + "id": "createdDateRange", + "name": "Created Date (range)", + "enabled": true, + "component": { + "selector": "date-range", + "settings": { + "field": "cm:created" + } + } + } + ] + } +} +``` + +![Date Range Widget](../docassets/images/search-date-range.png) + +### Number Range Widget + +Provides ability to select a range between two Numbers based on the particular `field`. + +```json +{ + "search": { + "categories": [ + { + "id": "contentSizeRange", + "name": "Content Size (range)", + "enabled": true, + "component": { + "selector": "number-range", + "settings": { + "field": "cm:content.size" + } + } + } + ] + } +} +``` + +![Number Range Widget](../docassets/images/search-number-range.png) + +### Radio List Widget + +Provides you with a list of radio-boxes, each backed by a particular query fragment. +The behaviour is very similar to those of the `check-list` except `radio` allows selecting only one item. + +```json +{ + "search": { + "categories": [ + { + "id": "queryType", + "name": "Type", + "enabled": true, + "component": { + "selector": "radio", + "settings": { + "field": null, + "options": [ + { "name": "None", "value": "", "default": true }, + { "name": "All", "value": "TYPE:'cm:folder' OR TYPE:'cm:content'" }, + { "name": "Folder", "value": "TYPE:'cm:folder'" }, + { "name": "Document", "value": "TYPE:'cm:content'" } + ] + } + } + } + ] + } +} +``` + +![Radio Widget](../docassets/images/search-radio.png) + +### Slider Widget + +Provides ability to select a numeric range based on `min` and `max` values in the form of horizontal slider. + +```json +{ + "search": { + "categories": [ + { + "id": "contentSize", + "name": "Content Size", + "enabled": true, + "component": { + "selector": "slider", + "settings": { + "field": "cm:content.size", + "min": 0, + "max": 18, + "step": 1, + "thumbLabel": true + } + } + } + ] + } +} +``` + +![Slider Widget](../docassets/images/search-slider.png) + +### Text Widget + +```json +{ + "search": { + "categories": [ + { + "id": "queryName", + "name": "Name", + "enabled": true, + "expanded": true, + "component": { + "selector": "text", + "settings": { + "pattern": "cm:name:'(.*?)'", + "field": "cm:name", + "placeholder": "Enter the name" + } + } + } + ] + } +} +``` + +![Text Widget](../docassets/images/search-text.png) + +## Custom Widgets + +### Implementing custom widget + +It is possible to create custom Angular components that display and/or modify resulting search query. + +You start creating a Search Filter widget by generating a blank Angular component that implements `SearchWidget` interface: + +```ts +export interface SearchWidget { + id: string; + settings?: SearchWidgetSettings; + context?: SearchQueryBuilderService; +} +``` + +Every widget implementation must have an `id`, and may also support external `settings`. +At runtime, every time a new instance of the widget is created, it also receives a reference to the `SearchQueryBuilderService` +so that you component can access query related information, events and methods. + +```ts +@Component({...}) +export class MyComponent implements SearchWidget, OnInit { + + id: string; + settings: SearchWidgetSettings; + context: SearchQueryBuilderService; + + key1: string; + key2: string; +} +``` + +### Reading external settings + +At runtime, ADF provides every Search Filter widget with the `settings` instance, based on the JSON data +that administrator has provided for your widget in the external configuration file. + +It is your responsibility to parse the `settings` property values, convert types or setup defaults. +ADF does not provide any validation of the objects, it only reads from the configuration and passes data to your component instance. + +```ts +@Component({...}) +export class MyComponent implements SearchWidget, OnInit { + + id: string; + settings: SearchWidgetSettings; + context: SearchQueryBuilderService; + + key1: string; + key2: string; + + ngOnInit() { + if (this.settings) { + this.key1 = this.settings['key1']; + this.key2 = this.settings['key2']; + } + } +} +``` + +### Updating final query + +The `SearchQueryBuilderService` keeps track on all query fragments populated by widgets +and composes them together alongside other settings when performing a final query. + +Every query fragment is stored/retrieved using widget `id`. +It is your responsibility to format the query correctly. + +Once your value is ready, update the context and run `update` method to let other components know the query has been changed: + +```ts +@Component({...}) +export class MyComponent implements SearchWidget, OnInit { + + ... + + onUIChanged() { + this.context.queryFragments[this.id] = `some query`; + this.context.update(); + } + +} +``` + +When executed, your fragment will be injected into the resulting query based on the category order in the application configuration file. + +```text +... AND (widget1) AND (some query) AND (widget2) AND ... +``` + +### Registering custom widget + +You can register your own Widgets by utilizing the `SearchFilterService` service: + +```ts +import { MyComponent } from './my-component.ts' + +@Component({...}) +export class MyAppOrComponent { + + constructor(searchFilterService: SearchFilterService) { + searchFilterService.widgets['my-widget'] = MyComponent; + } + +} +``` + +That allows you to declare your widget in the external configuration +and pass custom attributes in case your component supports them: + +```json +{ + "search": { + "categories": [ + { + "id": "someUniqueId", + "name": "String or i18n key", + "enabled": true, + "component": { + "selector": "my-widget", + "settings": { + "key1": "value1", + "key2": "value2", + "keyN": "valueN" + } + } + } + ] + } +} +``` + ## See also - [Search Query Builder service](search-query-builder.service.md) diff --git a/docs/docassets/images/search-check-list.png b/docs/docassets/images/search-check-list.png new file mode 100644 index 0000000000000000000000000000000000000000..64bbcdfc2a511fca80fa93895246383009945bea GIT binary patch literal 22160 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 E06g{GP5=M^ literal 0 HcmV?d00001 diff --git a/docs/docassets/images/search-date-range.png b/docs/docassets/images/search-date-range.png new file mode 100644 index 0000000000000000000000000000000000000000..691ffd6cdf6f11f32d75816ed80b6f75e591059f GIT binary patch literal 28992 zcmeEtbyQr-^CuyYKn#aKu;A|Q!GrrC10=XJID<=o;1FPNcXxLPZoyrG2A$wC$WGpS zyzlRv{eREy*)QkJouO`*bX9fr?N9d&R#K39{es{H0s_M8kJ92Q2ndKk1cWDhD9_-O zanmRX1cX;q=3-(>AH~E-mF#Uz%&m+O5Tt|S;-71(4&eIiKqx3EYD8#ML~XOq=vpPw zqv+;PK9XjBk3tte=+8p5{Ltfvql;5niX0^&aqzlxg(M_{W#&{TuruoN9AVn5PC7QA=t&ggFizi>XDrl|ly}K`*q;lb5ekD(?^L*&*W%g`h+i zPlWwOi=--;g`Uko8X7}|^7%txt<(lmV+l`>W-NUg2Ky$-$j(PU!=OY)$QWfcZL~=* z4DEVpc&9SZlMDOz1}2VORw>x;i*!F-6p0L*VRw*~9`5g_Y0j)wj>_`X0BUHZ!TAEb!Nzog0Sc@Q` zAbs#b&8f)s!zX=;qV2Zlwk9m0i1O(vtMqe$Puw~9#L+ZRj4n$C8U%0A^(O=U4G3Un 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
1+dJOg!}97B8@=%qY!YG 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 Kr;by#eDOa~F8T8S literal 0 HcmV?d00001 diff --git a/docs/docassets/images/search-facet-fields.png b/docs/docassets/images/search-facet-fields.png new file mode 100644 index 0000000000000000000000000000000000000000..c4216e31ab7c87c2595a2d207727862e9071040c GIT binary patch literal 85344 zcmeFXWl&wg5-th^f`#B7+#P~@f)m``-QC>-1b26LcL?t8?(XhzH?ec7UcLAK-8$4} z%d9oMW_nt`?m$U#K^Q0uC?Fsp7-1nkX&@jFRUjbH6^QqMkx$hRNdu8C53r; zaV4!S^o>mQfPjPoW8%OSW%^M(cVh_&39G-5O7mD`UXiy5z=e~~K?vh!bcMt59ra~` zn0)Q_Mpi?vC;%eNRh5L_{wv0Sw}yyY>OXG?Z@(2MY^0{ln@j*{KDu3MuoEZmavr zYgy*VwlE72?s&LN1A;iy76H&&>8A)5R3IMMsicu1uPD$Z>S6PUx zTQqh0l>ORiaPVD%iQUZ?xuK7rOb8cVufpItZToIDGKB~$wG)YnT;mf8!Jv|S-4Ocv z=UkpvT+xsp-o?Q8xt;Qf)v_6&Axy_fPVFa%r4LIM#p^zq3nF% zyvEHh0ipShP6(VslQ|n5JA(8SzQcr)6v%^T1GvAh9>|FXcI)eN9DK=!G5Ew*i_-;s zLOQfH69l-@S(_}^Hq}e=1gKMqNK=>lA)G{NCP$tBpqIYZ!94&Q*_! z4P544&bo0@-)pJ5dIYKF%hVy$LB+$qzGC||<1U~tK@-FaJMLfQrjGvLpPN@6*7<_6SA2rJB8Z9FH zv5v9UsL2-}kyQrS{aqyl(c)V7trLOHNWBKGEZCTqd_wJjzj(Zg89bm+KOzHtve*{t zc7np9Zh`{>%kN<3M@8#s8HCc`f>8BBJ$u)#$?+Y;3Kvq;$8M+7j{H4+`=@d^Bp>N= zkYZrWpD5*6NADkh;z@#Iw3AtWRDEBvhT;e``;EjA%(>lVEDRR{G6T<+50#E*2wtTN z-b&ClT$2za@M~l^5+N2mzO?SgN(eIkfe4sBrfiIRELQ(y9%_8EKF%%3iI8S~t}L`~ z{ESlXra-WQ8?#;vSug^``6tIeRRdA+#AO_gk=xQJ2dDDTWYvw?Um-690E?pQX!gWo z?Sz79ODTSi^$)CYQiPQElGA#ucz>5|p?RzbdjmC1ecuFMZ5}W!l6BH`N>>Lq$kRYRd>=z$Tc1;P z1Ues5MpyX!Z&B*$Serq=c3Fh5Dt) z_{fxm^JVj8GpYsmeJAX4cE3IAGFGzAM}6Yoi8P3ai*g9Z?3?XN*>VqJ>yF$I3(V4$ zM3J76x{(=?#+F_oqo7D4bs?3IMIoh;RL^sjy!XC9+?J4qDTHARXY(V^q0TzVWRg0S zS{*lJfKJ4rN{AIv5h%({$>q#-lg%jlA*EGdDYsK3TR2sys^C=eO`cKVS|KG@IbAu! zS@Am2I1EE+n1@O-q=ZSLMEW>>0jq|~uCdX_Ioi3_IpG2OI{1KwK?nl{qa8yv1V7{$ zBae}74{bRbTWEI-b=+ZWbb_5RFflffa`?lr^srkZRbq=WhVqCqr1HITjB;%kjF93g%Q>G8mb65vVkPKw|^LevQ4znJZ9_SvbuImmp#!u;K86X(p(2JQ_ z%*J&3Xs_spXjRP|JIWWon{Vk5(kh$TPV5oM1n-XyX_xAxYTaNQVg{g#gw&zeq1`4a zCUzwuC4QoH()~tf$1Fy#X0~9uV4|P;ux! zYtBqxhg270?y$tToV7f-MB@m@0m8B4!r<(BVS7Dv&9QYK7nh=tJBwY0x=Go4-gAsL zyKc5Ie6zB%eA0O(d_I3Ld17)jcvEuWc3^POd%d`SyR^E%-RV*GdIWkTUW$>B46=l83OsuE23b z3KIKnmad^dRveMA6znFF8#mQ2OBeOv=kn(hcRQfdzGRTokT?iF2!n`=Bq1pb4inpi zEregC-9D4C;yD>uuWqgNn-DvQTO~+yY~RQZ7Tn9wh)*WPG9KUAPVXP>2gpE>1(LZ) zzn_yjBDdEdr?As8rXdNhioFav>{S~+-f_Ada2lO#o*bA|&vwZx`*ynXctLT;>HVes zeS6Z6@*h;_IG?jVJLrAXC(_62lOGW8=OUhh(}x-zqD_wA&Jxq5AV;a$b=)cL-$xDz zcK8O@FDvX;O8nHNtNYo*^Y)Omk!-|<9IWvWk=a@~xZy;e7WXF77U z!`fqmGUD`k*5jnssjqp;Y4}oX7j^hl6|Pb9mS>=2$WHgR*A!$uA8xEv}I zrISY2OQ;Q~^`J!xH-!^w1sWRCQ${F&)8 zW|cPW=b!Ii{8eIrW5AgXEL0oMJBd$n50jpmPFJio=$N-FaU=fsy% z>sm|%J3=qp8eZjFWGoE!M`)USn-&~;kGN!x<<(jQJw`7uss)rMTO0;fX579$9^5V- zuiATBrC;H)kaFH#+(xfj;6QOtxz0VGy%6jOGGXW7P!;eS8%*EKoF6V6Mjb4MhH%d; ztxa2Ah0%E&88es{bClY--a`%qW+M8KK#Si1?3J^4PTGNC>dMpFRrVzFs3^yzHPh3P zpAFuwc-k$u$A$N;Ur%rM_9ED(6qbldZ#)7oV@UgO6k)R3hVtp;* ztXo-HBfRbAlGx1fU>&|i&2ng)+wDj+`>{iVgT~TeeHv7l{O%E0NO z^2x(n-lQW@)*!Ee$h*u9^&sVgu%35dKzu(fqKC^9cyl|Nju1IUVAI9L3Cx5Djl@Ht zG-MsM@mxQBay0+~DggGR*=TQn5%clUu>Yxf3Op8_#ez7%Xa9cL7(c5hH@H3Q!UF8d z;wW+`>H?5BKw1hZ*#H5d5WW2a3riE80RaK08p$f!DvF7+=~$RiYw22O>rp$JSpx0` z0^)FF1AH~pv(>_NG&41~VRPif|8)l&;QQM!4L7)f8K`OT zxu9@yaXGAY_1UEP1pZ71{Nltnw6(QlqoHwdaG-Xer?#**prK=BWu>A0O!N6O72pmk z8z*yHEk`PI8-m|N{?g&ov(d3Ova~g_FvoqPtEFvWXUmC?|MsANf4|qM=VGSf4+0X&0?iI#!m*Zu#GEB|@of6Y|- z&rG_{3{3w$^}jCtnaV-)wuArL(QkJB8U^r+3yOp0AMd%K$bksq0mt#lh)+Tm@CovE zHh>Qcz#HlB&$sVcB+i(elR!XUfQ0$J$~pocwZO>A&8FPG@`iYgJaBhEz0%W-3=!Cu zea<3w3KCNQnGTHPnEWD&IM)0<7hZHi+f;C>I%uamE);6S_zU8@M0Bae z_rs#^>{Fo!Dx(>lbyZC-F)+;{)ip4wvkCmK)_4Cbv5{Pl$A)31;P{P z&r8(-gol)sbz*s0jCs|y3ZuQ-rOuHiZf_mI8#;5KfEDf|2rkgC7wrUuC7nL9s!q?3 zahF;?8q~5nICC;_PE}P|D?FmtK5q&*h;TSn`EWQ*dHi~CU^t*(uX-s+h;hP48c@{J z?G4@_dvB4Exbn3PoBH~-L>8+|;sIR}+9ewsO znP}2mkWL76$$f23qbRTIok8;LdIlrZqAZ>ke^v-srw}oSd_=b!qSi(dbZK=pgBeRi znJmCZb${b$4YMEak{t354yIZe?DpvTRND4(*tTPT)u6sGyw*}*>&}j3Bajt6!y^Y{JALO6R&m_#GK@Z=qAEAX1@~T>ywGhMfRJj#qK2Ue z*RLTg@_fhZ7M{D4HOEx-`O6wdPtWC^Jjl`Yjb_Kw*gF(XRaYUYBZf41y-gV^`u}Dj z1U{|>G@d_VHwU%4*!Un(;U}vJ4hceNYWEOqYOjy0e`Ej%M4d=;wzHc*7EXCXR$H%0YmttZJ*|Qh!&D z4~k0S3;S0VJ>wu0!Q#-wMI9$N0!X@0UUynlEf0&4baFQv z1jAB5wRbaf^TWpZzi<0@HwWKOHltK%>XpfEZdJoT94|s+*f=;qaxnf*@KK z^WOynLHw`qjB}~;o%@y_Fi2kCHO{rSjeGk`)l3K#pIQOSmf^A;(V{d9v(ZRN-aIxFO2D~a=0 zz`Yb9`vB){8CZqn6c&58UW;(D?!6XNLl*w=KLilgqIR4B2ecrFqT1Z*iYWU6uPxFP z>JWnu8rK8&Ukn!o@*eCA2`l_3GWEQG5v&nXu)oB9c7o#8b1dEEv;F0fCp%zdY5j-v zf6ncHWd2z6{~LKj_|EI)#eF!Wy1H7|QZNt}PW4-P2kBpF_(BOqc0f$+8Q84BrS;8NfbY#I-RHJumHY z33hjP6O`sbdk;*m~6m!wOzCu@pL*2E()rgc{LloEuOKRXQ1G}`h>ncpX?wXY;}5^#jO0TFjVmz9 zTKz=cpRrxywFgO%EriY(^3nE0D--6g%AUOkCaECeL(coDKoOKm^Oe7Ab*~5&ubwZs z=WcnW+%NQ2HEU|>?4_WzmSAeiS-y(F*%^;Bfw{lO*z*CTZi09FcCv)20s`bWBfKI6 za1-Ycw8>{|nelNTO0`UDf`>=PlP_i&f*s6^a^o(!nSab^LH$u+a}JR6pnS*4RZ>0x z<12C+Npa{qkfjc7l9B`_gb8LV&2*ljq8g6a~!iy}% zJDg^E_C|tV8(#G|;BZfNb(qhMPbL^eO5C}6I&`r0k-l z^rh>;Y%tmG4AQ|N7eCDPqLIw8#5IOkstOMgk)LdM?*-qpYQ{~cSanNApz{0OjC0DU zQ_`FZJ=k&6)%tvt@V~JZC@_0F(kbZOdO6-x!^-O0B0=aNOP8Sw4427Drf4`Oh00JR zLifHZTq2srU*wayl|PDIY^hYqm0d|&5y@KfILja7{p|d-$B@Dr{A}A`DxXjlRo(piF zF2AveDon%7ELa6Yof+E&_ha(Kv@Ssx_C$tpq$92Y&{;&S25EuOTsh3$Nxm7(nfYcP z2HnDd^&UWAPuC{3ehkP(+o9a0+Kqd5n%p(&GfkOhh)zuhEeR3nWI6v<> zM<1Y6)1&^-HsAr!POx(kRqR*TH7hfxGV1-XHQ7457C8<@#{nOmMiW60DqRGdrSv?D@S5Bk^Ud=~)n zrohNx+0a2%pzVTgrcqZIDX24wGCzsH?d<(-P#hv;w|@Cid*OZDIaY zcYDZzDW04MOLEbmk~3+J_sAPuDrsPbSW|&rlXSAgciLiIr}atUpP7<^{9?(^kK_X4 zqO}>l3Mb~8e+qPkkx@(g z0`;_P6n+?x`HQK(T5x9!HTTwdZvw*RL42`<2}vV!!1oqe!Pg$R5WBh?wve1}^q4$Ktn&^J{tSu= z8$x>W;6CC!-kPBo%Pg@Ce5}$Y%+HuniEjp-q1Qw6&j39I+HVT)C@Bbc#x*EquNom{Qa{=yQE8fOJTY7G!C`Jb~2iCUgh;s1aU@?&3D`T8C01?ym)tuK~Q{W5@w zdpm<3MPahiyMF-%{(0F#1|CspL+5xIVf{iWgyYBP?n3h+@W7`uaj!2pb`HtuB}L3e zg7D{#kHSwJ@Bca)AYc-}v5D&)`hwYyGLe0!j`$if;PTss_qNy^>15}J%M`%fI+14B^zbcdI1 z>DZnuOo-C#dQj^p9jl;L-pl4yUyZv&d}t@SSwG;Yjhl%nnPDP{flg`5^dAUn!*Cl6 zXuU0{u&0+Ze=bN?YZ^&Z7rI47mTGS zzi;`^RD^#3TrRbt0Bs73q@^Kc!V=Av?x3d)_nQ4C_nzp+PVvVZgfRK`vMf@1s|DXiNSRl|igCuO^ ze>sR{FknO_Tk7Lqo$)jPJjbbaU&`u#Wd6sSKT`2Ox%t0M8OTf@R#w!VFNc};JN%$+ z?=STHi1?Y^2C3@Cd?69{Qe93mtTuc2M?I1L8Td{>oMSR4nFwQ5Atxil`~3X8^Zn2@ zE;d$RdwUyBZMFeRlH-@Wc)r;kGUL<6Mm9E^ogeszy!1&aDPn+xjhEhg=^s71w|E3y z&K0t#urRXJL1fAkmPTG)K1k(1;1nq!h|7UE8;GG0i)A*Q(`OIx!Md#5F>-yoBo8xT!d@BYp)ip6-k(a!t#@V0W^E5HW;=k)A~?LrBzZrR#*#DE zxyxM@LLR(3VQ?KjM{TPiAeQwm#f6l<)>J44$m^yAx*&fCDMwMM%D!~;{?=CYMX@xhs!x`B-G3hAwv(Kw=%1aS(oy_mdDP1LJtaNABQ2pM- zxi56nJ&}`(zs;c$Zd(vRwf!V(YtW-Z*ZWaf@pDQK;vwYuV?oY!F>5Mheaoq7Uh>r* z*Y_V4clZ+H!zBQ{W%qy*2mQ_71% zFPeMvTY;$yvjSl|zPCIzr|!N%Gc6^H>zSq5SM~?jIC;4!o2IA<9GFJRVoN24L<)7DB;&m=Wi0_snTwH4&}RtC;oMYQt|0b-^LaLuid9>7{?h3P-VK# zrzDO|3^+B@=sq7PDD1@)qgUTAq*aHXVjpGuC1hPG-YczGPf6S(>YNfyhrFGIW*7XM zs$~CB6~X3oZDjO^CCr&g!rSltG-M5-<2yF|Yn=MIaaF2)v}%GEdhtP?=)?>3 zHYbxTqDoQ{kMoim%{UDKM_|O?Po}}foyf1ZO*oUYswnohFoUtc96WltWll0rjrdhw zb>NQf>F)KpOS^}aJN-FO{rovLuMzhF=1TzO&7>U{d|M+tC?)sUKt|utGe9=vu{_sG z&GmT3kQ=3#2mmG+-VKs^xGsc+kZ*qQT?rE7?zkhfP#Gw-g`&0wSR z1D+ieHW5v|dZef(mfqQ=lE<$ZYx53Bbtf|@1al8wcwm309#>vfEreFjG3*##;q?Vr z!bFEugeT=-l@+P0dwSy4ralaDQex$@~r~bepQB8N#MG-==4=V z?iGi?YVqhsrIK#_s}lz^zyy8P*F!tQwzaMe#N_&BhPf$VJHpHDscACn$>4Tgy8Wdk ztwm4bOmbx_IsEhUxNH(C(5JbHBN8R^*N+Jl_LHR(eVyIT+WR~PLtVQoH*5pKAs+SO z8e$m4(I49FE;khBEpOtoBdOxtEUNm?!wkJP5@Hnk2DDcx4=C*|0Um4({g;zc{-yT>*Equv67$yBVUPzY;>S} zV3=6V=+9x%M~?6F;$v#JJjp>}l~Mg{`3~{hPKf5B2~J+-!59>0>IiwPt`|F-3p!(4 zyDx%7zQ_Cgh6`YF3s(u)iUqjiK15Na#u)eNqmLpI$>Y$dwE?l_)B7E8e1VYEyyfQz zN2z&r5zWYfYOKn@cYtEj8rd(YQ28SjeLVQ` ztNImGc=jksB<#VcHAT!(GmKSTayyv z$#IZmboAw`wC3+o==yvk2~`_Xz)TMI*@MkzC*J_b$_~9No7&fYMi0YBxK!%Mwa+#? z1?K?l{|x`lGM1G7v5dNS@WXZerWV=L$guO+!5gIY@#E@DX%wScTydnU58iQLaVb9$ zTU({>_?4%PxOe->jrp+iEC5?`W)=UCpnTkw)U!8EPi!QJ33V8^)6>uMWe3@;qu!9> zq|MYP+er){44JR_tx3}0VfLR75(m1V7wZ|AtF4SUyhU#4QeB&mZc0QIXP=UG-k$<5 zEsk%oybd;=7pyl~b@LmwA4!=KOvzKxs#>=6Gc7*Hq8MoF#{WbHc*WjdUeWT8S0o4q zJq*u0i)pbT<6NG@koFy1-5@eY7RL|aSRxwTjT~eKg%~8d_UA(ocQcKJZp4`jJs<*kVmQjz8QM*_j37)o-LnhZhjc#{U>fe6saa z>DHji8nSF>uxTT!Xq2q|8}$KTvL*Lyuof8|dNe9NHIL&_!3FNOT%7sBIfOF9-zxkTt(Dk zj7)WQN8)IMo6z8JD5`LQ5GN{RiZf@f1=W7}DO}Csw^$Lm%gPE_3Z|kw=X(ihKacn^ zxK~hJh+E}3fg+{k?(C+sIU~0x;D|Xb6)o+35Iu5$4~r?F4?^ONL5PLF z8H9r;p6m~zbInZL-uVUh0F|i$w!k#|Kk0q!()N%c?CHtuzH{>EDbIs$$ z?2b#b7&SBgm|~jA5$zho9_<=`F=cu0+=Z<^9_>&0FDs>K zuy>R?*Xb}tnxl(HbBSaAY3ocsv{akaaZ=q4)6fF;DLFGDP{e%iJ1?-gZ)X`6b58`6 zb!61A_3K7sDeI4z0~m|f0d=XLn7@MHsy{(6{01RP22%g6BWN5)8pR-UBHObmvr|Bb zLJ6iUS961xyZ|eP;M6`qqFPE;4KS@8X|{_y#Ykt{ziEePorZrB^dMNBmhRqI#E`9TA_Ky-Q@LsL)VbhGsUXJhGh^u`WYw zcPMzrSZ_KibOOH3LkU$l9g5noY?QK$s33V?jTqQZ_H3XtwQ6MaRJLUeptKHts>pJ= z>jzrr46>Fua+oK4_LCysPdW@_hXeA85PFk=qW_WsP>JG~9+LWaIT0Fx>aN6oLFyXksGe9Mf!?;6#^`d3u=sg!9Z@rC{Vi){M)ODwnpXw@?cyv;${y1 z{CT2abku&4hI}%Ve*@iAf#jodPs-#FU4&hm+E~*=e+871fBa{4`Q_ul+`XGCT2TxZSf|SmgnKk^3fFE0LKkh` z!T6mI71*&iI%3skht6z0{&>e+N|Vt0MSeC)WxWiwUk_QD2t&1aXy+^7T1-d4B``0` z1q>8uV}s37oK$2PC<>9Yb#((-N(3`Kuqo+p?mZ zot>|!;47_d_T`zl&=#KviI?KzmDO6u89@7oZF=5Nb70Jc8cg#kwep7WQJxPPkVZr2 zmHoz;TU`}Rn-GlVCh2BWr@q@wHcl{dacqx7 zSn^Bv`gbHUuhB+afm;a<*GOV;N;xLDe43hJ9hP<5uPKw#t~9Ifg&)i>0UiiXhsn8O zWxEb$Slp#e9w6?H z+o7J=G2my9vix4kq91pQ5Ns=1mj#>y-&0QPj~L_aZv|Js{>!&k{=e%nkkNNcukgYB%>XFCnUjq zYvDml_+_9>{%cvlc=eeH>(K9%=kNnnvWR4nXl_1iwwOLXf$s$e4Ft{>EAsb`o<4!G zx7qZ`%xu^Jy=8TgZ;*UuZb4yTCZL0YeyvWb8lCedB8Y+X% zgT7s&l7+^gpj|Y~On)Mt-|bdk&;W&1TEb35Nd*N#gOOx(Y@JS1B6jwqpy1$udGetU zK9GfP;uQn5j42c2dh`fM=yrf60ZT8yQ}O#+T3TdfWTI?aRE>;`WYyKho8zGWQz>$I zW7*aa|7^Pt_!~;tRaUke09_1;NIceZy8>Nd$B7A|_q!{|F%m$JBnd0#UqQ<<3NVsX zErs$2kn{8;c`Gbb&Py5n!%~^wN*cnLdjA>)|3~KkSG?)aKRrIq0W_sXQLEN}iKEew zSCqD$tXr~%7K^9#I%(L&#$YyAz4{;oP~$%xs-^&~@rTKoheK6iWMrILU9||UA946C zeILi|QWk-`|47tZ@g?)7w5TYH-e82Zl8d2getuq7Rh5H*pzmMl4vrom{qa)Wapi@D zQ;nu1lRo^+0w(a!X`%c9og?3*JyTzp$t%kAg|y>i)t}vkNB=TaBL8dx*q?TsY{IvYODXdI z9iaOB+uLFW z`@OxV5;!KSq14|7*UU_0uaC<0n|XcA4MpuTqUu0gd#GWsxS zJR&MBa*VloGs(F{8832KQIhM~0w0^HORyr!e46ZoPYI}#T(69)!8LKRW`j!39ZG(z zPFFfYp9?hj=?l(`yGHcO&#Tn@44gHae);sfB_;Z^GZPkTlMnH?kM@k*f|mmtlf0Fc zm5Ma)PGO+kTw9S2j*gJ(9&UeO%PWq+@0-Ftw_p2WThwF;eozPXac|ro5xZKUa8Sw0 zZ+NgLFMIAoN@Z*bzxEHwYE8A7nxEo%NnacqVvUB-Ql5#1!?w#D{q+Zwqj} z<<4fs%4=PRwZnl4Ydt~&hi(j&Ap!!A8t7S2Zx9qOS$NT1&@ ze?`Xnudb?uacFb^!mV`aA?l)1D>G6OITqO|}huyS$icy{YG`AXRjChb_mma{8!E zI_yNQpSk}!u!P8qKat=>G)Kpwu{P8+Z#swY+s9TR;ceY>eSSh z{T*sYG$;L)bh<`Ov$L&kLgD_b7z<55D`%gUk%3{dqMg;nHKIFmS|nc={+6IZf*wMXD$yKdCmN*RRa6BCW@mY_)Y8L#GgejQCLg6wm`D< zb(pABYUQhlE>U`DYG1;4qJ5n|@y9=LI$P6~JT+-ZU)Op#RFB)4f)7(XdnFIs4tGm0 zud^jG(WzJ1rhZczMbt1dPPsH7$DM$|q^8v44O$YQ+#u5>=W6FK#)7&)F*f6{e<60R zV{^q5Bt(S=w6a@n{;KTx|2cLN`Suz=vBc4^D``ENTy0{wJJ(NU(~96Kj7)PnfYS${ z7=~u6;kQOm`g=QR$=`B}wvw>$J?rk9Hy_7J8OO45m6)A*uahU@b43miSg z&Y1Hm(p+o)o7;(xOX0r<<=}bCpLvV^D7+%rY?TY_B+shZ!Wps#657I9 zv|E)J*<#pn&gXqF_sflC+eU4Fb-5xTr5bn69P4+rX+SX9`V;s}y2L0rK~4-D_ra!v zfn`D};&X{;+UZASav%Dvn&T5F4vZ8E=;o99njJm!5-PQsk7*bk4UN9N#Lm=wJTt5e z>Ko}H$uGaiM`3ohCS#l}D?c*p;Zx~<&7AhRcjBp1{CrcpVMVWW-z2(S^@WL{k*RKs z@L-7PgH{LF)lDai=ve}@=ke)WFX()o6FkEqdaZ)ox$ZGrtj6bFCDX%@6f5%<_#>wz z7!B@BRK4XOzA%U;+5=>hviKL~&$;oTX-+-vbBx8GKmjQC52Rl%O!|)t+oOp>yIBwF zzNMol-%D8z7Q1xbiZh{Pa!mYF>Z;!I4}-tqJ$Pird~gcqI@7Ck65f%%YgLz*(h=8c zjd~6ttUq$e8wv)O{-i!34*j7XP317D6cW!wBBNi#=o$+)t~>JRH9kS^Dp;)t1&bK- zhtf{9#opIS7^l6dfiI&!sg;XPbzJ09LRkX7iPMyB%jHQ_Am@b%C|QwT__dDG3tZY( zpsn^~^TMefS%4z$4pVut!<~Wr0&@R4qYre5Zkv-rt(SOJc5)*5xDL{apOt{lhA9jl z6(xi<6hCv~jv;0T0Koj}c0AGLUI<==_R`rtW}0fRTyvqu@NQouQx~#F6J*SY4PQFe z;bNHL-8|gpT|sezIK0~>K1^bh)yD83V{xPIf$OLM%`CAi6vWvE_<8@itEd1AEt~O+ zdH-x+kupN=i-M>W0m(jbg7QU{xLvykTSo47rfHb#jcx+}63*{{QeOTwOw~^Za(bjx z&$S7Xoq*R6K5FO+Kx9bpmTP6o%Tifx*s0WTH^v7}bY35==v?8lQGgLs z**N%ac(IK?NEm&LAkiPx?nowoqK<3>FgGV7JK|E{QVBaYY7$C45w~JF>6_y>!ifvG zdH)yH@_Q90r*Q|xQ_gV_5m;t^bww?tL&ef)!lOz%M9kJD6oj$FJ0m?6;l8HPfbDYV z?;4if%%UuBX6W-kHEb7y- zg$L%-u!TF~({!2pcDTzH829tlwz~VK^?V3^_=NGaV?hw{CRdbG)!TaJDfgr?C7^0A5 zhvy1dKjB4-yqo*!j9xqS@dLLTn8)fKn{(Sa8?8gpWUuqPKCv{{>m=utyGuvP_1$w- zOTAo)D#rT^kHG#zUJ9FfUQbBs4h=GUc7ZZboW?>OaAb+#3YQuY*iIIQ`@19=d0NN58nuT$t)42RTXO!SwunAGJV3gnNeK77E&$q_qDNkV z%2L~wS0Z--=egVX@^eIhbY=^ZU4R+2E-RzhmHx{EJuxdo;GIUFAszGdC0Ch1@du43~$$>vX zg!lk!v@TEz^zq`Hd+DXhlz-F5s>HC`nUSI0PcBG4wI19n;uj8&`NxOg)PX7BW2X7X zt7*5;*<7!nQ48F>n96mra$Jb0p&*Vgd>PqoUE5Hhat$=AITIWnCKH**Rv+BrZ01?1 zvv?*}$+)v{mMgwCF}O?#%Dxv*!eo}=Qn`YA_#o*rsZU-=YvFEOi5JW?Q&fNd#iv$U zibk@no-ZV(Xb<+bt;=`J;A+ee_2P-1Dxlf`fhlLc1e+=e>3H%0Bcg0iuhjs)4s zd$Pr0t_~E;aq=IIfT$PqH*6&H$EcV?Q&UG{+*EB!6%S%{{>+v!H}_|?wJf7*V_|Az@$yo?liL_uxDtCAdguyfl-4+Gmb{s9&VzFsou2L1F}~f;kO#^GlBLb1Gx1 z7XngDl;q@dI8j|4oozZVGeSgbwre*#(;9q3VKFE%-@s%7?_cTmUju3mU8;DJeg<(dW!8|Vxs|a!bgFxy|MkTw^ zZEf0x$fRXDO8PUK#C6P|k=>??K)CJo+zs)A#`7zWpU-7hv3D?uS(#gMP$6&cu8>kE zwV6W|tOyY}8gHhmFOC*_y+m}Tp1-tZmq?R=z=?2hd;-6vnThs+T20NQgO3k)Q{-W@FaQPRK;g0|FQ*8tZUP1N*8G{9j)}qJN6&P-@&02 z65nLV7AR)Ubw6}gR(qtM=S*}JBr8#GNw)5J@%?;>J-dOAZH8FShxI~zun&36#P06; z{@&V6*&>2N!s6ZHa+{{5gGa;9FSle1EhkQeMyv$jCI>ooqey8mJ zmVSArg%J}ck?_$a_S)enYl(k#W=Z0A_DeVGV%b%m$z;0R?q4D!6Zw9(8_

es7Y< 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

_05h!T^%z{Fyue0TN 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 Ao&W#< literal 0 HcmV?d00001 diff --git a/docs/docassets/images/search-number-range.png b/docs/docassets/images/search-number-range.png new file mode 100644 index 0000000000000000000000000000000000000000..8b55d133846c64aa45be60635b72eeec69c93760 GIT binary patch literal 11773 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 REjlmG)bi`)KoD_;VCg|5{! z)zE&NC9{kiDM{g~vu*BWsPu}1xm$h&w!OXm(6Wng;X5t?*)Jb#!ln_jMi=e9jzRnL zu~{EbkjMb@x%^+=P&AUJeq-0z_r+=8H`!@QiL}3MqJ=(R$lYxHWG%@w;`})yp9Qb# zeoJ`AXKM3px9M^Yi8HYE#(VS0{tDlW{i`eLE0Kmdohr)OM`W!rg0X~|vvmyVar-Cp zI+1uj7Y1wocPWH(zJ1C+Bo0WsAWqqn4W5;EF$%>U`DVwqc7M5~PnVUb7a<7g?<``| z|LHZ9iN@p1mfzw$16taoNG#|%zm$=$sV&y}(;uh!j25Y$9wBOXIxqWZUBbiw6&Dxe z<0Nc>3tR*W*$mMPr3rSf>NOClSXmXkM{bVhOw-ZPiR8J=6{)4xM&F0NU}tAvfp&Vi zaxE6Hb8^1aTu;R~_c>0>*@nJSYAByrL>}U{?mBCV>`3fy%omzf_1{JZn7X@^1!UD- z2ZJ=(s9dfedSyD2DBRow{lL(G_W6I`BbO65%K%f(~zPK$<0 zr3+=!Gv7=o-=I2Rw#cF;ri+uPMoZT4(RQWV9oX3%$; zY&Lk-EPZ=$m{GTrxIa;!x8rTy9d>a@`DZ<;E63AQY)dvO=}t5o*j-rZ8}6PcH;I0 ze5ijuW-l1xvIb+?hF)1)RWz33wz^u9eWNgYdf-SQ(P9*J=6Ql+vfYHKs^48 zcRqtURCMq@3$Jj&LeGmIDX4-^KdY*r4s8{rJuIKP{nsw2aOsR@dOQA(Qvf^XcqAU(KRhvp#(- zUYma%|Mo|{!3sxp+@GU*pOzW|oTlk&yKz=FHjiU%Jd}@)q2bmv$Bc-)0=$c3{b%%S z7qU9xyw)!^kD+4WmVU@c`%SX546*HmorNB;57!*NRZ+x%$n7T@Ju{4f|C|)0d*tic z!G^KB|0x9nf(lQg0ZM5;a-VC)lK~~fVG%YDdPUaNXMgl@YfOAdB`5ferIo1d@i4yU zv(-9GK-k?bX**O0#IcW!8JH7rYsiox2LvOP2i;baJK8{3MCdh)}l^9qD(}Noo zhB!tlyom^;g+W_L+*egMqOnxpcbuJyy^j4Kkl!I|5hs?)^1dl3jN-81^D*KMIP)OD#M;C_^%c~!e z_|mL4JQOV&xl6y|I^^LZt~E(1Yu{~MUnC}dQ$n_uS-k@_hr!Tj1jC;9rO#nK*O&6+ z*>jXdp13Oi7w3(*?x(I3LYL`$*E-%`YB49Yg9Yh^E2*^_gc&kvi5H{tfS#3p`_60N zA5*^F#Ttr>a7!Y#uVIR6-EJFH*4Eb~i#jLot(P)n+t0>NhkA=8SOWAnox5YN!%L2v z@TyR z`-w^KLaTf)YZp;Z*X*@4zr9pm^j5(HxJC8uU9Ms3^cRW|6J4J*JXs4b3s!dCZu(yO zdmlk%Jo_=i&sujRWnTPvScPCN0r_j%vKD%CS(KKPj6Je8GBO(b_6_7ZA3Zl`#KytF zL-DuZve3vaFTaDjJbvupz?WZ8&@Ic3`?o0a2mvS-QXCj0fe?Vq$O9H^W%Y{zX9O}W;~2!a8#ATaP2gIo$n@JCJ~dcdV@AZ5&x>p*1G(D{ncMDV-FpyxyqG{E z_mDU}vO4XYRF--w1}$T>JZTx{db|@(85_RxV@xp_87SXT2480<#e|jYO8t!4BohV7 z>rTz@evwJgTqIU=G~?QSu!*dWIM(&eyEZA{2zqD@X>D9PGvYgxD7_h@ z#3w&c4q{!2)41C<&G(Gw(b{)&%+`C}Q~43C%gtwb&C5|`<{b~2Vc_azW;LA1z&g5| zXS7f=pqruYvWYSa5!x_~RtN4Nwj?j-GMOQ2*TSdMK{9f(5(qK7DCF>Fw0OdTwNLJ* zFwsP|(Ar9^JP`U2_waW_i4bx(p$|ok^^Ywm58sb>P6m<}^BNB{yEJPRTm05`ia$Q+ zW&5>Ij0Q2AG;NUw7()h?%+vYUnrtvN}&nMh%!o zP^3qf5rX+sEr`dX9&;`-W1Z_vl~H8VN#@E5>3l+qI>7Artd4mK9G>r%H|eDQc%9}v z=#XPK?T$SazI!uuTNjQB!?)SJJ*_9_q35`Yu9li>dplMqG6|Embb{-RO~bRLE8c0r zAWEEoLN0O{=@dUo2m$=v)gM#gy*UHiJLs>wVF-rXUEZty^4k?F+pj;h;X^CL1X3e# z2a$n{_opew^cxC3!Z)1vaKNJNV%$vC{x61v$#B(V$;9Z^b~3dMBnPf)IJBmF?@}s% zEj85-%)QP-+1<-UhxLeqD(>G3$}%Mqq|22GE_^gN-y7bxoy&|^R=|EmpQ=;J(!FXf z^YwFJQ=(>f^L*&E9-Jt*GZXc9J80k67Zme<8nQ~R$R^I9 zP?=&UShN249yvENE<;Dw_b>*&S0y@skNwyCbKz3FZ0nTqV@yl;wip%J;Q0Av&3R$g zi1sfw6v=lbT&ZlCO-1?YKcuo+mMx3CQX*EFEx$pyy`#Wd(+KDoq2X}@6mEIONSFRS&&?iX~X3M&>=q_v$K`1 zNC{^%g9;;nD;*thb5Kim;TPhG=1uZ=c{c|exnJ@t)bVXs8m6O+V@`V#?cG0yamP%D zm7BxYYR>)Ol<|9Xcz(5m>1dgr!>E>cd3l^BRu8^4MQqBz3soU!4*r7OdZ29&IX0sr zu>m6=rm^9W6K29Z6crVhiVU!~;~>yHD8H(Co9Awf7F7~jPcK_m2y6n}VaNzIW_h{e z2ArLpHC>)cNRWdHmOE%sq{C*;h&|Vy<+J2OGjFlnlup%R#1~2I z3EnaI#7_Q^9n0l^ove`%ME zQHTP}9$wqNU6|l+|88S6<_t^wiVm8*48um$5@ceDRm^%YsOy#v4PvIzl zwefWMNJ`{+Qj&d&_10rlf7&r(1XK;RwXn9ex&fVP8JBSqY?}fC zT+C;gOh`y*#z)A+Ki&??LzfKb;t2{0@%{r`H~aFB=poTMEQJFoqxM-e}l%R$Q+ zh2}x9XtU8^`#cC>+dFKB<*7wsp2;m&9gFNg-49S9M@cJK#xYEh`^~&`9-0Ph$wU+e z#dc5@>B}O7!QskuypOeg{(?lnM&P=3Pf8i842TI8yGRHVv0ra9hxd;BYt|JjWbfOMw}4HD9w(%m=+C`t~E(jXv>q%=}Phf0emN_RKE z;rsjD_kGv8|J`-hx@+C@$65RAJp1$P=Q(?yH(DA>1bEbV004kM8KLkL002^9=p3z&=s7S1S=9~FfZ%MT~T>Ib27VdPx*@$hC?(Yg6?;aD^ryP$ZH!^Obe ziqoI$Uz417TLFgP*@}) z$^%Sno%yxV$mA3KsLLEY-tD-3#_kb7`~aW@{xVcwJ>q*pc^OkFZ zlwQF=F@`kCeUr3!)cur{b*$Q1j74mc;#VVJX~4NbgbZ--%_zoMgCp_vu*}R8G#M^Y zw$XHWx4jq9;;U*!yOmGuu1YgZ=kS21x2cZ}vy(a=ArI=v~97Pyo$i~8CS|r*qT|zoI6>DMr%yC6E+{!M4abG>tmS-NWASG-ay2e$E z3oQudXUz71(8P-!!BONcI`G^TaccWpu~Kz5nYhyLDxlTBsBm9KD}% z**l2{7-9bnIH!Be{9-l@$s9lSTM1|26n&#lqe%>}3L82+OuLNaJD}7~jhED?#p+5sYN^V`t+!@cU3$qX|~YJ(oX0{J>O1h(;%YKLZ&~xH};MaVK#n zFgO9yV}WIGPY4Op0yl(Z<$|{E;mB}{fa1c)#~+M_sV-4B0WZ2Fq4yYc7nmO zB2l0Ts1E{%KVq0cJPHyZbECyZ3SpK}*5Y7_C>*DDVAKVt$dHYPmOQwi62r<0uas#U zr**)kjx>|cu^?4@rDwrCgWK>bqgwb8NU1yem#)8P=DpQ!<6oXl)Kd3_yH}T-+@-m~ zbGnz=kg&WpHq&J0w{H#)0PtIy()bom_MgwTJoNaY6EM7kvh64kIF%{ zjz$cZHhd*FtzbH@F_&|^e$DO(>qz~GF!260nS7Un)i7TrB{>US(p$qY_ReI>=e(?Z z6nxj|M8o1-$>OGhk=hfeS$X%lZ>Ae$P>VYCQn7z+1B|TqmEGJYC?>c zi4>?0e=7dS|9Nmgdq9I1X{E5A&-C;Yn=!jj@?rAp;M3=D?o}zB5R8g3n|KMqVii1jn$}g1+731WMlu9;9 zy*_pt_DfE$l*5#VY&p;9it-#T1k9;lH=ukId{ILAFZKBJEk721B>nhEdtIAKM^E2J zD^}0+qtVAeBfTd|6R~Stf!J;7p)pc2w*pE|ai@|+$4Zae z4L{8Kc+D&fm{_#;w@!nse_1iql{8S+F&PIM+ZhWPJTRQ7kgGT-H!3$XqA_4Ka%Ru<}6Sb=!kRTE{rc zxc865X*)zj#ouI6XFbUx$V|#C%f!jx7{*;8U$Lc#iH;u%O!G~PuhghCtn4?r^{(|+ z^(*rW5*zcUb6e~R=-vt3aX!7?;eYr_DX~AEj$hMMv%$W8l@T5SuY49eP2#4rE3n(W z2oG@%?vY{*S-fn%s65`@lRwA0AiFp|?h7O1pU0+QhQNev$S})67*9xGTF~^6Dt(FG*z&O?KsgcN^Kwj6TV` z1MuYz!ZSP$aMk3?$&(Llnh!Ollch3<(k7DMjHwMuFzb>R;lsJUnl*SDR-sLFp^4mn zrtMzm=^_dyjA2aC%oT&_ zFVYv@eX1{>`RKnZv?cVbA#6K)-bpoC#Z%>#U&OWpk8Lt}YWt7R-m5A6uRn#fM70#Q z*!<1=ThT(`>o$M=`K9@U`MS=m?gzvA&l}ftJK61RW-FPfmu!doSNs`EUEbO*TIN8vT%UI@+Jp;bYkq znH|kQ0XN5M@@^k$+1#={9ol|oQkB^}*gEGqvTo$nXni_hPWwV~cKO@a;2-CKn*?bz zE^UW_V@CleSuN{+hm+h>6;9WOmq9pI*sc$GsFQ!JEQSWME{~SA%=)qJ{9Wu{fCtNj zXq{*sS{}Oo!9SbV1H%K#M8?C}u2@=8UF__DRw*!m83>po z07T*2U;K5HeJpt+5O&-1Sn{|o6Hu}afC^C{5pci>)GmgXjEa#k`UF(n*0ylNuKc#` zhZ@gQ{KKg5`7Ydo|0CQ|sR#qbx){bw`-bJk3$KS;r)8PUD68>Ts(#6)>66){b z?CK@vFA4icLkvUTvEeZ2KPui%k}v~xEvUSkr!7>FM}UVHCWQxuLM1$H?8KfbJoz7U z%#$R{!Q0zi3=a46^W*V*%;V;159bpV6@~Ni!}_StBv-HhNeh!8{7wSr%QwbU z;*Kk(<>+tgY@p!iV(aRKi6O-=!YA>M{{JTVcf|j&H2k+EpMdaxTK1VG|1`kb?xCBMX^`5Ku4~<^365 zqmxL$9YKOix-dm7J5@sQqC>suR@i+ z`$oQIk^wQf`++<>JmQ`}nu~fB(>xbL%javDfW*)+3sBb=*z~a|Gry5q;kOon$<^@q z52LYQ1hfI-KtzOhF=O^N6d@^#udJu1Cu6bIZza=+vUa`mnG2awRE%3*UQVfAvz~~P zVPQ-e98@VREL^+cQbvLixf5X5g{CmOk#`^eFeMB)gt5cnZgsN0P)uB)IIx0IZ0Jo| zG>o5Lagt)2)?W>TaT?1270XXEDa?_#;o#t)wvKkW^R)B;l+XA8h2nZ*&+i#V14#ft z7Vv=+MBM!O+#E?0*zEl8z^a&JiimNiP)PJzOwq?zv+-aA5*#5@oeG|^iF$qaAg3(T z^Q1wBg+yh!PVp|<0eQoP7M(W6U4o1Vgf|JoYC6XPBwq4U91(qEin{8j0*?8Rr5ce z6od3gV5s2^FfJ1OMHS=d|I{U%UL zADAh~u-1+sF)8UgPyfWALp~$FU|sWe0I-U-H4vx8Sk``!ha4&_OoQX;wV%Ow$sRf8 zr(J*ZrP+6H$*e3(f9ok}iPvY5znl*~v3++6+hm1L`L?Cffd>d%u^axi>vrx6z>AaReC?y@2Y=6|=Hb?zb(+iZ&@%lQ`K+Ib(f$YZS!(%{%8IcU*|(IDrNK+3lteT{Sq?S=+9VmiQ=}i% zHww-yGU{<#kFm-J39^|Cwbir2T3aQY)5QSH%*<@c8!=sn#$EBxJtjQNoBd&Ps>~m8 z_=`0fDvPcE{;o+lre!+rO-@wuN7I?G0rJAu!q(xmGWr=SI| zDsxGi$vqzY@-d~027YX%QfbVFw=%Y<`#wG2;jvnIb{lB9Hb)-L*{E%$CBHOW>}K7k zT1G1|*e_D7e?pdGWzwingg-Z5WFERX6VJpfMy8mSTrqOkXHnbD;a*pQ7W>M*##P2- zfep+6+1lFXg#;b5HtH8EI^f~sZ@TC>^#_Si`JjM-7QH9t%h&8x76DVXo07#UHs9`- zz)p8nELg6e)0$<84HL&PW&UWOls1_@a*X}?iDAAc<$ZOzx#|p7X+YZ1JMmg5@G;~Y zD{r6zfn&k^t9a~Ge&wEw-cekXmSeT36jvH()zj>AAFxY>rJC!I#T_v3vqaNL7F}v~uJvP=~DJb2A zh7|0su}A zZzgd+9P1t{rtR9On1WSrAM&5Xuu!>hd38mjUCLwFY62N%jMlR1LgDW^PGG5(2B7Qq zDK97Ku5#UJ2iLFp17=K1av+Z>W22k5Z}E~-Q-Alx(yYza7UTaYRK=WYMTBQphhwP3 z#FtD?*N+((7#u>a2HDnFAqhx6u!uA-i>`Mvc$i5B#rN3t=p8tQ0Ym+N%Ogz5`B+iv zd9&heV)Dr5;p)oiB|}FtdxrzXPEe%RqdIj^5m8hV8m;+@PRtu2xd&3E3q5yS2)(}e zKBy5Pdr{~36?=a_R<(62WN2up#&6dwhLR7oJ>OV$Y$l-$Vj>I##Rff>cfWlv?Dl2# zFweNrRmJ3~j?P4lb-x(5d5bT><>{`Hp`l@x%SN-sE~gcX93!(ZrvA`GQT{B9@=iaR z1t%vb6EZU&QLcY4d**SrXBm8ZeTpeDB|AG7I{zhLxp@a&8r)nzV=S3n$9?~|;?`U} zJ_V0S=bwS3iH;X9g3te^p$7(JWo3cc0V`DA8{Z()Rpx$2WI>o?MI`Wu?PPoYHSiwx z(tbbvGpTQOI`-C631BIT*zQ4hpGXS0{KZytusvl1o5=@P9JeYrotP zx3RY`yRSI-`?pn!ZKh<9J|tQqy+5A**%yA_EdypmILeZ^O`E+TU?YAW z!y(7%N?N+$Jy}5?5+WMOK!JmUgXHm))KrcaHrmEuZT|WOm-*idpS>uhf}0NZF{nRx zPV^XHIZbiQJ%d`4yk9_cI)U>O2hj3T&NI9*k3^rQC@U+!ExR_&x$CREP6SEMo!~Bi z^3q}yi|Ak?pVm)GpB~1yRY_ItGJM!Np8Xcm6PGQuei_B)ywF4>8FY#Ay+Bu^7COSvxq*}G7)_}a$TrC<+n~?U^8)! zSzF*opGSsYYpOKAPsOhyI(0!rIXna5Y|#xgLe98Xkz;7I*2DJ_$iO6P$N5q{&SOHi z#a1eOaxSfhYnaN_GtZdx-d!~H`&>|WnkDX6xls@)^HViKh3?|Qd1Fh_6?$FBBggu+ z>Uio)osABR^wV_XdeB2^0fc%@Vbx4hxrTXJm2?#f`3C&E{C*cahZQA=buRHX*sj;* zy&9j*^jAXBR2-uXzaWwD%PGNzzL{@AOhH7_3f?;_uXn8BAF5`?mp_>=^Fh*8WER;l z_=j#zqDfMEf3ie` z9Mkho6Xv3uSV+Aiz^%$i*z!n|r!LbHHHegII^tzq0#X>FWz$OaEbcAXL>?o4r!`JQ zyvG838za0tsEtB8;cD5Kkl=~Qffg|*_r9HpC%1tU7S!7v{F+xZh7-#FJ_?D}pes*J&pR=mi*-J#c?4kcPG4 z3dVcDY#jG%@IsU{9Y92vfNaE7FtI^CM!&ljzaMz6UT!7?F0-%d6m{eK>wxLMoxw0E zQ;?YD!4T*8<$BFp?9Q3v0F`&OXpcMw9XBH0-|zQZBQpyafNmtXH+HRTYH6(m=>?2H zVs}i_EfP@u1asP2fk-n5?|l%(Sg>NSNy2f$eDD}pWKa-3t#|)dRKucfaR!7J{kzwJ zPD~cOVINe}sJB9FOyZl+ylf~4*RCAMm7#Mz(HJHxjp!`EH2ib~T(1=|Oc|7iD$^Pc z#6KCJ*jEttxB3owHh$MP;Ao`~^tkZ8TAKHA zPfyRB^Zui|nNc7eIYqKg=GYN)6z?+EH zlGx1T&&m4P*v8g()k%yCgNnfd^J_EwE5ts{sG=bGy&M?j0!UO`R5rSZn9@a-$DwOt m)gbY1nzV+j-G6d=DLuP)A + {{ option.name | translate }} + + +
+ +
diff --git a/lib/content-services/search/components/search-check-list/search-check-list.component.scss b/lib/content-services/search/components/search-check-list/search-check-list.component.scss new file mode 100644 index 0000000000..920a5be2ea --- /dev/null +++ b/lib/content-services/search/components/search-check-list/search-check-list.component.scss @@ -0,0 +1,8 @@ +.adf-search-check-list { + display: flex; + flex-direction: column; + + .mat-checkbox { + margin: 5px; + } +} diff --git a/lib/content-services/search/components/search-check-list/search-check-list.component.spec.ts b/lib/content-services/search/components/search-check-list/search-check-list.component.spec.ts new file mode 100644 index 0000000000..74be8996ce --- /dev/null +++ b/lib/content-services/search/components/search-check-list/search-check-list.component.spec.ts @@ -0,0 +1,118 @@ +/*! + * @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 { SearchCheckListComponent } from './search-check-list.component'; + +describe('SearchCheckListComponent', () => { + + let component: SearchCheckListComponent; + + beforeEach(() => { + component = new SearchCheckListComponent(); + }); + + it('should setup options from settings', () => { + const options: any = [ + { 'name': 'Folder', 'value': "TYPE:'cm:folder'" }, + { 'name': 'Document', 'value': "TYPE:'cm:content'" } + ]; + component.settings = { options: options }; + component.ngOnInit(); + + expect(component.options).toEqual(options); + }); + + it('should setup operator from the settings', () => { + component.settings = { operator: 'AND' }; + component.ngOnInit(); + expect(component.operator).toBe('AND'); + }); + + it('should use OR operator by default', () => { + component.settings = { operator: null }; + component.ngOnInit(); + expect(component.operator).toBe('OR'); + }); + + it('should update query builder on checkbox change', () => { + component.options = [ + { name: 'Folder', value: "TYPE:'cm:folder'", checked: false }, + { name: 'Document', value: "TYPE:'cm:content'", checked: false } + ]; + + component.id = 'checklist'; + component.context = { + queryFragments: {}, + update() {} + }; + + component.ngOnInit(); + + spyOn(component.context, 'update').and.stub(); + + component.changeHandler( + { checked: true }, + component.options[0] + ); + + expect(component.context.queryFragments[component.id]).toEqual(`TYPE:'cm:folder'`); + + component.changeHandler( + { checked: true }, + component.options[1] + ); + + expect(component.context.queryFragments[component.id]).toEqual( + `TYPE:'cm:folder' OR TYPE:'cm:content'` + ); + }); + + it('should reset selected boxes', () => { + component.options = [ + { name: 'Folder', value: "TYPE:'cm:folder'", checked: true }, + { name: 'Document', value: "TYPE:'cm:content'", checked: true } + ]; + + component.reset(); + + expect(component.options[0].checked).toBeFalsy(); + expect(component.options[1].checked).toBeFalsy(); + }); + + it('should update query builder on reset', () => { + component.id = 'checklist'; + component.context = { + queryFragments: { + 'checklist': 'query' + }, + update() {} + }; + spyOn(component.context, 'update').and.stub(); + + component.ngOnInit(); + component.options = [ + { name: 'Folder', value: "TYPE:'cm:folder'", checked: true }, + { name: 'Document', value: "TYPE:'cm:content'", checked: true } + ]; + + component.reset(); + + expect(component.context.update).toHaveBeenCalled(); + expect(component.context.queryFragments[component.id]).toBe(''); + }); + +}); diff --git a/lib/content-services/search/components/search-check-list/search-check-list.component.ts b/lib/content-services/search/components/search-check-list/search-check-list.component.ts new file mode 100644 index 0000000000..317b10c120 --- /dev/null +++ b/lib/content-services/search/components/search-check-list/search-check-list.component.ts @@ -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(); + } + } +} diff --git a/lib/content-services/search/components/search-date-range/search-date-range.component.html b/lib/content-services/search/components/search-date-range/search-date-range.component.html new file mode 100644 index 0000000000..16c9a68c45 --- /dev/null +++ b/lib/content-services/search/components/search-date-range/search-date-range.component.html @@ -0,0 +1,36 @@ +
+ + + + + + + {{ 'SEARCH.FILTER.VALIDATION.REQUIRED-VALUE' | translate }} + + + + + + + + + {{ 'SEARCH.FILTER.VALIDATION.NO-DAYS' | translate }} + + + +
+ + +
+
+ diff --git a/lib/content-services/search/components/search-date-range/search-date-range.component.scss b/lib/content-services/search/components/search-date-range/search-date-range.component.scss new file mode 100644 index 0000000000..3bb0f88e60 --- /dev/null +++ b/lib/content-services/search/components/search-date-range/search-date-range.component.scss @@ -0,0 +1,8 @@ +.adf-search-date-range > form { + display: inline-flex; + flex-direction: column; + + .mat-button { + text-transform: uppercase; + } +} diff --git a/lib/content-services/search/components/search-date-range/search-date-range.component.spec.ts b/lib/content-services/search/components/search-date-range/search-date-range.component.spec.ts new file mode 100644 index 0000000000..19f6fd0e97 --- /dev/null +++ b/lib/content-services/search/components/search-date-range/search-date-range.component.spec.ts @@ -0,0 +1,98 @@ +/*! + * @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 { SearchDateRangeComponent } from './search-date-range.component'; +import moment from 'moment-es6'; + +describe('SearchDateRangeComponent', () => { + + let component: SearchDateRangeComponent; + let fromDate = '2016-10-16'; + let toDate = '2017-10-16'; + + beforeEach(() => { + component = new SearchDateRangeComponent(); + }); + + it('should setup form elements on init', () => { + component.ngOnInit(); + expect(component.form).toBeDefined(); + expect(component.to).toBeDefined(); + expect(component.form).toBeDefined(); + }); + + it('should reset form', () => { + component.ngOnInit(); + component.form.setValue({ from: fromDate, to: toDate }); + + expect(component.from.value).toEqual(fromDate); + expect(component.to.value).toEqual(toDate); + + component.reset(); + + expect(component.from.value).toEqual(''); + expect(component.to.value).toEqual(''); + expect(component.form.value).toEqual({ from: '', to: '' }); + }); + + it('should update query builder on reset', () => { + const context: any = { + queryFragments: { + createdDateRange: 'query' + }, + update() {} + }; + + component.id = 'createdDateRange'; + component.context = context; + + spyOn(context, 'update').and.stub(); + + component.ngOnInit(); + component.reset(); + + expect(context.queryFragments.createdDateRange).toEqual(''); + expect(context.update).toHaveBeenCalled(); + }); + + it('should update query builder on value changes', () => { + const context: any = { + queryFragments: {}, + update() {} + }; + + component.id = 'createdDateRange'; + component.context = context; + component.settings = { field: 'cm:created' }; + + spyOn(context, 'update').and.stub(); + + component.ngOnInit(); + component.apply({ + from: fromDate, + to: toDate + }, true); + + const startDate = moment(fromDate).startOf('day').format(); + const endDate = moment(toDate).endOf('day').format(); + + const expectedQuery = `cm:created:['${startDate}' TO '${endDate}']`; + expect(context.queryFragments[component.id]).toEqual(expectedQuery); + expect(context.update).toHaveBeenCalled(); + }); + +}); diff --git a/lib/content-services/search/components/search-date-range/search-date-range.component.ts b/lib/content-services/search/components/search-date-range/search-date-range.component.ts new file mode 100644 index 0000000000..52924b1f8b --- /dev/null +++ b/lib/content-services/search/components/search-date-range/search-date-range.component.ts @@ -0,0 +1,92 @@ +/*! + * @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 { OnInit, Component, ViewEncapsulation } from '@angular/core'; +import { FormControl, Validators, FormGroup } from '@angular/forms'; +import { SearchWidget } from '../../search-widget.interface'; +import { SearchWidgetSettings } from '../../search-widget-settings.interface'; +import { SearchQueryBuilderService } from '../../search-query-builder.service'; +import { LiveErrorStateMatcher } from '../../forms/live-error-state-matcher'; +import moment from 'moment-es6'; + +@Component({ + selector: 'adf-search-date-range', + templateUrl: './search-date-range.component.html', + styleUrls: ['./search-date-range.component.scss'], + encapsulation: ViewEncapsulation.None, + host: { class: 'adf-search-date-range' } +}) +export class SearchDateRangeComponent implements SearchWidget, OnInit { + + from: FormControl; + to: FormControl; + + form: FormGroup; + matcher = new LiveErrorStateMatcher(); + + id: string; + settings?: SearchWidgetSettings; + context?: SearchQueryBuilderService; + maxFrom: any; + + ngOnInit() { + const validators = Validators.compose([ + Validators.required + ]); + + this.from = new FormControl('', validators); + this.to = new FormControl('', validators); + + this.form = new FormGroup({ + from: this.from, + to: this.to + }); + + this.maxFrom = moment().startOf('day'); + } + + apply(model: { from: string, to: string }, isValid: boolean) { + if (isValid && this.id && this.context && this.settings && this.settings.field) { + const start = moment(model.from).startOf('day').format(); + const end = moment(model.to).endOf('day').format(); + + this.context.queryFragments[this.id] = `${this.settings.field}:['${start}' TO '${end}']`; + this.context.update(); + } + } + + reset() { + this.form.reset({ + from: '', + to: '' + }); + if (this.id && this.context) { + this.context.queryFragments[this.id] = ''; + this.context.update(); + } + } + + hasSelectedDays(from: string, to: string): boolean { + if (from && to) { + const start = moment(from).startOf('day'); + const end = moment(to).endOf('day'); + + return start.isBefore(end); + } + return true; + } +} diff --git a/lib/content-services/search/components/search-filter/search-filter.component.html b/lib/content-services/search/components/search-filter/search-filter.component.html index 159329e01c..957ef03bb9 100644 --- a/lib/content-services/search/components/search-filter/search-filter.component.html +++ b/lib/content-services/search/components/search-filter/search-filter.component.html @@ -35,7 +35,7 @@ @@ -43,12 +43,19 @@
{{ bucket.display || bucket.label }} ({{ bucket.count }})
+ +
diff --git a/lib/content-services/search/components/search-filter/search-filter.component.spec.ts b/lib/content-services/search/components/search-filter/search-filter.component.spec.ts index f1a914dfb4..f4085e4626 100644 --- a/lib/content-services/search/components/search-filter/search-filter.component.spec.ts +++ b/lib/content-services/search/components/search-filter/search-filter.component.spec.ts @@ -64,19 +64,19 @@ describe('SearchSettingsComponent', () => { }); it('should update facet field model on expand', () => { - const field: any = { $expanded: false }; + const field: any = { expanded: false }; component.onFacetFieldExpanded(field); - expect(field.$expanded).toBeTruthy(); + expect(field.expanded).toBeTruthy(); }); it('should update facet field model on collapse', () => { - const field: any = { $expanded: true }; + const field: any = { expanded: true }; component.onFacetFieldCollapsed(field); - expect(field.$expanded).toBeFalsy(); + expect(field.expanded).toBeFalsy(); }); it('should update bucket model and query builder on facet toggle', () => { @@ -118,6 +118,7 @@ describe('SearchSettingsComponent', () => { it('should unselect facet query and update builder', () => { const config: SearchConfiguration = { + categories: [], facetQueries: [ { label: 'q1', query: 'query1' } ] @@ -238,7 +239,7 @@ describe('SearchSettingsComponent', () => { it('should fetch facet fields from response payload', () => { component.responseFacetFields = []; - const fields = [ + const fields: any = [ { label: 'f1', buckets: [] }, { label: 'f2', buckets: [] } ]; @@ -256,9 +257,9 @@ describe('SearchSettingsComponent', () => { }); it('should restore expanded state for new response facet fields', () => { - component.responseFacetFields = [ + component.responseFacetFields = [ { label: 'f1', buckets: [] }, - { label: 'f2', buckets: [], $expanded: true } + { label: 'f2', buckets: [], expanded: true } ]; const fields = [ @@ -276,8 +277,8 @@ describe('SearchSettingsComponent', () => { component.onDataLoaded(data); expect(component.responseFacetFields.length).toBe(2); - expect(component.responseFacetFields[0].$expanded).toBeFalsy(); - expect(component.responseFacetFields[1].$expanded).toBeTruthy(); + expect(component.responseFacetFields[0].expanded).toBeFalsy(); + expect(component.responseFacetFields[1].expanded).toBeTruthy(); }); it('should restore checked buckets for new response facet fields', () => { @@ -285,7 +286,7 @@ describe('SearchSettingsComponent', () => { const bucket2 = { label: 'b2', $field: 'f2', count: 1, filterQuery: 'q2' }; component.selectedBuckets = [ bucket2 ]; - component.responseFacetFields = [ + component.responseFacetFields = [ { label: 'f2', buckets: [] } ]; diff --git a/lib/content-services/search/components/search-filter/search-filter.component.ts b/lib/content-services/search/components/search-filter/search-filter.component.ts index 9c261cc7b5..54d5030eb5 100644 --- a/lib/content-services/search/components/search-filter/search-filter.component.ts +++ b/lib/content-services/search/components/search-filter/search-filter.component.ts @@ -63,11 +63,11 @@ export class SearchFilterComponent implements OnInit { } onFacetFieldExpanded(field: ResponseFacetField) { - field.$expanded = true; + field.expanded = true; } onFacetFieldCollapsed(field: ResponseFacetField) { - field.$expanded = false; + field.expanded = false; } onFacetQueryToggle(event: MatCheckboxChange, query: ResponseFacetQuery) { @@ -143,11 +143,13 @@ export class SearchFilterComponent implements OnInit { return q; }); - const expandedFields = this.responseFacetFields.filter(f => f.$expanded).map(f => f.label); + const expandedFields = this.responseFacetFields.filter(f => f.expanded).map(f => f.label); this.responseFacetFields = (context.facetsFields || []).map( (field: ResponseFacetField) => { - field.$expanded = expandedFields.includes(field.label); + field.pageSize = field.pageSize || 5; + field.currentPageSize = field.pageSize; + field.expanded = expandedFields.includes(field.label); (field.buckets || []).forEach(bucket => { bucket.$field = field.label; @@ -160,6 +162,20 @@ export class SearchFilterComponent implements OnInit { bucket.$checked = true; } }); + + field.hasMoreItems = (): boolean => { + return field.buckets && field.buckets.length > 0 && field.buckets.length > field.currentPageSize; + }; + + field.showMoreItems = () => { + field.currentPageSize += field.pageSize; + }; + + field.getVisibleBuckets = (): FacetFieldBucket[] => { + const buckets = field.buckets || []; + return buckets.slice(0, field.currentPageSize); + }; + return field; } ); @@ -168,5 +184,4 @@ export class SearchFilterComponent implements OnInit { this.responseFacetFields = []; } } - } diff --git a/lib/content-services/search/components/search-filter/search-filter.service.ts b/lib/content-services/search/components/search-filter/search-filter.service.ts index c1010939aa..57fe9fda88 100644 --- a/lib/content-services/search/components/search-filter/search-filter.service.ts +++ b/lib/content-services/search/components/search-filter/search-filter.service.ts @@ -20,6 +20,8 @@ import { SearchTextComponent } from '../search-text/search-text.component'; import { SearchRadioComponent } from '../search-radio/search-radio.component'; import { SearchSliderComponent } from '../search-slider/search-slider.component'; import { SearchNumberRangeComponent } from '../search-number-range/search-number-range.component'; +import { SearchCheckListComponent } from '../search-check-list/search-check-list.component'; +import { SearchDateRangeComponent } from '../search-date-range/search-date-range.component'; @Injectable() export class SearchFilterService { @@ -31,7 +33,9 @@ export class SearchFilterService { 'text': SearchTextComponent, 'radio': SearchRadioComponent, 'slider': SearchSliderComponent, - 'number-range': SearchNumberRangeComponent + 'number-range': SearchNumberRangeComponent, + 'check-list': SearchCheckListComponent, + 'date-range': SearchDateRangeComponent }; } diff --git a/lib/content-services/search/components/search-number-range/search-number-range.component.html b/lib/content-services/search/components/search-number-range/search-number-range.component.html index 6a25a88bed..b070a0074b 100644 --- a/lib/content-services/search/components/search-number-range/search-number-range.component.html +++ b/lib/content-services/search/components/search-number-range/search-number-range.component.html @@ -4,15 +4,21 @@ - Invalid format - Required value + + {{ 'SEARCH.FILTER.VALIDATION.INVALID-FORMAT' | translate }} + + + {{ 'SEARCH.FILTER.VALIDATION.REQUIRED-VALUE' | translate }} + - Invalid format + + {{ 'SEARCH.FILTER.VALIDATION.INVALID-FORMAT' | translate }} + diff --git a/lib/content-services/search/facet-field.interface.ts b/lib/content-services/search/facet-field.interface.ts index 5edb82408a..bba89a325e 100644 --- a/lib/content-services/search/facet-field.interface.ts +++ b/lib/content-services/search/facet-field.interface.ts @@ -19,6 +19,9 @@ export interface FacetField { field: string; label: string; mincount?: number; + limit?: number; + offset?: number; + prefix?: string; $checked?: boolean; } diff --git a/lib/content-services/search/response-facet-field.interface.ts b/lib/content-services/search/response-facet-field.interface.ts index f14bf6d230..61a6a754ed 100644 --- a/lib/content-services/search/response-facet-field.interface.ts +++ b/lib/content-services/search/response-facet-field.interface.ts @@ -20,6 +20,11 @@ import { FacetFieldBucket } from './facet-field-bucket.interface'; export interface ResponseFacetField { label: string; buckets: Array; + pageSize?: number; + currentPageSize?: number; + expanded?: boolean; - $expanded?: boolean; + hasMoreItems(): boolean; + showMoreItems(): void; + getVisibleBuckets(): Array; } diff --git a/lib/content-services/search/search-configuration.interface.ts b/lib/content-services/search/search-configuration.interface.ts index 30948fcf8f..f948453921 100644 --- a/lib/content-services/search/search-configuration.interface.ts +++ b/lib/content-services/search/search-configuration.interface.ts @@ -23,12 +23,8 @@ import { SearchCategory } from './search-category.interface'; export interface SearchConfiguration { include?: Array; fields?: Array; - query?: { - categories: Array - }; + categories: Array; filterQueries?: Array; facetQueries?: Array; - facetFields?: { - facets: Array - }; + facetFields?: Array; } diff --git a/lib/content-services/search/search-query-builder.service.spec.ts b/lib/content-services/search/search-query-builder.service.spec.ts index 52f75332a1..22884d64b7 100644 --- a/lib/content-services/search/search-query-builder.service.spec.ts +++ b/lib/content-services/search/search-query-builder.service.spec.ts @@ -37,13 +37,11 @@ describe('SearchQueryBuilder', () => { it('should use only enabled categories', () => { const config: SearchConfiguration = { - query: { - categories: [ - { id: 'cat1', enabled: true }, - { id: 'cat2', enabled: false }, - { id: 'cat3', enabled: true } - ] - } + categories: [ + { id: 'cat1', enabled: true }, + { id: 'cat2', enabled: false }, + { id: 'cat3', enabled: true } + ] }; const builder = new SearchQueryBuilderService(buildConfig(config), null); @@ -54,9 +52,7 @@ describe('SearchQueryBuilder', () => { it('should fetch filter queries from config', () => { const config: SearchConfiguration = { - query: { - categories: [] - }, + categories: [], filterQueries: [ { query: 'query1' }, { query: 'query2' } @@ -123,6 +119,7 @@ describe('SearchQueryBuilder', () => { it('should fetch facet query from config', () => { const config: SearchConfiguration = { + categories: [], facetQueries: [ { query: 'q1', label: 'query1' }, { query: 'q2', label: 'query2' } @@ -137,6 +134,7 @@ describe('SearchQueryBuilder', () => { it('should not fetch empty facet query from the config', () => { const config: SearchConfiguration = { + categories: [], facetQueries: [ { query: 'q1', label: 'query1' } ] @@ -179,11 +177,9 @@ describe('SearchQueryBuilder', () => { it('should require a query fragment to build query', () => { const config: SearchConfiguration = { - query: { - categories: [ - { id: 'cat1', enabled: true } - ] - } + categories: [ + { id: 'cat1', enabled: true } + ] }; const builder = new SearchQueryBuilderService(buildConfig(config), null); builder.queryFragments['cat1'] = null; @@ -194,11 +190,9 @@ describe('SearchQueryBuilder', () => { it('should build query with single fragment', () => { const config: SearchConfiguration = { - query: { - categories: [ - { id: 'cat1', enabled: true } - ] - } + categories: [ + { id: 'cat1', enabled: true } + ] }; const builder = new SearchQueryBuilderService(buildConfig(config), null); @@ -210,12 +204,10 @@ describe('SearchQueryBuilder', () => { it('should build query with multiple fragments', () => { const config: SearchConfiguration = { - query: { - categories: [ - { id: 'cat1', enabled: true }, - { id: 'cat2', enabled: true } - ] - } + categories: [ + { id: 'cat1', enabled: true }, + { id: 'cat2', enabled: true } + ] }; const builder = new SearchQueryBuilderService(buildConfig(config), null); @@ -231,12 +223,10 @@ describe('SearchQueryBuilder', () => { it('should build query with custom fields', () => { const config: SearchConfiguration = { fields: ['field1', 'field2'], - query: { - categories: [ - { id: 'cat1', enabled: true }, - { id: 'cat2', enabled: true } - ] - } + categories: [ + { id: 'cat1', enabled: true }, + { id: 'cat2', enabled: true } + ] }; const builder = new SearchQueryBuilderService(buildConfig(config), null); @@ -249,12 +239,10 @@ describe('SearchQueryBuilder', () => { it('should build query with empty custom fields', () => { const config: SearchConfiguration = { fields: [], - query: { - categories: [ - { id: 'cat1', enabled: true }, - { id: 'cat2', enabled: true } - ] - } + categories: [ + { id: 'cat1', enabled: true }, + { id: 'cat2', enabled: true } + ] }; const builder = new SearchQueryBuilderService(buildConfig(config), null); @@ -266,11 +254,9 @@ describe('SearchQueryBuilder', () => { it('should build query with custom filter queries', () => { const config: SearchConfiguration = { - query: { - categories: [ - { id: 'cat1', enabled: true } - ] - } + categories: [ + { id: 'cat1', enabled: true } + ] }; const builder = new SearchQueryBuilderService(buildConfig(config), null); builder.queryFragments['cat1'] = 'cm:name:test'; @@ -284,11 +270,9 @@ describe('SearchQueryBuilder', () => { it('should build query with custom facet queries', () => { const config: SearchConfiguration = { - query: { - categories: [ - { id: 'cat1', enabled: true } - ] - }, + categories: [ + { id: 'cat1', enabled: true } + ], facetQueries: [ { query: 'q1', label: 'q2' } ] @@ -302,32 +286,26 @@ describe('SearchQueryBuilder', () => { it('should build query with custom facet fields', () => { const config: SearchConfiguration = { - query: { - categories: [ - { id: 'cat1', enabled: true } - ] - }, - facetFields: { - facets: [ - { field: 'field1', label: 'field1' }, - { field: 'field2', label: 'field2' } - ] - } + categories: [ + { id: 'cat1', enabled: true } + ], + facetFields: [ + { field: 'field1', label: 'field1', mincount: 1, limit: null, offset: 0, prefix: null }, + { field: 'field2', label: 'field2', mincount: 1, limit: null, offset: 0, prefix: null } + ] }; const builder = new SearchQueryBuilderService(buildConfig(config), null); builder.queryFragments['cat1'] = 'cm:name:test'; const compiled = builder.buildQuery(); - expect(compiled.facetFields).toEqual(config.facetFields); + expect(compiled.facetFields.facets).toEqual(jasmine.objectContaining(config.facetFields)); }); it('should use pagination settings', () => { const config: SearchConfiguration = { - query: { - categories: [ - { id: 'cat1', enabled: true } - ] - } + categories: [ + { id: 'cat1', enabled: true } + ] }; const builder = new SearchQueryBuilderService(buildConfig(config), null); builder.queryFragments['cat1'] = 'cm:name:test'; diff --git a/lib/content-services/search/search-query-builder.service.ts b/lib/content-services/search/search-query-builder.service.ts index 8ad60f1c26..5cc7dd2369 100644 --- a/lib/content-services/search/search-query-builder.service.ts +++ b/lib/content-services/search/search-query-builder.service.ts @@ -18,7 +18,7 @@ import { Injectable } from '@angular/core'; import { Subject } from 'rxjs/Subject'; import { AlfrescoApiService, AppConfigService } from '@alfresco/adf-core'; -import { QueryBody } from 'alfresco-js-api'; +import { QueryBody, RequestFacetFields, RequestFacetField } from 'alfresco-js-api'; import { SearchCategory } from './search-category.interface'; import { FilterQuery } from './filter-query.interface'; import { SearchRange } from './search-range.interface'; @@ -45,8 +45,8 @@ export class SearchQueryBuilderService { throw new Error('Search configuration not found.'); } - if (this.config.query && this.config.query.categories) { - this.categories = this.config.query.categories.filter(f => f.enabled); + if (this.config.categories) { + this.categories = this.config.categories.filter(f => f.enabled); } this.filterQueries = this.config.filterQueries || []; @@ -116,7 +116,7 @@ export class SearchQueryBuilderService { fields: this.config.fields, filterQueries: this.filterQueries, facetQueries: this.config.facetQueries, - facetFields: this.config.facetFields + facetFields: this.facetFields }; return result; @@ -124,4 +124,23 @@ export class SearchQueryBuilderService { return null; } + + private get facetFields(): RequestFacetFields { + const facetFields = this.config.facetFields; + + if (facetFields && facetFields.length > 0) { + return { + facets: facetFields.map(facet => { + field: facet.field, + mincount: facet.mincount, + label: facet.label, + limit: facet.limit, + offset: facet.offset, + prefix: facet.prefix + }) + }; + } + + return null; + } } diff --git a/lib/content-services/search/search.module.ts b/lib/content-services/search/search.module.ts index 59663158fb..53fb0af7a6 100644 --- a/lib/content-services/search/search.module.ts +++ b/lib/content-services/search/search.module.ts @@ -35,6 +35,8 @@ import { SearchTextComponent } from './components/search-text/search-text.compon import { SearchRadioComponent } from './components/search-radio/search-radio.component'; import { SearchSliderComponent } from './components/search-slider/search-slider.component'; import { SearchNumberRangeComponent } from './components/search-number-range/search-number-range.component'; +import { SearchCheckListComponent } from './components/search-check-list/search-check-list.component'; +import { SearchDateRangeComponent } from './components/search-date-range/search-date-range.component'; export const ALFRESCO_SEARCH_DIRECTIVES: any[] = [ SearchComponent, @@ -60,7 +62,9 @@ export const ALFRESCO_SEARCH_DIRECTIVES: any[] = [ SearchTextComponent, SearchRadioComponent, SearchSliderComponent, - SearchNumberRangeComponent + SearchNumberRangeComponent, + SearchCheckListComponent, + SearchDateRangeComponent ], exports: [ ...ALFRESCO_SEARCH_DIRECTIVES, @@ -68,14 +72,18 @@ export const ALFRESCO_SEARCH_DIRECTIVES: any[] = [ SearchTextComponent, SearchRadioComponent, SearchSliderComponent, - SearchNumberRangeComponent + SearchNumberRangeComponent, + SearchCheckListComponent, + SearchDateRangeComponent ], entryComponents: [ SearchWidgetContainerComponent, SearchTextComponent, SearchRadioComponent, SearchSliderComponent, - SearchNumberRangeComponent + SearchNumberRangeComponent, + SearchCheckListComponent, + SearchDateRangeComponent ] }) export class SearchModule {} diff --git a/lib/core/app-config/schema.json b/lib/core/app-config/schema.json index 711c7650d6..6e77397b17 100644 --- a/lib/core/app-config/schema.json +++ b/lib/core/app-config/schema.json @@ -480,21 +480,25 @@ "search": { "description": "Search configuration parameters", "type": "object", + "required": [ "categories" ], "properties": { "include": { "type": "array", + "minItems": 1, "items": { "type": "string" } }, "fields": { "type": "array", + "minItems": 1, "items": { "type": "string" } }, "filterQueries": { "type": "array", + "minItems": 1, "items": { "type": "object", "required": [ "query" ], @@ -504,20 +508,33 @@ } }, "facetFields": { - "type": "object", - "required": [ "facets" ], - "properties": { - "facets": { - "type": "array", - "items": { - "type": "object", - "required": [ "field", "mincount", "label" ], - "properties": { - "field": { "type": "string" }, - "mincount": { "type": "integer" }, - "label": { "type": "string" } - } - } + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ "field", "mincount", "label" ], + "properties": { + "field": { + "type": "string", + "description": "This specifies the facet field." + }, + "mincount": { + "type": "integer", + "description": "This specifies the minimum count required for a facet field to be included in the response. The default value is 1." + }, + "label": { + "type": "string", + "description": "This specifies the label to include in place of the facet field." + }, + "prefix": { + "type": "string", + "description": "This restricts the possible constraints to only indexed values with a specified prefix." + }, + "limit": { + "type": "integer", + "description": "Maximum number of results" + }, + "offset": { "type": "integer" } } } }, @@ -532,36 +549,29 @@ } } }, - "query": { - "type": "object", - "required": [ "categories" ], - "properties": { - "categories": { - "type": "array", - "minItems": 1, - "items": { + "categories": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ "id", "name" ], + "properties": { + "id": { "type": "string" }, + "name": { "type": "string" }, + "enabled": { "type": "boolean" }, + "expanded": { "type": "boolean" }, + "component": { "type": "object", - "required": [ "id", "name" ], + "required": [ "selector", "settings" ], "properties": { - "id": { "type": "string" }, - "name": { "type": "string" }, - "enabled": { "type": "boolean" }, - "expanded": { "type": "boolean" }, - "component": { - "type": "object", - "required": [ "selector", "settings" ], - "properties": { - "selector": { "type": "string" }, - "settings": { "type": "object" } - } - } + "selector": { "type": "string" }, + "settings": { "type": "object" } } } } } } } - } } }