mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-29 04:20:00 +00:00
94 lines
2.8 KiB
JavaScript
94 lines
2.8 KiB
JavaScript
function highlightResults(result, index, keyword)
|
|
{
|
|
var content = result[index].schema;
|
|
if (keyword)
|
|
keyword = keyword.replace("+", "").replace("-", "");
|
|
var query = new RegExp("(" + keyword + ")", "gim");
|
|
var i = content.indexOf(keyword);
|
|
var len = content.length;
|
|
if (len > 500)
|
|
{
|
|
if ((len - i) < 500)
|
|
{
|
|
content = content.substring((len - 500), len);
|
|
}
|
|
else
|
|
{
|
|
content = content.substring(i, 500+i);
|
|
}
|
|
}
|
|
var newContent = content.replace(query, "<b>$1</b>");
|
|
result[index].schema = newContent;
|
|
var urn = result[index].urn;
|
|
if (urn)
|
|
{
|
|
var newUrn = urn.replace(query, "<b>$1</b>");
|
|
result[index].urn = newUrn;
|
|
}
|
|
};
|
|
|
|
App.SearchRoute = Ember.Route.extend({
|
|
queryParams: {
|
|
category: {
|
|
refreshModel: true
|
|
},
|
|
keywords: {
|
|
refreshModel: true
|
|
},
|
|
source: {
|
|
refreshModel: true
|
|
},
|
|
page: {
|
|
refreshModel: true
|
|
}
|
|
},
|
|
model: function(params) {
|
|
var searchController = this.controllerFor('search')
|
|
searchController.set('loading', true);
|
|
var q;
|
|
if (params)
|
|
{
|
|
q = params;
|
|
}
|
|
else
|
|
{
|
|
q = convertQueryStringToObject();
|
|
}
|
|
|
|
var keyword = atob(q.keywords);
|
|
var url = 'api/v1/search' + '?page=' + params.page + "&keyword=" + keyword;
|
|
if(q.category) {
|
|
url += ("&category=" + q.category.toLowerCase());
|
|
currentTab = q.category.toProperCase();
|
|
updateActiveTab();
|
|
}
|
|
if(q.source) {
|
|
url += '&source=' + q.source;
|
|
}
|
|
$.get(url, function(data) {
|
|
if (data && data.status == "ok") {
|
|
var result = data.result;
|
|
var keywords = result.keywords;
|
|
window.g_currentCategory = result.category;
|
|
updateSearchCategories(result.category);
|
|
for(var index = 0; index < result.data.length; index++) {
|
|
var schema = result.data[index].schema;
|
|
if (schema) {
|
|
result.data[index].originalSchema = schema;
|
|
highlightResults(result.data, index, keyword);
|
|
}
|
|
}
|
|
searchController.set('model', result);
|
|
searchController.set('keyword', keyword);
|
|
searchController.set('isMetric', false);
|
|
if (result.data.length > 0) {
|
|
searchController.set('showNoResult', false);
|
|
} else {
|
|
searchController.set('showNoResult', true);
|
|
}
|
|
searchController.set('loading', false)
|
|
}
|
|
});
|
|
}
|
|
});
|