use text input for filtering, again
This commit is contained in:
@@ -63,7 +63,7 @@ public class PdbController implements HardcodedValues, CollectionUtils {
|
||||
|
||||
@RequestMapping(path = "/autocomplete", //
|
||||
method = RequestMethod.GET, //
|
||||
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, // APPLICATION_FORM_URLENCODED_VALUE
|
||||
consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, // APPLICATION_JSON_UTF8_VALUE
|
||||
produces = MediaType.APPLICATION_JSON_UTF8_VALUE //
|
||||
)
|
||||
@ResponseBody
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
<head>
|
||||
<script type="text/javascript" src="js/jquery-3.1.1.min.js"></script>
|
||||
<script type="text/javascript" src="js/search.js"></script>
|
||||
<script type="text/javascript" src="js/mustache.min.js"></script>
|
||||
<script type="text/javascript" src="js/autocomplete.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="css/typography.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/design.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/icons.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/loading.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/autocomplete.min.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
@@ -15,29 +16,14 @@
|
||||
<div id="logo">LOGO</div>
|
||||
</div>
|
||||
<div id="search-bar">
|
||||
<div id="filter-bar">
|
||||
<button id="add-filter">add</button>
|
||||
</div>
|
||||
|
||||
<div id="button-bar">
|
||||
<button id="search-submit"><i class="fa fa-search"> Search</i></button>
|
||||
<div id="search-input-wrapper">
|
||||
<input id="search-input" data-autocomplete="autocomplete"
|
||||
data-autocomplete-empty-message="nothing found" />
|
||||
</div>
|
||||
<button id="search-submit"><i class="fa fa-search"> Search</i></button>
|
||||
</div>
|
||||
<div id="result-view">
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:none">
|
||||
<div id="template-filter">
|
||||
<div class="filter">
|
||||
<select class="template-filter-field" name="filter-field" id="filter-field">
|
||||
{{#fields}}
|
||||
<option name="{{name}}">{{name}}</option>
|
||||
{{/fields}}
|
||||
</select>
|
||||
<select class="template-filter-values" name="filter-values" id="filter-values" multiple="multiple">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -3,99 +3,30 @@ $(document).ready(function(){
|
||||
|
||||
$('#search-submit').click(plot);
|
||||
|
||||
initFilter();
|
||||
|
||||
|
||||
AutoComplete({
|
||||
HttpMethod: "GET",
|
||||
Delay: 300,
|
||||
_QueryArg: function() {
|
||||
var caretIndex = document.getElementById('search-input').selectionStart;
|
||||
return 'caretIndex=' + caretIndex + '&query';
|
||||
},
|
||||
_Post: function(response) {
|
||||
var result = [];
|
||||
var responseObject = JSON.parse(response);
|
||||
responseObject['proposals'].forEach(function(item, index){
|
||||
var proposal = {};
|
||||
proposal['Label'] = item.value;
|
||||
proposal['Value'] = item.proposedQuery;
|
||||
|
||||
result.push(proposal);
|
||||
});
|
||||
|
||||
console.log(JSON.stringify(result));
|
||||
return result;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
function initFilter() {
|
||||
|
||||
var successCallback = function (fields) {
|
||||
|
||||
var fieldsView = [{name: ""}];
|
||||
fields.forEach(function(item, index){
|
||||
fieldsView.push( {name: item} );
|
||||
});
|
||||
|
||||
var template = $('#template-filter').html();
|
||||
var view = {
|
||||
fields: fieldsView
|
||||
};
|
||||
|
||||
var rendered = Mustache.render(template, view);
|
||||
$('#filter-bar').append(rendered);
|
||||
|
||||
$('#filter-values').hide();
|
||||
|
||||
$('#filter-field').change(function() {
|
||||
if ($(this).val() == ""){
|
||||
$('#filter-values').hide();
|
||||
}else{
|
||||
addFieldValues($(this).val());
|
||||
}
|
||||
});
|
||||
|
||||
$('#add-filter').click(function(){
|
||||
var field = $('#filter-field').val();
|
||||
var values = $('#filter-values').val();
|
||||
|
||||
if (field != ""
|
||||
&& values != [] )
|
||||
{
|
||||
var query = "";
|
||||
values.forEach(function (value, index) {
|
||||
if (query.length > 0)
|
||||
{
|
||||
query += ",";
|
||||
}
|
||||
query += field+"="+value;
|
||||
} );
|
||||
$('#filter-bar').append(query);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
getFields( successCallback);
|
||||
}
|
||||
|
||||
function addFieldValues(field){
|
||||
|
||||
var params = {};
|
||||
params['query'] = "";
|
||||
|
||||
var successCallback = function (values){
|
||||
$('#result-view').text("SUCCESS: " + JSON.stringify(values));
|
||||
|
||||
values.forEach(function (item, index){
|
||||
$('#filter-values').append($('<option>', {
|
||||
value: item,
|
||||
text : item
|
||||
}));
|
||||
});
|
||||
|
||||
$('#filter-values').show();
|
||||
};
|
||||
|
||||
var errorCallback = function (){
|
||||
$('#result-view').text("FAILED: " + JSON.stringify(e));
|
||||
};
|
||||
|
||||
getJson("fields/"+field+"/values", params, successCallback);
|
||||
}
|
||||
|
||||
function getFields( successCallback) {
|
||||
|
||||
var errorCallback = function (){
|
||||
$('#result-view').text("FAILED: " + JSON.stringify(e));
|
||||
};
|
||||
|
||||
var params = {};
|
||||
params['query'] = "";
|
||||
|
||||
getJson("fields", params, successCallback, errorCallback)
|
||||
}
|
||||
|
||||
function showLoadingIcon()
|
||||
{
|
||||
$('#result-view').html("<div class='center'><div class='uil-cube-css' style='-webkit-transform:scale(0.41)'><div /><div></div><div></div><div></div></div></div>");
|
||||
@@ -110,7 +41,6 @@ function plot(event){
|
||||
request['query'] = $('#search-input').val();
|
||||
request['height'] = $('#result-view').height()-10;
|
||||
request['width'] = $('#result-view').width()-10;
|
||||
request['groupBy'] = $('input[name=groupBy]:checked').val();
|
||||
|
||||
var success = function(response){
|
||||
|
||||
@@ -137,15 +67,3 @@ function postJson(url, requestData, successCallback, errorCallback) {
|
||||
.fail(errorCallback);
|
||||
}
|
||||
|
||||
function getJson(url, requestData, successCallback, errorCallback) {
|
||||
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: url,
|
||||
data: requestData,
|
||||
contentType: 'application/json'
|
||||
})
|
||||
.done(successCallback)
|
||||
.fail(errorCallback);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
dependencies {
|
||||
compile project(':pdb-api')
|
||||
compile 'org.lucares:ludb:1.0.20170101101722'
|
||||
compile 'org.lucares:ludb:1.0.20170207192657'
|
||||
compile 'com.fasterxml.jackson.core:jackson-databind:2.8.6'
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user