mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-06 22:04:16 +00:00
highlight the filter by search result
This commit is contained in:
parent
ad73163c0e
commit
49b54cff1a
@ -59,7 +59,7 @@ public class Search extends Controller
|
||||
}
|
||||
catch(NumberFormatException e)
|
||||
{
|
||||
Logger.error("Dataset Controller getPagedDatasets wrong page parameter. Error message: " +
|
||||
Logger.error("Dataset Controller searchByKeyword wrong page parameter. Error message: " +
|
||||
e.getMessage());
|
||||
page = 1;
|
||||
}
|
||||
@ -79,13 +79,14 @@ public class Search extends Controller
|
||||
}
|
||||
catch(NumberFormatException e)
|
||||
{
|
||||
Logger.error("Dataset Controller getPagedDatasets wrong page parameter. Error message: " +
|
||||
Logger.error("Dataset Controller searchByKeyword wrong page parameter. Error message: " +
|
||||
e.getMessage());
|
||||
size = 10;
|
||||
}
|
||||
}
|
||||
|
||||
result.put("status", "ok");
|
||||
Boolean isDefault = false;
|
||||
if (StringUtils.isBlank(category))
|
||||
{
|
||||
category = "datasets";
|
||||
@ -94,25 +95,47 @@ public class Search extends Controller
|
||||
{
|
||||
source = "all";
|
||||
}
|
||||
else if (source.equalsIgnoreCase("default"))
|
||||
{
|
||||
source = "all";
|
||||
isDefault = true;
|
||||
}
|
||||
if (category.toLowerCase().equalsIgnoreCase("metric"))
|
||||
{
|
||||
result.set("result", SearchDAO.getPagedMetricByKeyword(keyword, page, size));
|
||||
result.set("result", SearchDAO.getPagedMetricByKeyword(category, keyword, page, size));
|
||||
}
|
||||
else if (category.toLowerCase().equalsIgnoreCase("flows"))
|
||||
{
|
||||
result.set("result", SearchDAO.getPagedFlowByKeyword(keyword, page, size));
|
||||
result.set("result", SearchDAO.getPagedFlowByKeyword(category, keyword, page, size));
|
||||
}
|
||||
else if (category.toLowerCase().equalsIgnoreCase("jobs"))
|
||||
{
|
||||
result.set("result", SearchDAO.getPagedJobByKeyword(keyword, page, size));
|
||||
result.set("result", SearchDAO.getPagedJobByKeyword(category, keyword, page, size));
|
||||
}
|
||||
else if (category.toLowerCase().equalsIgnoreCase("comments"))
|
||||
{
|
||||
result.set("result", SearchDAO.getPagedCommentsByKeyword(keyword, page, size));
|
||||
result.set("result", SearchDAO.getPagedCommentsByKeyword(category, keyword, page, size));
|
||||
}
|
||||
else
|
||||
{
|
||||
result.set("result", SearchDAO.getPagedDatasetByKeyword(keyword, source, page, size));
|
||||
ObjectNode node = SearchDAO.getPagedDatasetByKeyword(category, keyword, source, page, size);
|
||||
if (isDefault && node != null && node.has("count"))
|
||||
{
|
||||
Long count = node.get("count").asLong();
|
||||
if (count != null && count == 0)
|
||||
{
|
||||
node = SearchDAO.getPagedFlowByKeyword("flows", keyword, page, size);
|
||||
if (node!= null && node.has("count"))
|
||||
{
|
||||
Long flowCount = node.get("count").asLong();
|
||||
if (flowCount != null && flowCount == 0)
|
||||
{
|
||||
node = SearchDAO.getPagedJobByKeyword("jobs", keyword, page, size);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
result.set("result", node);
|
||||
}
|
||||
|
||||
return ok(result);
|
||||
|
||||
@ -162,7 +162,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
|
||||
return autoCompleteList;
|
||||
}
|
||||
|
||||
public static ObjectNode getPagedDatasetByKeyword(String keyword, String source, int page, int size)
|
||||
public static ObjectNode getPagedDatasetByKeyword(String category, String keyword, String source, int page, int size)
|
||||
{
|
||||
List<Dataset> pagedDatasets = new ArrayList<Dataset>();
|
||||
final JdbcTemplate jdbcTemplate = getJdbcTemplate();
|
||||
@ -212,6 +212,8 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
|
||||
ObjectNode resultNode = Json.newObject();
|
||||
resultNode.put("count", count);
|
||||
resultNode.put("page", page);
|
||||
resultNode.put("category", category);
|
||||
resultNode.put("source", source);
|
||||
resultNode.put("itemsPerPage", size);
|
||||
resultNode.put("totalPages", (int)Math.ceil(count/((double)size)));
|
||||
resultNode.set("data", Json.toJson(pagedDatasets));
|
||||
@ -223,7 +225,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ObjectNode getPagedMetricByKeyword(String keyword, int page, int size)
|
||||
public static ObjectNode getPagedMetricByKeyword(final String category, String keyword, int page, int size)
|
||||
{
|
||||
List<Metric> pagedMetrics = new ArrayList<Metric>();
|
||||
final JdbcTemplate jdbcTemplate = getJdbcTemplate();
|
||||
@ -290,6 +292,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
|
||||
ObjectNode resultNode = Json.newObject();
|
||||
resultNode.put("count", count);
|
||||
resultNode.put("page", page);
|
||||
resultNode.put("category", category);
|
||||
resultNode.put("itemsPerPage", size);
|
||||
resultNode.put("totalPages", (int)Math.ceil(count/((double)size)));
|
||||
resultNode.set("data", Json.toJson(pagedMetrics));
|
||||
@ -301,7 +304,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ObjectNode getPagedFlowByKeyword(String keyword, int page, int size)
|
||||
public static ObjectNode getPagedFlowByKeyword(String category, String keyword, int page, int size)
|
||||
{
|
||||
final List<FlowJob> pagedFlows = new ArrayList<FlowJob>();
|
||||
final JdbcTemplate jdbcTemplate = getJdbcTemplate();
|
||||
@ -349,6 +352,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
|
||||
resultNode.put("count", count);
|
||||
resultNode.put("isFlowJob", true);
|
||||
resultNode.put("page", page);
|
||||
resultNode.put("category", category);
|
||||
resultNode.put("itemsPerPage", size);
|
||||
resultNode.put("totalPages", (int)Math.ceil(count/((double)size)));
|
||||
resultNode.set("data", Json.toJson(pagedFlows));
|
||||
@ -360,7 +364,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ObjectNode getPagedJobByKeyword(String keyword, int page, int size)
|
||||
public static ObjectNode getPagedJobByKeyword(String category, String keyword, int page, int size)
|
||||
{
|
||||
final List<FlowJob> pagedFlowJobs = new ArrayList<FlowJob>();
|
||||
final JdbcTemplate jdbcTemplate = getJdbcTemplate();
|
||||
@ -413,6 +417,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
|
||||
resultNode.put("count", count);
|
||||
resultNode.put("isFlowJob", true);
|
||||
resultNode.put("page", page);
|
||||
resultNode.put("category", category);
|
||||
resultNode.put("itemsPerPage", size);
|
||||
resultNode.put("totalPages", (int)Math.ceil(count/((double)size)));
|
||||
resultNode.set("data", Json.toJson(pagedFlowJobs));
|
||||
@ -424,7 +429,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ObjectNode getPagedCommentsByKeyword(String keyword, int page, int size)
|
||||
public static ObjectNode getPagedCommentsByKeyword(String category, String keyword, int page, int size)
|
||||
{
|
||||
List<Dataset> pagedDatasets = new ArrayList<Dataset>();
|
||||
final JdbcTemplate jdbcTemplate = getJdbcTemplate();
|
||||
@ -466,6 +471,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
|
||||
ObjectNode resultNode = Json.newObject();
|
||||
resultNode.put("count", count);
|
||||
resultNode.put("page", page);
|
||||
resultNode.put("category", category);
|
||||
resultNode.put("itemsPerPage", size);
|
||||
resultNode.put("totalPages", (int)Math.ceil(count/((double)size)));
|
||||
resultNode.set("data", Json.toJson(pagedDatasets));
|
||||
|
||||
@ -1648,60 +1648,60 @@
|
||||
<div class="btn-group" role="group">
|
||||
<button
|
||||
type="button"
|
||||
{{bind-attr class=":btn :dropdown-toggle :btn-default"}}
|
||||
{{bind-attr class=":btn :dropdown-toggle isDatasets:btn-primary:btn-default"}}
|
||||
data-toggle="dropdown"
|
||||
aria-expanded="false">
|
||||
Datasets
|
||||
{{datasetTitle}}
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li>
|
||||
{{#link-to 'search' (query-params category="Dataset" source="all" page=1)}}
|
||||
{{#link-to 'search' (query-params category="Datasets" source="all" page=1)}}
|
||||
All
|
||||
{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to 'search' (query-params category="Dataset" source="hdfs" page=1)}}
|
||||
{{#link-to 'search' (query-params category="Datasets" source="HDFS" page=1)}}
|
||||
HDFS
|
||||
{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to 'search' (query-params category="Dataset" source="oracle" page=1)}}
|
||||
{{#link-to 'search' (query-params category="Datasets" source="Oracle" page=1)}}
|
||||
Oracle
|
||||
{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to 'search' (query-params category="Dataset" source="teradata" page=1)}}
|
||||
{{#link-to 'search' (query-params category="Datasets" source="Teradata" page=1)}}
|
||||
Teradata
|
||||
{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to 'search' (query-params category="Dataset" source="espresso" page=1)}}
|
||||
{{#link-to 'search' (query-params category="Datasets" source="Espresso" page=1)}}
|
||||
Espresso
|
||||
{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to 'search' (query-params category="Dataset" source="salesforce" page=1)}}
|
||||
{{#link-to 'search' (query-params category="Datasets" source="Salesforce" page=1)}}
|
||||
Salesforce
|
||||
{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to 'search' (query-params category="Dataset" source="kafka" page=1)}}
|
||||
{{#link-to 'search' (query-params category="Datasets" source="Kafka" page=1)}}
|
||||
Kafka
|
||||
{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to 'search' (query-params category="Dataset" source="pinot" page=1)}}
|
||||
{{#link-to 'search' (query-params category="Datasets" source="Pinot" page=1)}}
|
||||
Pinot
|
||||
{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to 'search' (query-params category="Dataset" source="hive" page=1)}}
|
||||
{{#link-to 'search' (query-params category="Datasets" source="Hive" page=1)}}
|
||||
Hive
|
||||
{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
{{#link-to 'search' (query-params category="Dataset" source="external" page=1)}}
|
||||
{{#link-to 'search' (query-params category="Datasets" source="External" page=1)}}
|
||||
External
|
||||
{{/link-to}}
|
||||
</li>
|
||||
@ -1709,19 +1709,19 @@
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default"
|
||||
{{bind-attr class=":btn isComments:btn-primary:btn-default"}}
|
||||
{{action 'switchSearchToComments' keyword}}>
|
||||
Comments
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default"
|
||||
{{bind-attr class=":btn isFlows:btn-primary:btn-default"}}
|
||||
{{action 'switchSearchToFlow' keyword}}>
|
||||
Flows
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default"
|
||||
{{bind-attr class=":btn isJobs:btn-primary:btn-default"}}
|
||||
{{action 'switchSearchToJob' keyword}}>
|
||||
Jobs
|
||||
</button>
|
||||
|
||||
@ -7,6 +7,56 @@ App.SearchController = Ember.Controller.extend({
|
||||
],
|
||||
keywords: null,
|
||||
category: null,
|
||||
datasetTitle: function(){
|
||||
var model = this.get("model");
|
||||
if (model && model.source) {
|
||||
if (model.source.toLocaleLowerCase() != 'all')
|
||||
{
|
||||
return model.source;
|
||||
}
|
||||
}
|
||||
return "Datasets";
|
||||
}.property('model.source'),
|
||||
isDatasets: function(){
|
||||
var model = this.get("model");
|
||||
if (model && model.category) {
|
||||
if (model.category.toLocaleLowerCase() === 'datasets')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}.property('model.category'),
|
||||
isComments: function(){
|
||||
var model = this.get("model");
|
||||
if (model && model.category) {
|
||||
if (model.category.toLocaleLowerCase() === 'comments')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}.property('model.category'),
|
||||
isFlows: function(){
|
||||
var model = this.get("model");
|
||||
if (model && model.category) {
|
||||
if (model.category.toLocaleLowerCase() === 'flows')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}.property('model.category'),
|
||||
isJobs: function(){
|
||||
var model = this.get("model");
|
||||
if (model && model.category) {
|
||||
if (model.category.toLocaleLowerCase() === 'jobs')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}.property('model.category'),
|
||||
source: null,
|
||||
page: null,
|
||||
loading: true,
|
||||
|
||||
@ -40,7 +40,8 @@
|
||||
if (inputObj) {
|
||||
var keyword = inputObj.val();
|
||||
if (keyword) {
|
||||
window.location = '/#/search?keywords=' + keyword + '&category=Dataset&source=all&page=1';
|
||||
window.location = '/#/search?keywords=' + keyword +
|
||||
'&category=Datasets&source=default&page=1';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -235,7 +236,8 @@
|
||||
var keyword = inputObj.val();
|
||||
if (keyword)
|
||||
{
|
||||
window.location = '/#/search?keywords=' + keyword + '&category=Datasets&source=all&page=1';
|
||||
window.location = '/#/search?keywords=' + keyword +
|
||||
'&category=Datasets&source=default&page=1';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user