Advertisement
Guest User

Untitled

a guest
Aug 26th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1. var self = this;
  2. var searchTerm = this.searchTerm;
  3. return self.getElasticData(searchTerm)
  4. .then(function(elasticData) {
  5. var createObjectTasks = [];
  6. _.each(elasticData.hits.hits, function(elasticDataItem) {
  7. var bodySource = elasticDataItem._source;
  8. var elasticDatabaseId = elasticDataItem._id;
  9.  
  10. var elasticBody = bodySource.body;
  11. var highlightTextFirstPosition = elasticDataItem.highlight.body[0];
  12. var highlightTextArray = elasticDataItem.highlight.body;
  13. var foundQtyInHighlight = highlightTextArray.length;
  14.  
  15. var searchNotFoundDescription = "Неизвестный источник";
  16.  
  17. var getDescriptionAsyncResult;
  18. if(bodySource.targetId){
  19. var loadID = bodySource.targetId instanceof Array ? bodySource.targetId[0] : bodySource.targetId;
  20. getDescriptionAsyncResult = self.factory.load(loadID)
  21. .then(function(targetObject) {
  22. // here you can use the result of promiseB
  23. if (targetObject) {
  24. return targetObject.description;
  25. }
  26. else return searchNotFoundDescription;
  27. })
  28. .catch(function() {
  29. return Promise.resolve(searchNotFoundDescription)
  30. })
  31. }
  32. else if (bodySource.filePath){
  33. getDescriptionAsyncResult = Promise.resolve(bodySource.filePath)
  34. }
  35.  
  36. //_.each(highlightTextArray,
  37. //function(highlightText){
  38. function(highlightTextFirstPosition){
  39. createObjectTasks.push(
  40. getDescriptionAsyncResult
  41. .then(function(foundDescription) {
  42. return self.factory.newObject('system-elastic-search-item', {
  43. //bodyData: highlightText[0],
  44. bodyData: highlightTextFirstPosition,
  45. parentDocId: bodySource.targetId,
  46. resultDescription: foundDescription,
  47. elasticId: elasticDatabaseId,
  48. foundQtyInHighlight: foundQtyInHighlight,
  49.  
  50. //возможно не надо тащить текст, а тянуть его для конкретного ID из эластик
  51. rawDataText: elasticBody
  52. })
  53. .then(function (eli) {
  54. // if(eli.setReadOnly)
  55. // eli.setReadOnly(true);
  56. return Promise.resolve(eli);
  57. });
  58. })
  59. );
  60. };
  61. //);
  62. });
  63.  
  64. return Promise.all(createObjectTasks)
  65. .then(function(elasticDataAsElasticItems) {
  66. var begin = params.filter.offset;
  67. var end = (params.filter.offset + params.filter.limit);
  68. //var end = params.filter.limit;
  69. elasticDataAsElasticItems = elasticDataAsElasticItems.slice(begin, end);
  70. return Promise.resolve({
  71. rows:elasticDataAsElasticItems,
  72. total: createObjectTasks.length
  73. });
  74. });
  75. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement