1/** 2 * Created by Team Scry on 25/11/15. 3 */ 4'use strict'; 5 6angular.module('healthConsulApp') 7 .controller('ConversationCtrl', ['$scope', 'searchService', 'sharedService', '$window', 'Auth', '$location', 'userService', '$routeParams', 'searchFilterService', 'localStorageService', '$filter', 8 function ($scope, searchService, sharedService, $window, Auth, $location, userService, $routeParams, svcSearchMod, localStorageService, $filter) { 9 var postIds = []; 10 var msgOffset = 0; 11 var reference = null; 12 var searchObj = svcSearchMod.Search; 13 var msgMatchLevel = 0; 14 var isEmbedding = 0; 15 var terminateCall = false; 16 var urlObj = {}; 17 var searchParams = {}; 18 19 $scope.isFuzzy = false; 20 $scope.activeHeader = 'search'; 21 $scope.arrWord = []; 22 $scope.filters = []; 23 $scope.loading = true; 24 $scope.suggestions = []; 25 $scope.selectedIndex = -1; 26 $scope.bookmarked = 'Bookmarked'; 27 $scope.searchText = ''; 28 $scope.messages = []; 29 $scope.filterModels = {}; 30 $scope.containerStyle = {"margin-top": "145px"}; 31 $scope.messageIds = []; 32 $scope.sideEffectFilters = []; 33 $scope.supportiveTherapyFilters = []; 34 $scope.drugFilters = []; 35 $scope.regimenFilters = []; 36 $scope.supportiveDrugFilters = []; 37 $scope.sentimentFilters = []; 38 $scope.ailmentDomainMap = {}; 39 $scope.isOtherCancerStatsVisible = true; 40 $scope.cancerStatsStyle = [{'color': 'rgb(66, 166, 211)'}, {'border': '1px solid rgb(76, 175, 80)'}, {'border': '1px solid rgb(67, 160, 71)'}, {'border': '1px solid #A5D6A7'}
40, {'border': '1px solid rgb(165, 214, 167)'}]; 41 $scope.freeTextSuggestions = []; 42 $scope.freeTextCurrIndex = 0; 43 $scope.combinations = []; 44 $scope.loadingMorePost = false; 45 $scope.moreMsgNotAvailable = false; 46 $scope.defaultMsgLength = 1000; 47 $scope.expandAll = false; 48 $scope.searchTextObject = { 49 searchText: "", 50 ftSuggestionInput: [], 51 powerSetWords: [] 52 }; 53 54 function setFiltersToEmpty() { 55 $scope.filters = []; 56 searchObj.setFiltersToEmpty(); 57 } 58 59 $scope.getSuggestions = function () { 60 if (($scope.searchText) && (1 <= $scope.searchText.length)) { 61 $scope.resultsFor = $scope.searchText; 62 $scope.suggestions = []; 63 searchObj.suggestionObject.searchText = $scope.searchText; 64 searchObj.suggestionObject.searchTextArray = $scope.searchText.split(' '); 65 searchObj.suggestionObject = svcSearchMod.getPreprocessedSuggestionObject(searchObj.suggestionObject); 66 67 searchService.getSuggestions(searchObj.suggestionObject.textForSuggestion).success(function (response) { 68 response = response.length > 0 ? (searchObj.processSuggestions(searchObj.suggestionObject.searchTextArray, searchObj.suggestionObject.searchStringToBeReplaced, response)) : null; 69 $scope.suggestions = (response && $scope.searchText && $scope.searchText.length > 0) ? response.slice(0, 10) : []; 70 searchObj.suggestionObject = svcSearchMod.getPostProcessedSuggestionObject($scope.suggestions, searchObj.suggestionObject); 71 $scope.selectedIndex = -1; 72 }).error(function (err) { 73 sharedService.log(err); 74 }); 75 } else { 76 $scope.suggestions = []; 77 } 78 }; 79 80 $scope.searchPost = function (message_ids) { 81 $scope.msgLoading = true; 82 message_ids = message_ids && message_ids.filter(function (messageId) { 83 return (postIds.indexOf(messageId) === -1); 84 }); 85 if (!checkIfOptionItemExist(searchParams.count) && searchParams.count !== "0") $scope.conversationCount = searchParams.count; 86 87 postIds = postIds.concat(message_ids); 88 if (!parseInt($scope.conversationCount)) { 89 if (!checkIfOptionItemExist(searchParams.count) && searchParams.count !== "0") { 90 $scope.conversationCount = searchParams.count; 91 } else if (message_ids && message_ids.messageCount) { 92 $scope.conversationCount = message_ids.messageCount; 93 } 94 } 95 if (message_ids && message_ids.length) { 96 searchService.searchPost(message_ids).success(function (response) { 97 $scope.messages = $scope.messages.concat(response); 98 $scope.updateExpandAll(false); 99 $scope.loading = false; 100 $scope.loadingMorePost = false; 101 if ($scope.arrWord.indexOf($scope.searchText) < 0) $scope.arrWord.push($scope.searchText); 102 $scope.containerStyle = ($scope.filters && $scope.filters.length > 0) ? {"margin-top": "175px"} : {"margin-top": "145px"}; 103 if ($scope.ailmentDomain !== 'all') $scope.isOtherCancerStatsVisible = false; 104 }).error(function (err) { 105 $scope.loading = false; 106 $scope.loadingMorePost = false; 107 sharedService.log(err); 108 }); 109 } else { 110 $scope.loading = false; 111 $scope.loadingMorePost = false; 112 } 113 }; 114 115 $scope.loadMorePost = function () { 116 if (!terminateCall && !$scope.loadingMorePost) { 117 if (msgOffset >= 120 && !Auth.getCurrentUser()._id) { 118 $scope.reqLimitReached = true; 119 return; 120 } 121 if ($scope.messages.length >= $scope.conversationCount) { 122 $scope.moreMsgNotAvailable = true; 123 return; 124 } 125 $scope.loadingMorePost = true; 126 if (searchParams.isFilter) { 127 if (!$scope.moreMsgNotAvailable) { 128 msgOffset = parseInt(msgOffset) + 20; 129 } 130 if (!Object.keys(searchObj.reference_check).length) return; 131 searchObj.isBrandName = 0; 132 searchFilterMessages(urlObj.type, 1, msgOffset, searchParams.query, urlObj.s2 ? 1 : 0); 133 } else { 134 searchService.searchMessages($scope.searchText, 1, msgOffset, msgMatchLevel, isEmbedding, 135 [], $scope.isFuzzy).success(function (response) { 136 msgMatchLevel = response.matchLevel || 0; 137 isEmbedding = response.isEmbedding || 0; 138 terminateCall = response.terminateCall; 139 msgOffset = response.resetOffset ? 0 : response.offset || 0; 140 $scope.loading = false;
141 if (response.messageIdsArray.length) { 142 searchService.searchPost(response instanceof Array ? response : response.messageIdsArray) 143 .success(function (res) { 144 if (res.length) { 145 $scope.messages = $scope.messages.concat(res); 146 $scope.updateExpandAll(false); 147 postIds = []; 148 } else { 149 $scope.freeTextCurrIndex++; 150 } 151 $scope.loadingMorePost = false; 152 }) 153 .error(function (err) { 154 $scope.loadingMorePost = false; 155 sharedService.log(err); 156 }); 157 } else { 158 $scope.loadingMorePost = false; 159 $scope.loadMorePost(); 160 } 161 }).error(function (err) { 162 $scope.loadingMorePost = false; 163 $scope.loading = false; 164 sharedService.log(err); 165 }); 166 } 167 } 168 }; 169 170 $scope.searchMessages = function (index) { 171 if ((searchObj.queried === $scope.searchText || $scope.searchText.trim().length <= 1) && searchObj.ailmentDomain === $scope.ailmentDomain) { 172 $scope.suggestions = []; 173 return true; 174 } 175 searchObj.ailmentDomain = $scope.ailmentDomain; 176 $scope.loading = true; 177 searchObj.queried = null; 178 if ($scope.suggestions && $scope.suggestions.length) { 179 if ($scope.suggestions[index] === undefined) { 180 for (var key in searchObj.reference_check) { 181 if (searchObj.reference_check.hasOwnProperty(key) && (searchObj.reference_check[key].name.toLowerCase() === 182 $scope.searchText.trim().replace(searchObj.suggestionObject.searchStringToBeReplaced, '').toLocaleLowerCase())) { 183 searchObj.queried = searchObj.reference_check[key].name; 184 $scope.searchText = searchObj.suggestionObject.searchStringToBeReplaced.length > 1 ? (searchObj.suggestionObject.searchStringToBeReplaced + searchObj.queried) : searchObj.queried; 185 break; 186 } 187 } 188 } else { 189 searchObj.queried = $scope.suggestions[index].replace(searchObj.suggestionObject.searchStringToBeReplaced, ''); 190 $scope.searchText = searchObj.suggestionObject.searchStringToBeReplaced.length > 1 ? (searchObj.suggestionObject.searchStringToBeReplaced + searchObj.queried) : searchObj.queried; 191 } 192 } else { 193 searchObj.queried = $scope.searchText; 194 } 195 reference = searchObj.reference_check[searchObj.queried]; 196 msgOffset = 0; 197 198 $scope.searchTextObject.searchText = $scope.searchText; 199 svcSearchMod.refineFreeTextSearchInput($scope.searchTextObject, $scope); 200 /* Seo related computation */ 201 var seoFreeTextTermsArr = []; 202 for (var i = 0; i < searchObj.suggestionObject.searchTextArray.length; i++) { 203 if (searchObj.suggestionObject.searchTextArray[i] !== 'and') { 204 seoFreeTextTermsArr.push(searchObj.suggestionObject.searchTextArray[i]); 205 } 206 } 207 var seoType = ''; 208 seoFreeTextTermsArr.length === 1 ? seoType = "singleSearch" : seoType = "twoLevelSearch"; 209 sharedService.setMetaTags("conversations", seoType, $scope.ailmentDomain, seoFreeTextTermsArr[0], seoFreeTextTermsArr[1]); 210 }; 211 212 $scope.mapTypeUrl = function (url) { 213 return sharedService.urlMappings[url]; 214 }; 215 216 $scope.callMsg = function () { 217 searchService.searchMessages(encodeURIComponent($scope.searchText), 0, msgOffset, msgMatchLevel, 218 isEmbedding, $scope.searchTextObject.ftSuggestionInput, $scope.isFuzzy) 219 .success(function (response) { 220 msgMatchLevel = response.matchLevel || 0; 221 isEmbedding = response.isEmbedding || 0; 222 msgOffset = response.resetOffset ? 0 : response.offset || 0; 223 $scope.searchText = response.resultsFor; 224 $scope.resultsFor = $scope.searchText; 225 $scope.heading = $scope.searchText; 226 $scope.searchPost(response.length ? response : response.messageIdsArray); 227 $scope.suggestions = []; 228 $scope.conversationCount = response.messageCount; 229 $scope.ailmentConversations = response.ailmentConversations; 230 $scope.arrWord = response.highlightKeywords; 231 $scope.arrWord.push($scope.searchText); 232 233 $scope.relatedResultsLoading = true; 234 searchObj.inputData.searchStringList = svcSearchMod.getPowerSet(_.uniq($scope.searchText.trim().split(' '))); 235 236 svcSearchMod.FindDictionaryItems(searchObj.inputData, searchService, 0, svcSearchMod, function (inputArray) { 237
238 inputArray = svcSearchMod.makeCombinationsOfDictionaryItems(inputArray); 239 240 inputArray.combinations.ailmentDomain = $scope.ailmentDomain; 241 if (inputArray.combinations.terms.length) { 242 searchService.searchResultCount(inputArray.combinations) 243 .success(function (resp) { 244 if (resp.length) addUrlsToCombinations(resp); 245 $scope.relatedResultsLoading = false; 246 $scope.combinations = resp; 247 }).error(function (err) { 248 $scope.relatedResultsLoading = false; 249 sharedService.log(err); 250 }); 251 } else { 252 $scope.combinations = []; 253 $scope.relatedResultsLoading = false; 254 } 255 }); 256 if ($scope.ailmentDomain !== 'all') $scope.isOtherCancerStatsVisible = false; 257 $scope.arrWord = $scope.arrWord.concat(response.highlightKeywords); 258 $scope.isFilterBoxReq = true; 259 }).error(function (err) { 260 $scope.loading = false; 261 sharedService.log(err); 262 }); 263 }; 264 265 $scope.addRemoveHelpful = function (msg) { 266 userService.markHelpful(msg) 267 .then(function (res) { 268 $scope.getCurrentUser.helpfulMsg = res.data; 269 }).catch(function () { 270 $scope.errors = {}; 271 }); 272 }; 273 274 function addUrlsToCombinations(objs) { 275 objs.forEach(function (obj) { 276 if (obj.count) { 277 var res = svcSearchMod.getUrlFromCombinations(obj); 278 obj.url = res.url; 279 obj.heading = res.heading; 280 obj.name = res.name; 281 obj.type = res.type; 282 } 283 }) 284 } 285 286 $scope.helpfulList = function (postId) { 287 return $scope.getCurrentUser ? svcSearchMod.checkUserBookMarkList($scope.getCurrentUser.helpfulMsg, postId) : false; 288 }; 289 290 $scope.openOtherCancers = function (ailment) { 291 var param = {}; 292 searchObj.filterTypeArray.forEach(function (filter) { 293 param[filter] = searchObj[filter] && searchObj[filter].length ? searchObj[filter] : ''; 294 }); 295 if (searchParams.genericName) param.genericName = searchParams.genericName; 296 if (searchParams.count) param.count = "0"; 297 if (searchParams.isFilter) param.isFilter = searchParams.isFilter; 298 if (searchParams.queryType) param.queryType = searchParams.queryType; 299 if (searchParams.isBrandNameFilter) param.isBrandNameFilter = searchParams.isBrandNameFilter; 300 /*var url = "/" + ailment.replace(/ /g, "-") + "/conversations/"; 301 //searchParams.genericName ? url+='?s='+searchParams.genericName : url = urlObj.type ? (url + urlObj.type + "/") : url;; 302 url = urlObj.type ? (url + urlObj.type + "/") : url; 303 url += urlObj.s.replace(/ /g, "-");*/ 304 var url = $location.$$url.replace($scope.ailmentDomain.replace(/ /g, '-'), ailment.replace(/ /g, "-")); 305 $location.url(url); 306 }; 307 308 $scope.checkUserBookMarkList = function (postId) { 309 return ($scope.messageIds.indexOf(postId) >= 0); 310 }; 311 312 $scope.addBookmark = function (postId) { 313 var uId = Auth.getCurrentUser()._id; 314 if (uId) { 315 $scope.bookmarked = "Bookmarked"; 316 userService.addBookmark(uId, postId).success(function () { 317 $scope.messageIds.push(postId); 318 }).error(function (err) { 319 sharedService.log(err); 320 }); 321 } 322 }; 323 324 $scope.removeBookmark = function (postId) { 325 var uId = Auth.getCurrentUser()._id; 326 if (uId) { 327 $scope.bookmarked = "Bookmark"; 328 userService.removeBookmark(uId, postId).success(function () { 329 var index = $scope.messageIds.indexOf(postId); 330 if (index > -1) $scope.messageIds.splice(index, 1); 331 }).error(function (err) { 332 sharedService.log(err); 333 }); 334 } 335 }; 336 337 $scope.checkKeyDown = function (event) { 338 switch (event.keyCode) { 339 case 40: 340 event.preventDefault(); 341 $scope.selectedIndex !== ($scope.suggestions.length - 1) ? $scope.selectedIndex++ : $scope.selectedIndex = 0; 342 $scope.searchText = $scope.suggestions.length ? $scope.suggestions[$scope.selectedIndex] : $scope.searchText; 343 break; 344 case 38: 345 event.preventDefault(); 346 $scope.selectedIndex === -1 ? $scope.selectedIndex = 0 : ($scope.selectedIndex !== -1 && $scope.selectedIndex !== 0 ? $scope.selectedIndex-- : $scope.selectedIndex = ($scope.suggestions.length - 1)); 347 $scope.searchText = $scope.suggestions.length ? $scope.suggestions[$scope.selectedIndex] : $scope.searchText; 348 break; 349 case 13: 350 event.preventDefault(); 351 if (!$scope.loading) { 352 if ($scope.searchText) $scope.setResult($scope.selectedIndex); 353 } 354 break; 355 case 8: 356 searchObj.suggestionObject.isBackSpace = true; 357 break; 358 case 86: 359 if (event.ctrlKey) searchObj.suggestionObject.isPaste = true; 360 } 361 }; 362 363 $scope.openUrl = function (domain, text, type) { 364 var url = '/' + domain.replace(/ /g, '-') 365 + sharedService.generateSearchUrl(searchObj, text, type, $scope.isFuzzy); 366 $location.url(url + '/conversations'); 367 }; 368 369 $scope.openMessages = function (text, type, isFilter, queryType) { 370 localStorageService.set("ailmentConversations", $scope.ailmentConversations); 371 searchParams.isFuzzy = $scope.isFuzzy ? 1 : 0; 372 searchObj.filterTypeArray.forEach(function (filter) { 373 searchParams[filter] = searchObj[filter].length ? searchObj[filter] : []; 374 }); 375 searchParams.isFilter = 0; 376 searchParams.source = "me"; 377 searchParams.genericName = (searchObj.reference_check && searchObj.reference_check[searchObj.queried] 378 && searchObj.reference_check[searchObj.queried].genericName) 379 ? searchObj.reference_check[searchObj.queried].genericName : ''; 380 if (searchObj.queried) searchParams.count = $scope.conversationCount; 381 if (isFilter) searchParams.queryType = queryType; 382 $scope.filterModels && (searchParams = _.merge(searchParams, $scope.filterModels)); 383 sharedService.setSearchParams(searchParams); 384 var url = "/" + sharedService.ailmentDomain.replace(/ /g, "-") + "/conversations/?s=" + $filter("spaceToDash")($scope.searchText); 385 $location.url(url); 386 }; 387 388 $scope.redirectOrProcessUrl = function (result) { 389 if (result.type === 'generic') { 390 $scope.openMessages(result.q, result.qObj && result.qObj[0].type, true, result.queryType); 391 } else { 392 $scope.openUrl(sharedService.ailmentDomain, result.q, result.qObj[0].type); 393 } 394 }; 395 396 $scope.setResult = function (index, name) { 397 index >= 0 && ($scope.searchText = name ? name : ($scope.suggestions.length ? $scope.suggestions[$scope.selectedIndex] : $scope.searchText)); 398 if (!$scope.loading) { 399 $scope.loading = true; 400 } 401 setFiltersToEmpty(); 402 postIds = []; 403 msgOffset = 0; 404 //searchObj.initialize(); 405 searchObj.queried = $scope.searchText; 406 var searchStringList = _.uniq($scope.searchText.trim().split(' ')); 407 searchStringList = svcSearchMod.getPowerSet(searchStringList); 408 searchObj.inputData.searchStringList = searchStringList; 409 searchObj.inputData.searchText = $scope.searchText; 410 $scope.suggestions = []; 411 svcSearchMod.getSuggestionsAndUpdateRelevantArrays(searchObj.inputData, 0, searchService, $scope, 1, svcSearchMod); 412 }; 413 414 $scope.openTab = function (event, url) { 415 svcSearchMod.openTab(event, url); 416 }; 417 418 function searchFilterMessages(type, isPagination, offset, name, isFilter) { 419 var regimenBrandName = ''; 420 var drugBrandName = ''; 421 if (searchParams.isBrandNameFilter) searchObj.regimenFilters.length ? regimenBrandName = searchObj.regimenFilters.join("") : 422 drugBrandName = searchObj.drugFilters.join(""); 423 424 var filterConversationsUrl = searchObj.setFiltersAndUrl(1, name, type, '', '', regimenBrandName, drugBrandName); 425 filterConversationsUrl = '/api/search/all' + filterConversationsUrl.url + '&isPrimary=0&isFilter=' + isFilter + '&isPagination=' + isPagination + '&offset=' + offset + '&isFuzzy=' + ($scope.isFuzzy ? 1 : 0) + 426 (sharedService.UrlFromJson($scope.filterModels) ? sharedService.UrlFromJson($scope.filterModels) : ''); 427 /* Seo related computation */ 428 var fetchDetailsOfSearched = findNameOfSecondTag("http://" + filterConversationsUrl, searchObj.reference_check[name].type); 429 var seoType = ''; 430 if (fetchDetailsOfSearched && fetchDetailsOfSearched.type === 'sentiment') { 431 seoType = "twoLevelSearchSentiment"; 432 } else if (!fetchDetailsOfSearched || fetchDetailsOfSearched === 'undefined') { 433 seoType = "singleSearch" 434 } else { 435 seoType = "twoLevelSearch"; 436 } 437 sharedService.setMetaTags("conversations", seoType, $scope.ailmentDomain, name, fetchDetailsOfSearched ? fetchDetailsOfSearched.name : ''); 438 if (type === 'regimen') { 439 filterConversationsUrl += '&q=' + searchParams.genericName.replace(/ /g, "-") || name.replace(/ /g, "-"); 440 } else { 441 filterConversationsUrl += '&q=' + searchParams.genericName || name; 442 } 443 searchService.filterConversations(filterConversationsUrl).success(function (response) { 444 if (response[0].ailmentConversations) $scope.ailmentConversations = response[0].ailmentConversations; 445 if (!$scope.conversationCount) { 446 $scope.conversationCount = response[0].totalMessageCount; 447 } 448 $scope.arrWord.push($scope.searchText); 449 $scope.arrWord = $scope.arrWord.concat(response[0].highlightKeywords); 450 isPagination === 0 && angular.forEach($scope.filters, function (value) { 451 $scope.arrWord.push(value.name); 452 }); 453 $scope.resultsFor = $scope.searchText; 454 $scope.searchPost(response[0].messageIds, isPagination, offset); 455 }).error(function (err) { 456 $scope.loading = false;
457 $scope.loadingMorePost = false; 458 sharedService.log(err); 459 }); 460 } 461 462 function findNameOfSecondTag(url, typeToExclude) { 463 if (typeToExclude === "drug") { 464 typeToExclude = "drugName" 465 } 466 var URL = new window.URL(url); 467 var arrOfPossibleValues = ['drugName', 'regimen', 'sideEffect', 'supportiveTherapy', 'supportiveDrug', 'sentiment']; 468 for (var i = 0; i < arrOfPossibleValues.length; i++) { 469 if (arrOfPossibleValues[i] !== typeToExclude) { 470 var filterName = URL.searchParams.get(arrOfPossibleValues[i]); 471 if (filterName && filterName !== '') { 472 return { 473 name: filterName, 474 type: arrOfPossibleValues[i] 475 } 476 } 477 } 478 } 479 } 480 481 $scope.getUrlFromCombinations = function (obj) { 482 return svcSearchMod.getUrlFromCombinations(obj); 483 }; 484 485 $scope.setPasteTrue = function () { 486 searchObj.suggestionObject.isPaste = true; 487 }; 488 489 $scope.getCancers = function () { 490 searchService.getCancers() 491 .success(function (resp) { 492 $scope.cancers = resp.data; 493 $scope.cancers.forEach(function (cancer) { 494 $scope.ailmentDomainMap[cancer.name] = cancer.value; 495 }); 496 }); 497 }; 498 499 $scope.updateExpandAll = function (isExpandUpdate) { 500 if (isExpandUpdate) $scope.expandAll = !$scope.expandAll; 501 $scope.messages.forEach(function (msg) { 502 msg.viewMore = (msg.messageText.length > $scope.defaultMsgLength) && $scope.expandAll; 503 }); 504 }; 505 506 var checkIfOptionItemExist = function (term) { 507 return ((!term) || (!term.length) || (term === "All") || (term === "Select")); 508 }; 509 510 function setUrlObj() { 511 var url = $location.url().split('?')[0].split('/'); 512 urlObj = { 513 cancerName: url[1].toLowerCase(), 514 type: url[2].toLowerCase(), 515 s: url[3] ? url[3].replace(/-/g, ' ').toLowerCase() : '', 516 name: url[3] ? url[3].replace(/-/g, ' ').toLowerCase() : '', 517 type2: url[4] ? url[4].toLowerCase() : null, 518 s2: url[5] ? url[5].toLowerCase() : null, 519 type3: url[6] ? url[6].toLowerCase() : null, 520 s3: url[7] ? url[7].toLowerCase() : null 521 }; 522 if (urlObj.type === 'conversations') { 523 urlObj.s = $routeParams.s || ''; 524 urlObj.s = urlObj.s.replace(/-/g, ' '); 525 } 526 if (urlObj.type2 === 'side-effects') { 527 urlObj.s2 = urlObj.s2.replace(/-/g, ' '); 528 } 529 } 530 531 function setupSearchObject() { 532 searchObj.suggestionObject.isPaste = true; 533 $scope.searchText = searchObj.getSearchTextFromURL(urlObj); 534 searchObj.suggestionObject.searchText = $scope.searchText; 535 searchObj.suggestionObject.searchTextArray = $scope.searchText.split(' '); 536 searchObj.setCategoryFilters(urlObj.type2, urlObj.s2); 537 searchObj.setCategoryFilters(urlObj.type3, urlObj.s3); 538 searchObj.queried = searchParams.query; 539 $scope.filters = searchObj.createFiltersArray(); 540 searchObj.isSearchView = false; 541 if (searchParams.isBrandName && searchParams.isBrandName !== "false") searchObj.isBrandName = 1; 542 searchObj.reference_check[searchParams.query] = { 543 genericName: searchParams.genericName, 544 name: urlObj.s, 545 type: searchObj.mapSearchType(urlObj.type) 546 }; 547 } 548 549 function showMessages() { 550 setupSearchObject(); 551 if (searchParams.isFilter) { 552 var type = searchObj.mapSearchType(searchObj.reference_check[searchParams.query] ? 553 searchObj.reference_check[searchParams.query].type : urlObj.type); 554 searchFilterMessages(type, 0, 0, searchParams.query, urlObj.s2 ? 1 : 0); 555 } else { 556 $scope.searchMessages(-1); 557 } 558 } 559 560 function getSearchSuggestions(name) { 561 return new Promise(function (resolve, reject) { 562 searchService.getSuggestions(name).success(function (response) { 563 for (var i = 0; i < response.length; i++) { 564 if (name.trim() === response[i].name.toLowerCase().trim()) { 565 searchParams.genericName = response[i].genericName.toLowerCase(); 566 searchParams.query = response[i].name; 567 break; 568 } 569 } 570 if (!searchParams.genericName) { 571 searchParams.genericName = name; 572 searchParams.query = name; 573 } 574 resolve(); 575 }); 576 }); 577 } 578
579 (function init() { 580 setUrlObj(); 581 searchObj.initialize(); 582 searchParams = sharedService.getSearchParams(); 583 searchParams.isFilter = (urlObj.type === 'conversations') ? 0 : 1; 584 $scope.getCancers(); 585 $scope.heading = urlObj.s; 586 $scope.cancerUrl = $routeParams.cancerName; 587 sharedService.ailmentDomain = $routeParams.cancerName.replace(/-/g, ' '); 588 $scope.ailmentDomain = sharedService.ailmentDomain; 589 postIds = []; 590 $scope.filterModels = {}; 591 setFiltersToEmpty(); 592 593 $scope.isFuzzy = searchParams.isFuzzy === 1; 594 if (searchParams.isFilter && localStorageService.get("ailmentConversations")) { 595 $scope.ailmentConversations = localStorageService.get("ailmentConversations").slice(0); 596 } 597 searchService.fetchCancerFilters(sharedService.ailmentDomain) 598 .success(function (resp) { 599 $scope.cancerFilters = resp.data; 600 $scope.cancerFilters.filters.forEach(function (filter) { 601 if (searchParams[filter.name.key]) { 602 $scope.filterModels[filter.name.key] = searchParams[filter.name.key]; 603 } 604 }); 605 if (searchParams.genericName && searchParams.query) { 606 showMessages(); 607 } else { 608 getSearchSuggestions(urlObj.s).then(function () { 609 showMessages(); 610 }); 611 } 612 }); 613 614 Auth.isLoggedInAsync(function (loggedIn) { 615 if (loggedIn) { 616 $scope.isLoggedIn = Auth.isLoggedIn(); 617 $scope.getCurrentUser = Auth.getCurrentUser(); 618 $scope.isAnnotator = Auth.isAnnotator(); 619 $scope.isAdmin = Auth.isAdmin(); 620 $scope.messageIds = $scope.getCurrentUser.bookmarks || []; 621 } 622 }); 623 })(); 624 }]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.