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, "$1"); result[index].schema = newContent; var urn = result[index].urn; var newUrn = urn.replace(query, "$1"); 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 = q.keywords; var url = 'api/v1/search/' + keyword + '?page=' + params.page; 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; for(var index = 0; index < result.data.length; index++) { var schema = result.data[index].schema; if (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) } }); } });