UNPKG

rizzo-next

Version:

The next generation of Lonely Planet's style guide and pattern library.

88 lines (70 loc) 2.55 kB
"use strict"; 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;