rizzo-next
Version:
The next generation of Lonely Planet's style guide and pattern library.
88 lines (70 loc) • 2.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _jquery = require("jquery");
var _jquery2 = _interopRequireDefault(_jquery);
var _search_server_actions = require("./search_server_actions");
var _search_server_actions2 = _interopRequireDefault(_search_server_actions);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var mergeResults = function mergeResults(query, searchResults, videoResults) {
// Best video results are videos whose name starts with the query text.
// They'll be listed first in the results.
var bestVideoResults = [];
if (query.length > 1) {
bestVideoResults = videoResults.filter(function (v) {
return v.name.toLowerCase().startsWith(query.toLowerCase());
});
var bestVideoResultIds = bestVideoResults.map(function (v) {
return v.id;
});
videoResults = videoResults.filter(function (v) {
return !bestVideoResultIds.includes(v.id);
});
}
var bestVideoResultCount = bestVideoResults.length;
var results = [];
// If we are under the '/video' path, always list video results first
if (window.location.pathname.toLowerCase().startsWith("/video")) {
results = bestVideoResults.concat(videoResults);
bestVideoResults = [];
videoResults = [];
}
// Merge results by alternating between them
while (bestVideoResults.length || searchResults.length) {
if (bestVideoResults.length) {
results.push(bestVideoResults.shift());
}
if (searchResults.length) {
results.push(searchResults.shift());
}
}
// Make sure at least 1 video result appears in the top 5
if (!bestVideoResultCount && videoResults.length) {
results.splice(4, 0, videoResults.shift());
}
return results;
};
var SearchApi = {
search: function search(query) {
var searchResults = null;
var videoResults = null;
_jquery2.default.ajax({
url: "https://www.lonelyplanet.com/search.json?q=" + query
}).done(function (results) {
searchResults = results;
if (videoResults) {
_search_server_actions2.default.fetched(mergeResults(query, searchResults, videoResults));
}
});
_jquery2.default.ajax({
url: "https://www.lonelyplanet.com/video/search.json?q=" + query
}).done(function (results) {
videoResults = results;
if (searchResults) {
_search_server_actions2.default.fetched(mergeResults(query, searchResults, videoResults));
}
});
}
};
exports.default = SearchApi;