PageSourceSearch

https://www.hoover.org/themes/hoover/templates/assets/scripts/myhoover-homepage-tab.js?tlucpo

js hoover.org collected 2026-09-24 06:23:35 UTC 15,345 bytes, 339 lines download raw bytes

1window.addEventListener("load", function(event) {
2    var multimediaJSON=[];
3    fetch("/json/myhoover/all-multimedia")
4        .then(results => results.json())
5        .then(data => {
6            multimediaJSON=data;
7        });
8    var unpublishedPublication=[];
9    fetch("/json/myhoover/all-multimedia-unpublished")
10        .then(results => results.json())
11        .then(data => {
12            unpublishedPublication=data;
13        });
14
15    var inactivePublication=[];
16    fetch("/json/myhoover/all-multimedia-inactive")
17        .then(results => results.json())
18        .then(data => {
19            inactivePublication=data;
20        });
21    setTimeout(function () {
22        /*
23        Declare Algolia key
24        */
25        const searchClient = algoliasearch(
26            '9TYF7RJUHQ',
27            '8f9bc807e8439d755c4fa23f113f99e7'
28        );
29
30        /*
31        Define Algolia index
32        */
33        const search = instantsearch({
34            indexName: 'research_event_news',
35            searchClient,
36        });
37
38        /*
39        Exclude publication from multimedia refinement
40        */
41        function multimediaRefinment(){
42            multimediaJSON
43            const list = document.querySelectorAll("#multimedia .ais-RefinementList-item");
44            if(list.length>0){
45                list.forEach(function(listitem){
46                    const listitemLabel=listitem.querySelector(".ais-RefinementList-labelText").textContent;
47                    let flag=0;
48                    multimediaJSON.forEach(function(jsonItem){
49                        const jsonLabel=jsonItem["title"].replace("&", "&").replace("'","'");
50                        if(listitemLabel==jsonLabel){
51                            flag=1;
52                        }
53                    });
54                    inactivePublication.forEach(function(jsonItem){
55                        const jsonInactiveLabel=jsonItem["title"].replace("&", "&").replace("'","'");
56                        unpublishedPublication.forEach(function(jsonItem){
57                            const jsonUnpublishedLabel=jsonItem["title"].replace("&", "&").replace("'","'");
58                            if(jsonUnpublishedLabel==listitemLabel||jsonInactiveLabel==listitemLabel){
59                                listitem.remove();
60                            }
61                        });
62                    });
63                    if(flag==0){
64                        listitem.remove();
65                    }
66                });
67            }
68        }
69
70        /*
71        Exclude multimedia from publication refinement
72        */
73        function publicationRefinment(){
74            multimediaJSON
75            const list = document.querySelectorAll("#publication .ais-RefinementList-item");
76            if(list.length>0){
77                list.forEach(function(listitem){
78                    const listitemLabel=listitem.querySelector(".ais-RefinementList-labelText").textContent;
79                    multimediaJSON.forEach(function(jsonItem){
80                        const jsonLabel=jsonItem["title"].replace("&", "&").replace("'","'");
81                        inactivePublication.forEach(function(jsonItem){
82                            const jsonInactiveLabel=jsonItem["title"].replace("&", "&").replace("'","'");
83                            unpublishedPublication.forEach(function(jsonItem){
84                                const jsonUnpublishedLabel=jsonItem["title"].replace("&", "&").replace("'","'");
85                                if(listitemLabel==jsonLabel||jsonUnpublishedLabel==listitemLabel||jsonInactiveLabel==listitemLabel){
86                                    listitem.remove();
87                                }
88                            });
89                        });
90                    });
91                });
92            }
93        }
94
95        /*
96        After render
97        */
98        const customafterResultFunction = () => {
99            setTimeout(() => {
100                if (document.body.contains(document.querySelector("#sectionType .ais-RefinementList-list"))) {
101                    const fellow_type=document.querySelectorAll("#sectionType .ais-RefinementList-item");
102                    fellow_type.forEach(function(item){
103                        const filterValue=item.querySelector("input").value;
104                        if(filterValue.indexOf("Blank Section")!=-1){
105                            item.classList.add("hide");
106                        }
107                    });
108                }
109            }, 1000);
110        }
111        const afterResultFunction = instantsearch.connectors.connectStats(
112            customafterResultFunction
113        );
114
115        /*
116        Handle bookmark list
117        */
118        function handleBookmark(id){
119            const bookmarkJson= document.querySelectorAll(".we-user-choosed-bookmarks li");
120            let nodeID = id.substring(id.indexOf("/") + 1);
121            nodeID=nodeID.split(':')[0];
122            var icon=false;
123            bookmarkJson.forEach(function(ids){
124                if(ids.textContent==nodeID){
125                    icon= true
126                }
127            });
128            return icon;
129        }
130
131        /*
132        Provide node ID
133        */
134        function handleNodeId(id){
135            let nodeID = id.substring(id.indexOf("/") + 1);
136            nodeID=nodeID.split(':')[0];
137            return nodeID;
138        }
139
140        /*
141        Cutomised content fetch
142        */
143        var weFacet = [];
144        var weFacetFilters = [];
145        var we_user_choosed_values=document.querySelectorAll(".we-user-choosed-values-id ul");
146        if(we_user_choosed_values.length>0){
147            we_user_choosed_values.forEach(function(item){
148                const ID = item.getAttribute("id");
149                const li=item.querySelectorAll("li");
150                let taxonomy="";
151                if(ID=="focus-areas-id"){
152                    taxonomy="focus_area_id";
153                }else if(ID=="topics-id" || ID=="topics-child-id"){
154                    taxonomy="research_topic_id";
155                }else if(ID=="publications-id" || ID=="multimedia-id"){
156                    taxonomy="publication_id";
157                }else if(ID=="fellows-id"){
158                    taxonomy="author_id";
159                }
160                if(
161                    ID=="focus-areas-id" ||
162                    ID=="topics-id" ||
163                    ID=="topics-child-id" ||
164                    ID=="publications-id" ||
165                    ID=="multimedia-id" ||
166                    ID=="fellows-id"
167                ){
168                    li.forEach(function(itemChild){
169                        const text = itemChild.textContent;
170                        weFacet.push(''+taxonomy+':"'+text+'"');
171                    });
172                }
173                weFacetFilters=weFacet.join(" OR ");
174                if(weFacetFilters==""){
175                    weFacetFilters="show_result: false"
176                }
177            });
178        }
179        function handleIndex(item){
180        if(item.indexName==0 || item.indexName==1){
181            return "hide";
182        }
183        }
184    /*
185    Declare search widget
186    */
187    search.addWidgets([
188      /*
189      configure index
190      */
191      instantsearch.widgets.configure({
192        hitsPerPage: 2,
193        filters: weFacetFilters
194      }),
195
196      /*
197      HTML for result Item
198      */
199      instantsearch.widgets.hits({
200        container: '#tab-eight-hits',
201        transformItems(items) {
202            
203          return items.map(item => (
204            {
205            ...item,
206            indexName:item.indexName,
207            image: imageHandlerType(item.image, item.media_image, "/styles/410x410/public"),
208            research_type: handle_research_type_myhoover(item.research_type_name,item.content_type,item.research_category),
209            author: handleAuthors(item.author_url, item.author_title, item.contributors, item.contributors_label, item.contributors_url,item.editor_url, item.editor_title),
210            publications: handlePublicationWithUrl(item.publication, item.publication_id ,item.publication_event, item.publication_event_id),
211            date:dateconverterPublication(item.content_type, item.field_research_date, item.event_date, item.news_date),
212            content:handleBody(item.body, item.teaser_body, item.news_body),
213            editLink: handleEdit(item.objectID),
214            additional_author_name: item.content_type!="news_press"?additional_nameHandler(item.additional_author_name):"",
215            additional_contributor_name: item.content_type!="news_press"?additional_nameHandler(item.additional_contributor_name):"",
216            bookmark: handleBookmark(item.objectID)==true?"active":"",
217            nodeId:handleNodeId(item.objectID),
218            research_topic_name: typeof(item.research_topic_name)=="object"?item.research_topic_name[0]:item.research_topic_name
219          }));
220        },
221        templates: {
222          item: ` 
223          <div class="card-wrapper bg-gothic wow wefadeInUp ">
224          {{#editLink}}{{{editLink}}}{{/editLink}}
225          <a href="{{{url}}}"{{#external_article_url}}target="_blank"{{/external_article_url}}>.</a>
226          <div class="card-img">
227            <img src="{{image}}" alt="{{title}}">
228          </div>
229          <div class="card-content">
230                  <span class="{{#external_article_url}}external-link{{/external_article_url}}">{{researchType}}</span>
231            <h3 class="">{{{title}}}</h3>
232            <p class="is-truncated">
233            {{{content}}}
234            </p>
235            <div class="author-info with-image row-reverse">
236              <div class="name-date">
237                <div class="author-on-hover">
238                  <span class="tooltip"></span>
239                </div>
240                
241                <span class="name-tag author">
242                {{#author}}{{{author}}}{{/author}}
243                {{#additional_author_name}}{{^author}}<span class="authors">by </span>{{/author}}{{#author}}<span class="additional-authors">,</span>{{/author}}{{/additional_author_name}}{{#additional_author_name}}<span class="additional-authors">{{additional_author_name}}</span>{{/additional_author_name}}
244                {{#additional_contributor_name}}{{^author}}<span class="authors">{{contributors_label}} </span>{{/author}}{{#author}}<span class="additional-authors">,</span>{{/author}}{{/additional_contributor_name}}{{#additional_contributor_name}}<span class="additional-authors">{{additional_contributor_name}}</span>{{/additional_contributor_name}}
245                </span>
246                <p class="ref-publication">
247                {{#publisher}}<span>via {{publisher}}</span>{{/publisher}}
248               {{^publisher}}{{#publications}}<span>via {{{publications}}}</span>{{/publications}}{{/publisher}}
249                </p>
250              </div>
251            </div>
252          </div>
253        </div>
254        `,
255                    empty: `
256                <span><span>
257            `,
258                },
259            }),
260            instantsearch.widgets
261            .index({ indexName: 'research_event_news' })
262            .addWidgets([
263              instantsearch.widgets.configure({
264                hitsPerPage: 6,
265               filters: weFacetFilters
266                
267              }),
268              instantsearch.widgets.hits({
269                container: '#tab-four-hits',
270                transformItems(items) {
271                    for(let i=0;i<items.length;i++){
272                        items[i]["indexName"]=i; 
273                   }
274                    return items.map(item => (
275                      {
276                      ...item,
277                      hideItem: handleIndex(item),
278                      image: imageHandlerType(item.image, item.media_image, "/styles/410x410/public"),
279                      research_type: handle_research_type_myhoover(item.research_type_name,item.content_type,item.research_category),
280                      author: handleAuthors(item.author_url, item.author_title, item.contributors, item.contributors_label, item.contributors_url,item.editor_url, item.editor_title),
281                      publications: handlePublicationWithUrl(item.publication, item.publication_id ,item.publication_event, item.publication_event_id),
282                      date:dateconverterPublication(item.content_type, item.field_research_date, item.event_date, item.news_date),
283                      content:handleBody(item.body, item.teaser_body, item.news_body),
284                      editLink: handleEdit(item.objectID),
285                      additional_author_name: item.content_type!="news_press"?additional_nameHandler(item.additional_author_name):"",
286                      additional_contributor_name: item.content_type!="news_press"?additional_nameHandler(item.additional_contributor_name):"",
287                      bookmark: handleBookmark(item.objectID)==true?"active":"",
288                      nodeId:handleNodeId(item.objectID),
289                      research_topic_name: typeof(item.research_topic_name)=="object"?item.research_topic_name[0]:item.research_topic_name
290                    }));
291                  },
292                templates: {
293                  item: `
294                  <div class="small-card-wrapper wow wefadeInUp {{hideItem}}" >
295                  <a href="{{{url}}}"{{#external_article_url}}target="_blank"{{/external_article_url}}>.</a>
296                    <div class="small-card-content">
297                <span class="{{#external_article_url}}external-link{{/external_article_url}}">{{researchType}}</span>
298                <h6>{{{title}}}</h6>
299                <div class="small-card-info">
300                {{#editLink}}{{{editLink}}}{{/editLink}}
301                 <div class="author-info without-image">
302                     <div class="name-date">
303               <div class="author-on-hover"><div class="tooltip"></div></div>
304               <span class="name-tag contributors" >  
305               {{#author}}{{{author}}}{{/author}}
306               {{#additional_author_name}}{{^author}}<span class="authors">by </span>{{/author}}{{#author}}<span class="additional-authors">,</span>{{/author}}{{/additional_author_name}}{{#additional_author_name}}<span class="additional-authors">{{additional_author_name}}</span>{{/additional_author_name}}
307               {{#additional_contributor_name}}{{^author}}<span class="authors">{{contributors_label}} </span>{{/author}}{{#author}}<span class="additional-authors">,</span>{{/author}}{{/additional_contributor_name}}{{#additional_contributor_name}}<span class="additional-authors">{{additional_contributor_name}}</span>{{/additional_contributor_name}}
308                </span>
309             </div>
310 
311             <p class="publisher">
312             {{#publisher}}<span>via {{publisher}}</span>{{/publisher}}
313             {{^publisher}}{{#publications}}<span>via {{{publications}}}</span>{{/publications}}{{/publisher}}
314              </p>
315           </div>
316         </div>
317       </div>
318       <div class="small-card-img">
319       <img src="{{image}}" alt="{{title}}">
320       </div>
321     </div>
322                  `,
323                  empty: `
324              <span><span>
325          `,
326                }
327              }),
328            ]),
329        ]);
330
331        /*
332        Initiate algolia search
333        */
334        search.start();
335
336       
337    },2500);
338});
339

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.