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)
|
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);
|
||||||
|
|||||||
@ -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));
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user