highlight the filter by search result

This commit is contained in:
jbai 2016-03-02 15:06:10 -08:00
parent ad73163c0e
commit 49b54cff1a
5 changed files with 110 additions and 29 deletions

View File

@ -59,7 +59,7 @@ public class Search extends Controller
} }
catch(NumberFormatException e) 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()); e.getMessage());
page = 1; page = 1;
} }
@ -79,13 +79,14 @@ public class Search extends Controller
} }
catch(NumberFormatException e) 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()); e.getMessage());
size = 10; size = 10;
} }
} }
result.put("status", "ok"); result.put("status", "ok");
Boolean isDefault = false;
if (StringUtils.isBlank(category)) if (StringUtils.isBlank(category))
{ {
category = "datasets"; category = "datasets";
@ -94,25 +95,47 @@ public class Search extends Controller
{ {
source = "all"; source = "all";
} }
else if (source.equalsIgnoreCase("default"))
{
source = "all";
isDefault = true;
}
if (category.toLowerCase().equalsIgnoreCase("metric")) 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")) 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")) 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")) else if (category.toLowerCase().equalsIgnoreCase("comments"))
{ {
result.set("result", SearchDAO.getPagedCommentsByKeyword(keyword, page, size)); result.set("result", SearchDAO.getPagedCommentsByKeyword(category, keyword, page, size));
} }
else 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); return ok(result);

View File

@ -162,7 +162,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
return autoCompleteList; 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>(); List<Dataset> pagedDatasets = new ArrayList<Dataset>();
final JdbcTemplate jdbcTemplate = getJdbcTemplate(); final JdbcTemplate jdbcTemplate = getJdbcTemplate();
@ -212,6 +212,8 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
ObjectNode resultNode = Json.newObject(); ObjectNode resultNode = Json.newObject();
resultNode.put("count", count); resultNode.put("count", count);
resultNode.put("page", page); resultNode.put("page", page);
resultNode.put("category", category);
resultNode.put("source", source);
resultNode.put("itemsPerPage", size); resultNode.put("itemsPerPage", size);
resultNode.put("totalPages", (int)Math.ceil(count/((double)size))); resultNode.put("totalPages", (int)Math.ceil(count/((double)size)));
resultNode.set("data", Json.toJson(pagedDatasets)); resultNode.set("data", Json.toJson(pagedDatasets));
@ -223,7 +225,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
return result; 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>(); List<Metric> pagedMetrics = new ArrayList<Metric>();
final JdbcTemplate jdbcTemplate = getJdbcTemplate(); final JdbcTemplate jdbcTemplate = getJdbcTemplate();
@ -290,6 +292,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
ObjectNode resultNode = Json.newObject(); ObjectNode resultNode = Json.newObject();
resultNode.put("count", count); resultNode.put("count", count);
resultNode.put("page", page); resultNode.put("page", page);
resultNode.put("category", category);
resultNode.put("itemsPerPage", size); resultNode.put("itemsPerPage", size);
resultNode.put("totalPages", (int)Math.ceil(count/((double)size))); resultNode.put("totalPages", (int)Math.ceil(count/((double)size)));
resultNode.set("data", Json.toJson(pagedMetrics)); resultNode.set("data", Json.toJson(pagedMetrics));
@ -301,7 +304,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
return result; 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 List<FlowJob> pagedFlows = new ArrayList<FlowJob>();
final JdbcTemplate jdbcTemplate = getJdbcTemplate(); final JdbcTemplate jdbcTemplate = getJdbcTemplate();
@ -349,6 +352,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
resultNode.put("count", count); resultNode.put("count", count);
resultNode.put("isFlowJob", true); resultNode.put("isFlowJob", true);
resultNode.put("page", page); resultNode.put("page", page);
resultNode.put("category", category);
resultNode.put("itemsPerPage", size); resultNode.put("itemsPerPage", size);
resultNode.put("totalPages", (int)Math.ceil(count/((double)size))); resultNode.put("totalPages", (int)Math.ceil(count/((double)size)));
resultNode.set("data", Json.toJson(pagedFlows)); resultNode.set("data", Json.toJson(pagedFlows));
@ -360,7 +364,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
return result; 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 List<FlowJob> pagedFlowJobs = new ArrayList<FlowJob>();
final JdbcTemplate jdbcTemplate = getJdbcTemplate(); final JdbcTemplate jdbcTemplate = getJdbcTemplate();
@ -413,6 +417,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
resultNode.put("count", count); resultNode.put("count", count);
resultNode.put("isFlowJob", true); resultNode.put("isFlowJob", true);
resultNode.put("page", page); resultNode.put("page", page);
resultNode.put("category", category);
resultNode.put("itemsPerPage", size); resultNode.put("itemsPerPage", size);
resultNode.put("totalPages", (int)Math.ceil(count/((double)size))); resultNode.put("totalPages", (int)Math.ceil(count/((double)size)));
resultNode.set("data", Json.toJson(pagedFlowJobs)); resultNode.set("data", Json.toJson(pagedFlowJobs));
@ -424,7 +429,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
return result; 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>(); List<Dataset> pagedDatasets = new ArrayList<Dataset>();
final JdbcTemplate jdbcTemplate = getJdbcTemplate(); final JdbcTemplate jdbcTemplate = getJdbcTemplate();
@ -466,6 +471,7 @@ public class SearchDAO extends AbstractMySQLOpenSourceDAO
ObjectNode resultNode = Json.newObject(); ObjectNode resultNode = Json.newObject();
resultNode.put("count", count); resultNode.put("count", count);
resultNode.put("page", page); resultNode.put("page", page);
resultNode.put("category", category);
resultNode.put("itemsPerPage", size); resultNode.put("itemsPerPage", size);
resultNode.put("totalPages", (int)Math.ceil(count/((double)size))); resultNode.put("totalPages", (int)Math.ceil(count/((double)size)));
resultNode.set("data", Json.toJson(pagedDatasets)); resultNode.set("data", Json.toJson(pagedDatasets));

View File

@ -1648,60 +1648,60 @@
<div class="btn-group" role="group"> <div class="btn-group" role="group">
<button <button
type="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" data-toggle="dropdown"
aria-expanded="false"> aria-expanded="false">
Datasets {{datasetTitle}}
<span class="caret"></span> <span class="caret"></span>
</button> </button>
<ul class="dropdown-menu" role="menu"> <ul class="dropdown-menu" role="menu">
<li> <li>
{{#link-to 'search' (query-params category="Dataset" source="all" page=1)}} {{#link-to 'search' (query-params category="Datasets" source="all" page=1)}}
All All
{{/link-to}} {{/link-to}}
</li> </li>
<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 HDFS
{{/link-to}} {{/link-to}}
</li> </li>
<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 Oracle
{{/link-to}} {{/link-to}}
</li> </li>
<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 Teradata
{{/link-to}} {{/link-to}}
</li> </li>
<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 Espresso
{{/link-to}} {{/link-to}}
</li> </li>
<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 Salesforce
{{/link-to}} {{/link-to}}
</li> </li>
<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 Kafka
{{/link-to}} {{/link-to}}
</li> </li>
<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 Pinot
{{/link-to}} {{/link-to}}
</li> </li>
<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 Hive
{{/link-to}} {{/link-to}}
</li> </li>
<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 External
{{/link-to}} {{/link-to}}
</li> </li>
@ -1709,19 +1709,19 @@
</div> </div>
<button <button
type="button" type="button"
class="btn btn-default" {{bind-attr class=":btn isComments:btn-primary:btn-default"}}
{{action 'switchSearchToComments' keyword}}> {{action 'switchSearchToComments' keyword}}>
Comments Comments
</button> </button>
<button <button
type="button" type="button"
class="btn btn-default" {{bind-attr class=":btn isFlows:btn-primary:btn-default"}}
{{action 'switchSearchToFlow' keyword}}> {{action 'switchSearchToFlow' keyword}}>
Flows Flows
</button> </button>
<button <button
type="button" type="button"
class="btn btn-default" {{bind-attr class=":btn isJobs:btn-primary:btn-default"}}
{{action 'switchSearchToJob' keyword}}> {{action 'switchSearchToJob' keyword}}>
Jobs Jobs
</button> </button>

View File

@ -7,6 +7,56 @@ App.SearchController = Ember.Controller.extend({
], ],
keywords: null, keywords: null,
category: 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, source: null,
page: null, page: null,
loading: true, loading: true,

View File

@ -40,7 +40,8 @@
if (inputObj) { if (inputObj) {
var keyword = inputObj.val(); var keyword = inputObj.val();
if (keyword) { 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(); var keyword = inputObj.val();
if (keyword) if (keyword)
{ {
window.location = '/#/search?keywords=' + keyword + '&category=Datasets&source=all&page=1'; window.location = '/#/search?keywords=' + keyword +
'&category=Datasets&source=default&page=1';
} }
} }
}); });