Compare commits
	
		
			2 Commits
		
	
	
		
			openmct-st
			...
			open308sea
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 369b991991 | ||
|   | 63430b7f51 | 
| @@ -66,7 +66,8 @@ | ||||
|         "workers": [ | ||||
|             { | ||||
|                 "key": "genericSearchWorker", | ||||
|                 "scriptUrl": "services/GenericSearchWorker.js" | ||||
|                 "scriptUrl": "services/GenericSearchWorker.js", | ||||
|                 "shared": true | ||||
|             } | ||||
|         ] | ||||
|     } | ||||
|   | ||||
| @@ -59,11 +59,9 @@ define([ | ||||
|         this.worker = this.startWorker(workerService); | ||||
|         this.indexOnMutation(topic); | ||||
|  | ||||
|         ROOTS.forEach(function indexRoot(rootId) { | ||||
|             provider.scheduleForIndexing(rootId); | ||||
|         }); | ||||
|  | ||||
|         this.rootsToIndex = ROOTS; | ||||
|  | ||||
|         this.worker.port.postMessage({ request: 'status' }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -102,7 +100,8 @@ define([ | ||||
|         var worker = workerService.run('genericSearchWorker'), | ||||
|             provider = this; | ||||
|  | ||||
|         worker.addEventListener('message', function (messageEvent) { | ||||
|         worker.port.start(); | ||||
|         worker.port.addEventListener('message', function (messageEvent) { | ||||
|             provider.onWorkerMessage(messageEvent); | ||||
|         }); | ||||
|  | ||||
| @@ -150,9 +149,12 @@ define([ | ||||
|      * @private | ||||
|      */ | ||||
|     GenericSearchProvider.prototype.keepIndexing = function () { | ||||
|         if (this.pendingRequests === 0 && this.idsToIndex.length === 0) { | ||||
|             this.worker.port.postMessage({ request: 'finish' }); | ||||
|         } | ||||
|  | ||||
|         while (this.pendingRequests < this.MAX_CONCURRENT_REQUESTS && | ||||
|             this.idsToIndex.length | ||||
|             ) { | ||||
|                 this.idsToIndex.length) { | ||||
|             this.beginIndexRequest(); | ||||
|         } | ||||
|     }; | ||||
| @@ -168,7 +170,7 @@ define([ | ||||
|     GenericSearchProvider.prototype.index = function (id, model) { | ||||
|         var provider = this; | ||||
|  | ||||
|         this.worker.postMessage({ | ||||
|         this.worker.port.postMessage({ | ||||
|             request: 'index', | ||||
|             model: model, | ||||
|             id: id | ||||
| @@ -220,14 +222,25 @@ define([ | ||||
|      * @private | ||||
|      */ | ||||
|     GenericSearchProvider.prototype.onWorkerMessage = function (event) { | ||||
|         var provider = this, | ||||
|             pendingQuery, | ||||
|             modelResults; | ||||
|  | ||||
|         if (event.data.request === 'status' && !event.data.finished) { | ||||
|             this.rootsToIndex.forEach(function indexRoot(rootId) { | ||||
|                 provider.scheduleForIndexing(rootId); | ||||
|             }); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if (event.data.request !== 'search') { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         var pendingQuery = this.pendingQueries[event.data.queryId], | ||||
|             modelResults = { | ||||
|                 total: event.data.total | ||||
|             }; | ||||
|         pendingQuery = this.pendingQueries[event.data.queryId]; | ||||
|         modelResults = { | ||||
|             total: event.data.total | ||||
|         }; | ||||
|  | ||||
|         modelResults.hits = event.data.results.map(function (hit) { | ||||
|             return { | ||||
| @@ -265,7 +278,7 @@ define([ | ||||
|     ) { | ||||
|         var queryId = this.makeQueryId(); | ||||
|  | ||||
|         this.worker.postMessage({ | ||||
|         this.worker.port.postMessage({ | ||||
|             request: 'search', | ||||
|             input: searchInput, | ||||
|             maxResults: maxResults, | ||||
|   | ||||
| @@ -30,7 +30,8 @@ | ||||
|     // An array of objects composed of domain object IDs and models | ||||
|     // {id: domainObject's ID, model: domainObject's model} | ||||
|     var indexedItems = [], | ||||
|         TERM_SPLITTER = /[ _\*]/; | ||||
|         TERM_SPLITTER = /[ _\*]/, | ||||
|         status = { request: 'status', finished: false }; | ||||
|  | ||||
|     function indexItem(id, model) { | ||||
|         var vector = { | ||||
| @@ -118,7 +119,7 @@ | ||||
|                     match.matchCount += 100; | ||||
|                 } else if (match.item.vector.lowerCaseName === | ||||
|                            query.inputLowerCase) { | ||||
|                    match.matchCount += 50; | ||||
|                     match.matchCount += 50; | ||||
|                 } | ||||
|                 return match; | ||||
|             }) | ||||
| @@ -147,11 +148,19 @@ | ||||
|         return message; | ||||
|     } | ||||
|  | ||||
|     self.onmessage = function (event) { | ||||
|         if (event.data.request === 'index') { | ||||
|             indexItem(event.data.id, event.data.model); | ||||
|         } else if (event.data.request === 'search') { | ||||
|             self.postMessage(search(event.data)); | ||||
|         } | ||||
|     self.onconnect = function (connectEvent) { | ||||
|         var port = connectEvent.ports[0]; | ||||
|  | ||||
|         port.onmessage = function (event) { | ||||
|             if (event.data.request === 'index') { | ||||
|                 indexItem(event.data.id, event.data.model); | ||||
|             } else if (event.data.request === 'search') { | ||||
|                 port.postMessage(search(event.data)); | ||||
|             } else if (event.data.request === 'status') { | ||||
|                 port.postMessage(status); | ||||
|             } else if (event.data.request === 'finish') { | ||||
|                 status.finished = true; | ||||
|             } | ||||
|         }; | ||||
|     }; | ||||
| }()); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user