PageSourceSearch

https://govmu.org/SiteAssets/GovStyles/scripts/search/searchController.js

js govmu.org collected 2026-10-01 09:01:48 UTC 11,251 bytes, 368 lines download raw bytes

1/* Added by atish on 11/12/2018 For Search */
2function OnLoadIEBrowser(){
3	if(isBrowserInternetExplorer()){
4		polyfillArrayIncludes();
5	}	
6}
7
8OnLoadIEBrowser();
9
10function searchController($scope) { 
11	var $scope = $scope; 
12	$scope.language = "en";
13	var mapWorker, eServiceWorker;
14	$scope.language = getLanguage();
15		
16	if($scope.language == "en"){
17		$scope.searchPlaceholder = "Search";
18	}
19	
20	if($scope.language == "fr"){
21		$scope.searchPlaceholder = "Recherche";		
22	}
23	
24    $scope.Search_Click = function() {				
25		try{
26			var itemsToDisplay = 5;
27			var listMap = "map";
28			var myItems = [];
29			var myItemsTitle = [];
30			
31			var listEService = "topiceservices";
32			var myEServItems = [];
33			var myEServItemsTitle = [];
34							
35			$scope.webUrl = getWebUrl();
36			$scope.language = getLanguage();			
37			console.log("language: " + $scope.language);
38							   
39			if($scope.txtSearch != "undefined"){
40				if($scope.txtSearch != null){
41					if($scope.txtSearch != ""){
42						
43						$scope.myItems = [];//keeps map data
44						$scope.myEServItems = [];//keeps eservice data
45						
46						//check web worker support and if broswer not IE
47						if (typeof(Worker) !== "undefined" && !isBrowserInternetExplorer()) {
48							
49							/********** THIS IF IS WHEN A BROWSER SUPPORT WEB WORKER ***********/
50							
51							if(typeof(mapWorker) != "undefined"){
52								mapWorker.terminate();
53								mapWorker = undefined;
54							}
55							
56							if(typeof(eServiceWorker) != "undefined"){
57								eServiceWorker.terminate();
58								eServiceWorker = undefined;
59							}
60							
61							//argument to be passed to web worker
62							var param = {
63								searchValue : $scope.txtSearch,
64								listName : listMap,
65								webUrl : $scope.webUrl,
66								language : $scope.language							
67							};
68							
69							if(typeof(mapWorker) == "undefined") {
70								mapWorker = new Worker("/SiteAssets/GovStyles/scripts/search/searchWorker.js");		
71								mapWorker.postMessage(param);
72							}
73														
74							
75							if(typeof(eServiceWorker) == "undefined") {
76								eServiceWorker = new Worker("/SiteAssets/GovStyles/scripts/search/searchWorker.js");
77								param.listName = listEService;								
78								eServiceWorker.postMessage(param);
79							}
80							
81							/** FOR Map Search **/
82							mapWorker.addEventListener('message', function(event){								
83								$scope.$apply(function () {
84									myItems = event.data;									
85									//console.log("myItems: " + myItems);
86								
87									$scope.numOfResults = myItems.length;
88					 
89									if(myItems.length < 1){
90										$scope.resultFound = false;
91									}
92									else{
93										$scope.resultFound = true;
94									}
95									
96									if(myItems.length > itemsToDisplay){
97										//$scope.myItems = myItems.splice(itemsToDisplay, myItems.length - itemsToDisplay);
98										$scope.myItems = myItems.splice(0, itemsToDisplay);
99									}
100									else{
101										$scope.myItems = myItems;
102									}
103																							
104									$scope.moreThan1Result = $scope.numOfResults > 1 ? true : false;    	        
105									
106									/* to shorten data length
107									for(var i = 0; i < $scope.myItems.length; i++){					
108										$scope.myItems[i].Title = $scope.myItems[i].Title.length > 28 ? $scope.myItems[i].Title.substring(0,28) : $scope.myItems[i].Title;										
109									}
110									*/
111									
112								});																
113							});
114							/** End FOR Map Search **/
115
116							
117							/** FOR EService Search **/							
118							eServiceWorker.addEventListener('message', function(event){																
119								$scope.$apply(function () {
120									myEServItems = event.data;
121					
122									$scope.numOfResultsEServ = myEServItems.length;
123									 
124									if(myEServItems.length < 1){
125										$scope.resultFoundEServ = false;
126									}
127									else{
128										$scope.resultFoundEServ = true;
129									}
130									
131									if(myEServItems.length > itemsToDisplay){
132										//$scope.myEServItems = myEServItems.splice(itemsToDisplay, myEServItems.length - itemsToDisplay);
133										$scope.myEServItems = myEServItems.splice(0, itemsToDisplay);
134									}
135									else{
136										$scope.myEServItems = myEServItems;										
137									}
138																							
139									$scope.moreThan1ResultEServ = $scope.numOfResultsEServ > 1 ? true : false;   
140									
141									/*
142									for(var i = 0; i < $scope.myEServItems.length; i++){					
143										$scope.myEServItems[i].Title = $scope.myEServItems[i].Title.length > 28 ? $scope.myEServItems[i].Title.substring(0,23)+"..." : $scope.myEServItems[i].Title;										
144									}
145									*/
146									
147								});																
148							});
149							
150							/** END FOR EService Search **/
151						} 
152						else {							
153						
154						/********** THIS ELSE IS WHEN A BROWSER DOES NOT SUPPORT WEB WORKER ***********/
155						
156							/** FOR Map Search **/
157							//build REST
158							var restUrl = buildRESTUrl($scope.webUrl, $scope.txtSearch, listMap);
159							
160							var items = GetListItems(restUrl);
161							
162							if(items != "undefined"){
163								if(items != null){
164									if(items.length > 0){
165										for(var i = 0 ; i < items.length; i++){
166											if(!myItemsTitle.includes(items[i].Title)){
167												myItemsTitle.push(items[i].Title);
168												myItems.push(items[i]);
169											}												
170										}
171									}					
172								}
173							}
174							
175							if(myItemsTitle == null || myItemsTitle.length == 0){
176								if(myItems == null || myItems.length == 0){
177									var seachValue = $scope.txtSearch.split(" ");
178									if(seachValue != "undefined"){
179										if(seachValue != null){
180											if(seachValue.length > 0){
181												for(var x=0;x<seachValue.length; x++){
182													//build REST
183													var restUrl = buildRESTUrl($scope.webUrl, seachValue[x], listMap);
184													
185													var items = GetListItems(restUrl);
186													
187													if(items != "undefined"){
188														if(items != null){
189															if(items.length > 0){
190																for(var i = 0 ; i < items.length; i++){
191																	if(!myItemsTitle.includes(items[i].Title)){
192																		myItemsTitle.push(items[i].Title);
193																		myItems.push(items[i]);
194																	}												
195																}
196															}							
197														}
198													}
199												}   	
200											}
201										}
202									}
203								}
204							}
205										
206																															
207							$scope.numOfResults = myItems.length;
208							 
209							if(myItems.length < 1){
210								$scope.resultFound = false;
211							}
212							else{
213								$scope.resultFound = true;
214							}
215							
216							if(myItems.length > itemsToDisplay){
217								//$scope.myItems = myItems.splice(itemsToDisplay, myItems.length - itemsToDisplay);
218								$scope.myItems = myItems.splice(0, itemsToDisplay);
219							}
220							else{
221								$scope.myItems = myItems;
222							}
223																					
224							$scope.moreThan1Result = $scope.numOfResults > 1 ? true : false;						
225											
226							/** End FOR Map Search **/					
227							
228							/** FOR EService Search **/
229							
230							var eServUrl = buildEServicesRESTUrl($scope.language, $scope.webUrl, $scope.txtSearch, listEService);
231							
232							var eServItems = GetListItems(eServUrl);
233							if(eServItems != "undefined"){
234								if(eServItems != null){
235									if(eServItems.length > 0){
236										for(var i = 0 ; i < eServItems.length; i++){
237											if(!myEServItemsTitle.includes(eServItems[i].Title)){
238												myEServItemsTitle.push(eServItems[i].Title);
239												myEServItems.push(eServItems[i]);
240											}												
241										}
242									}					
243								}
244							}
245							
246							
247							if(myEServItemsTitle == null || myEServItemsTitle.length == 0){
248								if(myEServItems == null || myEServItems.length == 0){
249									var seachValue = $scope.txtSearch.split(" ");
250									if(seachValue != "undefined"){
251										if(seachValue != null){
252											if(seachValue.length > 0){
253												for(var x=0;x<seachValue.length; x++){
254													//build REST
255													var restUrl = buildEServicesRESTUrl($scope.language, $scope.webUrl, seachValue[x], listEService);
256													
257													var items = GetListItems(restUrl);
258													
259													if(items != "undefined"){
260														if(items != null){
261															if(items.length > 0){
262																for(var i = 0 ; i < items.length; i++){
263																	if(!myEServItemsTitle.includes(items[i].Title)){
264																		myEServItemsTitle.push(items[i].Title);
265																		myEServItems.push(items[i]);
266																	}												
267																}
268															}							
269														}
270													}
271												}   	
272											}
273										}
274									}
275								}
276							}
277													
278							
279							$scope.numOfResultsEServ = myEServItems.length;
280							 
281							if(myEServItems.length < 1){
282								$scope.resultFoundEServ = false;
283							}
284							else{
285								$scope.resultFoundEServ = true;
286							}
287							
288							
289							if(myEServItems.length > itemsToDisplay){
290								//$scope.myEServItems = myEServItems.splice(itemsToDisplay, myEServItems.length - itemsToDisplay);
291								$scope.myEServItems = myEServItems.splice(0, itemsToDisplay);
292							}
293							else{
294								$scope.myEServItems = myEServItems;
295							}
296																					
297							$scope.moreThan1ResultEServ = $scope.numOfResultsEServ > 1 ? true : false;   
298														
299							/** END FOR EService Search **/
300							
301							/** For SP Search Engine **/			
302							window.location.hash = "k="+$scope.txtSearch;			
303							/** END For SP Search Engine **/
304			
305						}																
306					}
307					else{
308						$scope.InitializeForDisplay();
309					}
310				}
311				else{
312					$scope.InitializeForDisplay();
313				}
314			}				
315			else{
316				$scope.InitializeForDisplay();
317			}
318			
319
320			$scope.myEServItems = $scope.myEServItems;																															 
321			/** For SP Search Engine **/			
322			window.location.hash = "k="+$scope.txtSearch;			
323			/** END For SP Search Engine **/
324											
325		}
326		catch(e){
327			console.error("$scope.Search_Click() error: " + e.toString());
328		}
329						       	
330	}//end $scope.Search_Click()
331	
332	
333	$scope.InitializeForDisplay = function(){
334		try{
335			$scope.myItems = [];
336			$scope.myEServItems = [];
337			$scope.moreThan1Result = false;
338			$scope.resultFound = false;
339			$scope.moreThan1ResultEServ = false;
340			$scope.resultFoundEServ = false;
341			window.location.hash = "";			
342		}
343		catch(e){
344			console.error("$scope.Initialize error: " + e.toString());
345		}
346	}
347	
348						
349	$scope.SetTitle = function(item){
350		try{
351			if ($scope.language == "en") {
352				return item.Title;
353			}
354		  
355			if($scope.language == "fr"){
356				return item.TitleFR;
357			}
358		}
359		catch(e){
360			console.error("$scope.SetTitle error: " + e.toString());
361		}			
362	}//end $scope.SetTitle()				
363}
364
365
366appVar.controller("searchController", searchController);
367
368

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.