@atlaskit/global-search
Version:
A cross-product search component (batteries included)
157 lines (133 loc) • 5.89 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.mapSearchResultsToUIGroups = exports.mapRecentResultsToUIGroups = exports.MAX_RECENT_RESULTS_TO_SHOW = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _Result = require("../../model/Result");
var _SearchResultsUtil = require("../SearchResultsUtil");
var _messages = require("../../messages");
var _contextIdentifiersHelper = require("../common/contextIdentifiersHelper");
var _experimentUtils = require("../../util/experiment-utils");
var DEFAULT_MAX_OBJECTS = 8;
var MAX_CONTAINERS = 6;
var MAX_PEOPLE = 3;
var MAX_RECENT_RESULTS_TO_SHOW = 3;
exports.MAX_RECENT_RESULTS_TO_SHOW = MAX_RECENT_RESULTS_TO_SHOW;
var DEFAULT_JIRA_RESULTS_MAP = {
objects: [],
containers: [],
people: []
};
var isEmpty = function isEmpty() {
var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
return !arr.length;
};
var hasNoResults = function hasNoResults() {
var objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var poeple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var containers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
return isEmpty(objects) && isEmpty(poeple) && isEmpty(containers);
};
var sliceResults = function sliceResults(resultsMap, abTest) {
var _ref = resultsMap ? resultsMap : DEFAULT_JIRA_RESULTS_MAP,
objects = _ref.objects,
containers = _ref.containers,
people = _ref.people;
var _map = [{
items: objects,
count: (0, _experimentUtils.getJiraMaxObjects)(abTest, DEFAULT_MAX_OBJECTS)
}, {
items: people,
count: MAX_PEOPLE
}, {
items: containers,
count: MAX_CONTAINERS
}].map(function (_ref2) {
var items = _ref2.items,
count = _ref2.count;
return (0, _SearchResultsUtil.take)(items, count);
}),
_map2 = (0, _slicedToArray2.default)(_map, 3),
objectsToDisplay = _map2[0],
peopleToDisplay = _map2[1],
containersToDisplay = _map2[2];
return {
objectsToDisplay: objectsToDisplay,
containersToDisplay: containersToDisplay,
peopleToDisplay: peopleToDisplay
};
};
var mapRecentResultsToUIGroups = function mapRecentResultsToUIGroups(recentlyViewedObjects, searchSessionId, features, appPermission) {
var withSessionId = recentlyViewedObjects !== null ? (0, _contextIdentifiersHelper.attachJiraContextIdentifiers)(searchSessionId, recentlyViewedObjects) : recentlyViewedObjects;
var _sliceResults = sliceResults(withSessionId, features.abTest),
objectsToDisplay = _sliceResults.objectsToDisplay,
peopleToDisplay = _sliceResults.peopleToDisplay,
containersToDisplay = _sliceResults.containersToDisplay;
return [{
items: objectsToDisplay,
key: 'issues',
title: _messages.messages.jira_recent_issues_heading,
totalSize: objectsToDisplay.length,
showTotalSize: false // Jira doesn't support search extensions yet
}, {
items: containersToDisplay,
key: 'containers',
title: appPermission && !appPermission.hasSoftwareAccess ? _messages.messages.jira_recent_core_containers : _messages.messages.jira_recent_containers,
totalSize: containersToDisplay.length,
showTotalSize: false
}, {
items: peopleToDisplay,
key: 'people',
title: _messages.messages.jira_recent_people_heading,
totalSize: peopleToDisplay.length,
showTotalSize: false
}];
};
exports.mapRecentResultsToUIGroups = mapRecentResultsToUIGroups;
var mapSearchResultsToUIGroups = function mapSearchResultsToUIGroups(searchResultsObjects, searchSessionId, features, appPermission, query) {
var withSessionId = searchResultsObjects !== null ? (0, _contextIdentifiersHelper.attachJiraContextIdentifiers)(searchSessionId, searchResultsObjects) : searchResultsObjects;
var _sliceResults2 = sliceResults(withSessionId, features.abTest),
objectsToDisplay = _sliceResults2.objectsToDisplay,
peopleToDisplay = _sliceResults2.peopleToDisplay,
containersToDisplay = _sliceResults2.containersToDisplay;
return [{
items: objectsToDisplay,
key: 'issues',
title: _messages.messages.jira_search_result_issues_heading,
showTotalSize: false,
// Jira doesn't support search extensions yet
totalSize: objectsToDisplay.length
}].concat((0, _toConsumableArray2.default)(!hasNoResults(objectsToDisplay, peopleToDisplay, containersToDisplay) ? [{
items: [{
resultType: _Result.ResultType.JiraIssueAdvancedSearch,
resultId: 'search-jira',
name: 'jira',
href: (0, _SearchResultsUtil.getJiraAdvancedSearchUrl)({
entityType: _SearchResultsUtil.JiraEntityTypes.Issues,
query: query
}),
analyticsType: _Result.AnalyticsType.LinkPostQueryAdvancedSearchJira,
contentType: _Result.ContentType.JiraIssue
}],
key: 'issue-advanced',
title: isEmpty(objectsToDisplay) ? _messages.messages.jira_search_result_issues_heading : undefined,
showTotalSize: false,
totalSize: 1
}] : []), [{
items: containersToDisplay,
key: 'containers',
title: appPermission && !appPermission.hasSoftwareAccess ? _messages.messages.jira_search_result_core_containers_heading : _messages.messages.jira_search_result_containers_heading,
showTotalSize: false,
totalSize: containersToDisplay.length
}, {
items: peopleToDisplay,
key: 'people',
title: _messages.messages.jira_search_result_people_heading,
showTotalSize: false,
totalSize: peopleToDisplay.length
}]);
};
exports.mapSearchResultsToUIGroups = mapSearchResultsToUIGroups;