diff --git a/components/VFBMain.js b/components/VFBMain.js index 56ebdda25..09c393466 100644 --- a/components/VFBMain.js +++ b/components/VFBMain.js @@ -33,6 +33,7 @@ class VFBMain extends React.Component { constructor (props) { super(props); + this.datasourceConfiguration = require('./configuration/VFBMain/searchConfiguration').datasourceConfiguration; this.state = { canvasAvailable: false, @@ -54,7 +55,8 @@ class VFBMain extends React.Component { UIUpdated: true, wireframeVisible: false, downloadContentsVisible : true, - uploaderContentsVisible : true + uploaderContentsVisible : true, + searchDataSourceConfiguration : this.datasourceConfiguration }; this.addVfbId = this.addVfbId.bind(this); @@ -72,6 +74,7 @@ class VFBMain extends React.Component { this.handlerInstanceUpdate = this.handlerInstanceUpdate.bind(this); this.handleSceneAndTermInfoCallback = this.handleSceneAndTermInfoCallback.bind(this); this.instancesFromDifferentTemplates = this.instancesFromDifferentTemplates.bind(this); + this.filterSelection = this.filterSelection.bind(this); this.vfbLoadBuffer = []; this.tutorialRender = undefined; @@ -100,7 +103,6 @@ class VFBMain extends React.Component { this.searchStyle = require('./configuration/VFBMain/searchConfiguration').searchStyle; this.searchConfiguration = require('./configuration/VFBMain/searchConfiguration').searchConfiguration; - this.datasourceConfiguration = require('./configuration/VFBMain/searchConfiguration').datasourceConfiguration; this.queryResultsColMeta = require('./configuration/VFBMain/queryBuilderConfiguration').queryResultsColMeta; this.queryResultsColumns = require('./configuration/VFBMain/queryBuilderConfiguration').queryResultsColumns; @@ -1639,6 +1641,45 @@ class VFBMain extends React.Component { } } } + + lookupFilter (item, bq, filterValue){ + let lookup = "facets_annotation:" + item.key; + let re = new RegExp(lookup, 'g'); + let found = bq.match(re); + if ( found ){ + return bq.replace(found[0] + filterValue, ""); + } + return bq; + } + + filterSelection (item) { + let bq = this.state.searchDataSourceConfiguration.query_settings.bq; + + switch (item.enabled) { + case "disabled": + bq = this.lookupFilter(item, bq, this.searchConfiguration.filter_positive); + bq = this.lookupFilter(item, bq, this.searchConfiguration.filter_negative); + break; + case "positive": + bq = this.lookupFilter(item, bq, this.searchConfiguration.filter_negative); + bq += " facets_annotation:" + item.key + "^100"; + break; + case "negative": + bq = this.lookupFilter(item, bq, this.searchConfiguration.filter_positive); + bq += " facets_annotation:" + item.key + "^0.001"; + break; + default: + break; + } + let updatedConfiguration = Object.assign(this.state.searchDataSourceConfiguration, { + query_settings : { + ...this.state.searchDataSourceConfiguration.query_settings, + bq : bq + } + }); + this.setState({ searchDataSourceConfiguration : updatedConfiguration }) + + } render () { if ((this.state.tutorialWidgetVisible == true) && (this.tutorialRender == undefined)) { @@ -1759,9 +1800,10 @@ class VFBMain extends React.Component { + datasourceConfiguration={this.state.searchDataSourceConfiguration} /> diff --git a/components/configuration/VFBMain/searchConfiguration.js b/components/configuration/VFBMain/searchConfiguration.js index 859ef3327..cbc7189bd 100644 --- a/components/configuration/VFBMain/searchConfiguration.js +++ b/components/configuration/VFBMain/searchConfiguration.js @@ -60,7 +60,7 @@ var searchStyle = { singleResult: { "color": "white", "fontSize": "18px", - + "whiteSpace" : "normal", ":hover": { "color": "#11bffe", "background-color": "#252323", @@ -107,9 +107,12 @@ var searchConfiguration = { "resultsMapping": { "name": "label", - "id": "short_form" + "id": "short_form", + "labels" : "facets_annotation" }, "filters_expanded": true, + "filter_positive" : "^100", + "filter_negative" : "^0.001", "filters": [ { "key": "facets_annotation",