Projects - Honda Research Institute USA
An error occurred while processing the template.
The following has evaluated to null or missing:
==> projectImage.uuid [in template "20116#20152#53952" at line 152, column 121]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign projectImageURL = themeDispla... [in template "20116#20152#53952" at line 152, column 25]
----
1<!-- START: Project Filter Template -->
2<!-- start css styles -->
3<style type="text/css">
4 .hri-filter.mainContainer{
5 margin:0 40px 0 0;
6 }
7 .hri-filter .leftContainer {
8 margin-right: 40px;
9 }
10
11 .hri-filter .panel {
12 margin: 0 0 20px 0 !important;
13 }
14 /* Project Styles*/
15 .mainContainer .leftContainer .panel-default>div {
16 padding-right: 0;
17 padding-left: 0;
18 }
19
20 .mainContainer .leftContainer .panel-default>div:nth-child(3n+1) {
21 clear: left;
22 }
23
24 .b-generic-cards__link:hover {
25 text-decoration: none;
26 }
27
28 @media (max-width: 768px){
29 .hri-filter.mainContainer{
30 margin:20px;
31 }
32 .hri-filter .leftContainer{
33 margin:0px
34 }
35 .mainContainer .leftContainer .panel-default>div:nth-child(odd){
36 padding-right:10px;
37 }
38 .mainContainer .leftContainer .panel-default>div:nth-child(even){
39 padding-left:10px;
40 }
41 .mainContainer .leftContainer .panel-default>div:nth-child(3n+1) {
42 clear: revert;
43 }
44 .mainContainer .leftContainer .panel-default>div:nth-child(2n+1) {
45 clear: both;
46 }
47 .b-project .b-card__image {
48 display:block;
49 height: 125px;
50 }
51 .b-project.b-card {
52 border:none;
53 margin-bottom: 10px;
54 }
55 .b-project .b-card__title {
56 padding: 0px 0px;
57 font-size: 12px;
58 line-height: 16px;
59 margin-top:10px;
60 }
61
62 .b-project .b-card__image {
63 display:block;
64 height: 125px;
65 }
66
67 }
68
69</style>
70
71
72<!-- end css styles -->
73<#import "liferay-hri-theme_SERVLET_CONTEXT_/templates/base22/freemarker-utils.ftl" as utils>
74
75<#assign assetEntryQueryService = objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')>
76<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')>
77<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") />
78<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
79<#assign themeDisplay = serviceContext.getThemeDisplay() />
80<#assign currentURL=themeDisplay.getURLCurrent() />
81
82<#assign splittedURL = themeDisplay.getURLCurrent()?split("/") />
83<#assign httpServletRequest = serviceContext.getRequest()>
84<#assign OrderByComparatorFactoryUtil = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"] />
85<#assign categoriesOrderBy = OrderByComparatorFactoryUtil.create("AssetCategory", ["title", false]) />
86<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"] />
87
88<#assign urlCategoryList="${(httpServletRequest.getParameter('categoryList')?html)!''}" />
89
90<#assign allCategories = [] />
91<#assign urlCategoryListArray = urlCategoryList?split(",")/>
92<#list urlCategoryListArray as param>
93 <#assign allCategories = allCategories + [getterUtil.getLong(param)] />
94</#list>
95
96
97<#assign entries = [] />
98
99<#assign search = assetEntryQuery.setAnyCategoryIds(allCategories)>
100<#assign projectStructureId = utils.getStructureIdByName("Project") />
101<#assign search = assetEntryQuery.setClassTypeIds([projectStructureId])>
102<#assign entriesCategories = assetEntryQueryService.getEntries(assetEntryQuery)>
103
104<#assign entries = entriesCategories />
105
106
107<#--assign assetPublisherHelperService = objectUtil('com.liferay.asset.publisher.web.util.AssetPublisherHelper') />
108<#assign renderRequest = objectUtil('com.liferay.portlet.RenderRequestImpl') />
109<#assign renderResponse = objectUtil('com.liferay.portlet.RenderResponseImpl') /-->
110
111<#assign sortType = "DESC" />
112<#assign sortFieldName = "PublicationDate" />
113
114<#assign portletUniqueId = themeDisplay.getPortletDisplay().getId() />
115
116
117<@liferay_portlet["runtime"]
118defaultPreferences=""
119instanceId="projects"+portletUniqueId
120portletName="com_liferay_journal_content_web_portlet_JournalContentPortlet"
121/>
122<div class="mainContainer hri-filter" id="navigate">
123 <#if entries?has_content>
124 <#assign sortedEntries = utils.sortEntries(sortFieldName, sortType, entries) />
125 <div class="leftContainer">
126 <!-- start header html -->
127 <div class="row panel panel-default">
128
129 <!-- end header html -->
130
131 <!-- start item loop -->
132 <#assign pageCounter = 1 />
133 <#assign currentPageCounter = 1 />
134 <#assign lastPageNumber = 0 />
135 <#list sortedEntries as entry>
136 <#assign className = entry.className />
137
138 <#assign classPK = entry.classPK />
139 <#assign renderer = entry.renderer />
140 <#if className == "com.liferay.journal.model.JournalArticle" >
141
142 <#assign document = entry.document />
143 <#assign entryID = entry?counter />
144
145
146 <!-- start item data -->
147 <#assign projectTitle = document.valueOf("//dynamic-element[@name='DisplayTitle']") />
148 <#assign projectImage = document.valueOf("//dynamic-element[@name='SmallImage']")/>
149 <#if projectImage?? && projectImage?trim != "">
150 <#assign projectImage = (projectImage)?replace("\\", "")?eval />
151 </#if>
152 <#assign projectImageURL = themeDisplay.getPortalURL() + "/c/document_library/get_file?uuid=" + projectImage.uuid + "&groupId=" + themeDisplay.getScopeGroupId() />
153 <#assign journalArticle = renderer.getArticle() >
154 <#assign group = groupLocalService.getGroup(journalArticle.getGroupId()) />
155 <#assign baseURL = group.getFriendlyURL()/>
156 <#assign entryURLTitle = renderer.getUrlTitle()>
157
158
159 <#assign url = "/-/" + entryURLTitle />
160 <#if currentURL?matches('.*' + baseURL + '.*') >
161 <#assign url = "/web" + baseURL + "/-/" + entryURLTitle />
162 </#if>
163
164
165 <!-- end item data -->
166
167
168 <!-- start item html-->
169 <div class="col-xs-6 col-md-4">
170 <a class="b-generic-cards__link" href="${url}">
171 <#if (pageCounter < 2) >
172 <div class="b-card b-project page_${pageCounter}">
173 <#else>
174 <div class="b-card b-project page_${pageCounter} hiddenElement">
175 </#if>
176 <div class="b-card__image" style="background-image: url('${projectImageURL}');">
177 <div class="b-card__image--hover"></div>
178 </div>
179
180 <div class="b-card__title">
181 <span>${projectTitle}</span>
182 </div>
183 </div>
184 </a>
185 </div>
186
187 <#assign currentPageCounter = currentPageCounter + 1 />
188 <#assign lastPageNumber = pageCounter />
189 <#if (currentPageCounter > 12) >
190 <#assign pageCounter = pageCounter + 1 />
191 <#assign currentPageCounter = 1 />
192 </#if>
193 <!-- end item html -->
194
195 <!-- start macros -->
196
197 <#macro getYearsCategoryByVocabularyId vocabularyId parentCategoryMatch >
198 <#assign OrderByComparatorFactoryUtil = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"] />
199 <#assign categoriesOrderBy = OrderByComparatorFactoryUtil.create("AssetCategory", ["title", false]) />
200 <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"] />
201
202 <#assign vocabularyCategoryList=assetCategoryLocalServiceUtil.getVocabularyCategories(getterUtil.getLong(vocabularyId), 0, 999, categoriesOrderBy)/>
203 <#assign categoryList=assetCategoryLocalServiceUtil.getCategories(className, classPK)/>
204
205 <#list vocabularyCategoryList as vocabularyCategoryEntry>
206 <#if parentCategoryMatch == vocabularyCategoryEntry.getParentCategoryId() || parentCategoryMatch == vocabularyCategoryEntry.getCategoryId() && parentCategoryMatch != vocabularyCategoryEntry.getCategoryId()>
207
208 <#assign categoryArray = [vocabularyCategoryEntry.getCategoryId()] />
209
210 <#assign search = assetEntryQuery.setAnyCategoryIds(categoryArray)>
211 <#assign search = assetEntryQuery.setClassTypeIds([projectStructureId])>
212 <#assign entriesResults = assetEntryQueryService.getEntries(assetEntryQuery)>
213
214 <#if entriesResults?size gte 1>
215 <div class="checkbox">
216 <#if minimumCategoriesYears?seq_contains(categoryID) || categoriesYears?seq_contains(categoryID)>
217 <input type="checkbox" checked name="filterCategories" id="category_${vocabularyCategoryEntry.getCategoryId()}" value="category_${vocabularyCategoryEntry.getCategoryId()}">
218 <#else>
219 <input type="checkbox" name="filterCategories" id="category_${vocabularyCategoryEntry.getCategoryId()}" value="category_${vocabularyCategoryEntry.getCategoryId()}">
220
221 </#if>
222 <label>${vocabularyCategoryEntry.getName()}</label>
223 </div>
224 </#if>
225
226
227 </#if>
228 </#list>
229 </#macro>
230
231 <#macro getCategoryByVocabularyId vocabularyId parentCategoryMatch>
232 <#assign OrderByComparatorFactoryUtil = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"] />
233 <#assign categoriesOrderBy = OrderByComparatorFactoryUtil.create("AssetCategory", ["title", true]) />
234 <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"] />
235
236 <#assign vocabularyCategoryList=assetCategoryLocalServiceUtil.getVocabularyCategories(getterUtil.getLong(vocabularyId), 0, 999, categoriesOrderBy)/>
237 <#assign categoryList=assetCategoryLocalServiceUtil.getCategories(className, classPK)/>
238 <#list vocabularyCategoryList as vocabularyCategoryEntry>
239 <#if parentCategoryMatch == vocabularyCategoryEntry.getParentCategoryId() || parentCategoryMatch == vocabularyCategoryEntry.getCategoryId() && parentCategoryMatch != vocabularyCategoryEntry.getCategoryId()>
240 <#assign categoryArray = [vocabularyCategoryEntry.getCategoryId()] />
241
242 <#assign search = assetEntryQuery.setAnyCategoryIds(categoryArray)>
243 <#assign search = assetEntryQuery.setClassTypeIds([projectStructureId])>
244 <#assign entriesResults = assetEntryQueryService.getEntries(assetEntryQuery)>
245
246 <#if entriesResults?size gte 1>
247 <div class="checkbox">
248 <input type="checkbox" name="filterCategories" id="category_${vocabularyCategoryEntry.getCategoryId()}" value="category_${vocabularyCategoryEntry.getCategoryId()}">
249 <label>${vocabularyCategoryEntry.getName()}</label>
250 </div>
251 </#if>
252 </#if>
253 </#list>
254 </#macro>
255
256
257 <#macro getCategoryNameByVocabularyId vocabularyId isUpperCase>
258 <#assign OrderByComparatorFactoryUtil = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"] />
259 <#assign categoriesOrderBy = OrderByComparatorFactoryUtil.create("AssetCategory", ["modifiedDate", false]) />
260 <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"] />
261 <#assign vocabularyCategoryList=assetCategoryLocalServiceUtil.getVocabularyCategories(getterUtil.getLong(vocabularyId), 0, 999, categoriesOrderBy)/>
262 <#assign categoryList=assetCategoryLocalServiceUtil.getCategories(className, classPK)/>
263 <#list vocabularyCategoryList as vocabularyCategoryEntry>
264 <#list categoryList as categoryEntry>
265 <#if categoryEntry.getName() == vocabularyCategoryEntry.getName() >
266 <#assign categoryName = categoryEntry.getName() />
267 <#if isUpperCase>
268 <span>${categoryName?upper_case}</span>
269 <#else>
270 <span>${categoryName}</span>
271 </#if>
272 </#if>
273 </#list>
274 </#list>
275 </#macro>
276 <!-- end macros -->
277
278 <!-- start functions -->
279
280 <!-- end functions -->
281 </#if>
282 </#list>
283 <!-- end item loop -->
284
285 <!-- start footer -->
286 </div>
287 <!-- end footer -->
288
289 <#if (pageCounter > 1) >
290 <div id="paginationContainer" class="col-sm-12 clearfix" >
291 <nav>
292 <ul class="pagination">
293
294 <li id="paginationPrevious" class="disabled">
295 <a aria-label="Previous">
296 <span aria-hidden="true"><</span>
297 </a>
298 </li>
299 <#list entries as entry>
300 <#if (entry?counter <= lastPageNumber) >
301 <#if (entry?counter == 1)>
302 <li class="addedPage active" data-page="${entry?counter}">
303 <a class="" id="pageIndex_${entry?counter}">${entry?counter}</a>
304 </li>
305 <#else>
306 <#if (entry?counter > 10) >
307 <li class="addedPage hidden" data-page="${entry?counter}">
308 <#else>
309 <li class="addedPage" data-page="${entry?counter}">
310 </#if>
311 <a class="" id="pageIndex_${entry?counter}">${entry?counter}</a>
312 </li>
313 </#if>
314 <#else>
315 <#break>
316 </#if>
317 </#list>
318 <li id="paginationNext" class="">
319 <a aria-label="Next">
320 <span aria-hidden="true">></span>
321 </a>
322 </li>
323 </ul>
324 </nav>
325 </div>
326 </#if>
327 </div>
328 <#else>
329 <div class="leftContainer">
330 <div class="panel panel-no-results">
331 <h6><@liferay.language key="label.no-projects-results-title"/></h6>
332 <p class="hri-metadata"><@liferay.language key="label.no-publications-results-subtitle"/></p>
333 </div>
334 </div>
335
336 </#if>
337 <div class="rightContainer">
338 <div class="filtersContainer">
339 <div class="b-widget__title">
340 <h4><@liferay.language key="label.filter-projects" /></h4>
341 </div>
342 <div id="visibiblityFilter">
343 <button type="button" class="b-button show-results active"><@liferay.language key="label.show-results" /> </button>
344 <button type="button" class="b-button show-all-results"><@liferay.language key="label.show-all-results" /> </button>
345
346 </div>
347 <div id="yearsFilter" class="filter">
348
349 <#assign allPublicationsYearsVocabularyId = utils.getVocabularyId('All Publication Years') />
350 <#assign allPublicationsYearsCategoryId = utils.getCategoryIdByName(allPublicationsYearsVocabularyId,'All Publication Years') />
351
352 <div class="filter-title ">
353 <a class="collapsed" data-toggle="collapse" href="#years-options-container">Year </a>
354 </div>
355
356 <div class="collapse multi-collapse clearfix" id="years-options-container">
357 <div class="collapsable-filter">
358 <@getYearsCategoryByVocabularyId allPublicationsYearsVocabularyId allPublicationsYearsCategoryId/>
359 </div>
360 </div>
361 </div>
362
363 <div id="scientificDomainsFilter" class="filter">
364
365 <#assign scientificDomainsVocabularyId = utils.getVocabularyId('All Scientific Domains') />
366 <#assign allScientificDomainsCategoryId = utils.getCategoryIdByName(scientificDomainsVocabularyId,'All Scientific Domains') />
367 <div class="filter-title ">
368 <a class="collapsed" data-toggle="collapse" href="#scientificDomains-options-container">Scientific Domains</a>
369 </div>
370 <div class="collapse multi-collapse clearfix" id="scientificDomains-options-container">
371 <div class="collapsable-filter">
372
373 <div class="checkbox">
374 <input type="checkbox" name="filterCategories" id="category_${allScientificDomainsCategoryId}" value="category_${allScientificDomainsCategoryId}">
375 <label>All Scientific Domains</label>
376 </div>
377 <@getCategoryByVocabularyId scientificDomainsVocabularyId allScientificDomainsCategoryId />
378 </div>
379 </div>
380 </div>
381
382 <div id="researchAreasFilter" class="filter">
383
384 <#assign allContentTypesVocabularyId = utils.getVocabularyId('All Research Areas') />
385 <#assign allResearchAreasVocabularyId = utils.getCategoryIdByName(allContentTypesVocabularyId,'All Research Areas') />
386 <div class="filter-title ">
387 <a class="collapsed" data-toggle="collapse" href="#researchAreas-options-container">Research Areas </a>
388 </div>
389
390 <div class="collapse multi-collapse clearfix" id="researchAreas-options-container">
391 <div class="collapsable-filter">
392 <div class="checkbox">
393
394 <input type="checkbox" name="filterCategories" id="category_${allResearchAreasVocabularyId}" value="category_${allResearchAreasVocabularyId}">
395 <label>All Research Areas</label>
396 </div>
397 <@getCategoryByVocabularyId allContentTypesVocabularyId allResearchAreasVocabularyId />
398 </div>
399 </div>
400 </div>
401
402
403
404 <div id="projectFilterControls">
405 <div class="applyFilters">
406 <button type="button" id="applyFilters" class="b-button"><@liferay.language key="label.apply-filters" /></button>
407 </div>
408
409 <div class="clearFilters">
410 <button type="button" id="clearFilters" class="b-button"><@liferay.language key="label.clear-filters" /></button>
411 </div>
412 </div>
413 </div>
414 </div>
415</div>
416
417
418<script type="text/javascript">
419
420 var globalPaginationCount = 0;
421 var lowerLimitPagination = 1
422 var middleLimitPagination = 5;
423 var upperLimitPagination = 10;
424 var lowerModifier = 4;
425 var upperModifier = 5;
426 (function($){
427 /*if(!window.endNavigation)
428 {
429 window.endNavigation = Liferay.on('endNavigate', function(event) {
430 if(!!window.startFilters)
431 {
432 startFilters();
433 }
434 });
435 } */
436 AUI().ready("aui-module", function() {
437 startFilters();
438 startPagination();
439 //startDateFilter();
440 if (globalPaginationCount <= 1)
441 {
442 $("#paginationNext").attr("class", "disabled");
443 }
444 });
445 })(jQuery);
446
447
448
449
450 function startPagination(){
451 // When clicking on a pagination number
452 globalPaginationCount = $(".addedPage").length;
453
454
455 //Clicking any page number
456 $(".addedPage").on("click", function(){
457 // Get what will be previous page
458 var previousPage = $(".pagination > li.active").data("page");
459
460 // Update pagination class active
461 $(".pagination > li.active").removeClass("active");
462 $(this).addClass("active");
463
464 // Get current page
465 var currentPage = $(this).data("page");
466
467 // Hide previous page elements
468 $(".page_" + previousPage).addClass("hiddenElement");
469
470 // Show current page elements
471 $(".page_" + currentPage).removeClass("hiddenElement");
472
473 // Enable or disable arrows and last/first buttons
474 if (currentPage != 1)
475 {
476 $("#paginationPrevious").attr("class", "");
477 $("#paginationFirst").attr("class", "");
478 }
479 else
480 {
481 $("#paginationPrevious").attr("class", "disabled");
482 $("#paginationFirst").attr("class", "disabled");
483 }
484
485 if (currentPage != globalPaginationCount)
486 {
487 $("#paginationNext").attr("class", "");
488 $("#paginationLast").attr("class", "");
489 }
490 else
491 {
492 $("#paginationNext").attr("class", "disabled");
493 $("#paginationLast").attr("class", "disabled");
494 }
495
496 // Updating list pagination numbers
497 if (currentPage > middleLimitPagination) // Cambiar a >= cuando la cuenta sea de 10
498 {
499 if (currentPage + upperModifier > globalPaginationCount)
500 {
501 upperLimitPagination = globalPaginationCount;
502 lowerLimitPagination = globalPaginationCount - lowerModifier - upperModifier;
503 middleLimitPagination = lowerLimitPagination + lowerModifier;
504 }
505 else
506 {
507 middleLimitPagination = currentPage;
508 upperLimitPagination = middleLimitPagination + upperModifier;
509 lowerLimitPagination = middleLimitPagination - lowerModifier;
510 }
511
512 // Update pagination display
513 $(".addedPage").each(function(){
514 currentPage = $(this).data("page");
515 if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination)
516 {
517 // Show current page number
518 $(this).removeClass("hidden");
519 }
520 else
521 {
522 // Hide current page number
523 $(this).addClass("hidden");
524 }
525 });
526 }
527 else
528 {
529 if (currentPage - lowerModifier < 1)
530 {
531 lowerLimitPagination = 1;
532 upperLimitPagination = lowerLimitPagination + lowerModifier + upperModifier;
533 middleLimitPagination = lowerLimitPagination + upperModifier;
534 }
535 else
536 {
537 middleLimitPagination = currentPage;
538 upperLimitPagination = middleLimitPagination + upperModifier;
539 lowerLimitPagination = middleLimitPagination - lowerModifier;
540 }
541
542 // Update pagination display
543 $(".addedPage").each(function(){
544 currentPage = $(this).data("page");
545 if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination)
546 {
547 // Show current page number
548 $(this).removeClass("hidden");
549 }
550 else
551 {
552 // Hide current page number
553 $(this).addClass("hidden");
554 }
555 });
556 }
557
558 });
559
560 // When clicking on the first button
561 $("#pageIndex_First").on("click", function(){
562 // Get what will be previous page
563 var previousPage = $(".pagination > li.active").data("page");
564
565 // Update pagination class active
566 $(".pagination > li.active").removeClass("active");
567 $("#pageIndex_1").parent().addClass("active");
568
569 // Get current page
570 var currentPage = 1;
571
572 // Hide previous page elements
573 $(".page_" + previousPage).addClass("hiddenElement");
574
575 // Show current page elements
576 $(".page_" + currentPage).removeClass("hiddenElement");
577
578 // Enable or disable arrows
579 if (currentPage != 1)
580 {
581 $("#paginationPrevious").attr("class", "");
582 }
583 else
584 {
585 $("#paginationPrevious").attr("class", "disabled");
586 }
587
588 if (currentPage != globalPaginationCount)
589 {
590 $("#paginationNext").attr("class", "");
591 }
592 else
593 {
594 $("#paginationNext").attr("class", "disabled");
595 }
596
597 // Updating list pagination numbers
598 if (currentPage > middleLimitPagination) // Cambiar a >= cuando la cuenta sea de 10
599 {
600 if (currentPage + upperModifier > globalPaginationCount)
601 {
602 upperLimitPagination = globalPaginationCount;
603 lowerLimitPagination = globalPaginationCount - lowerModifier - upperModifier;
604 middleLimitPagination = lowerLimitPagination + lowerModifier;
605 }
606 else
607 {
608 middleLimitPagination = currentPage;
609 upperLimitPagination = middleLimitPagination + upperModifier;
610 lowerLimitPagination = middleLimitPagination - lowerModifier;
611 }
612
613 // Update pagination display
614 $(".addedPage").each(function(){
615 currentPage = $(this).data("page");
616 if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination)
617 {
618 // Show current page number
619 $(this).removeClass("hidden");
620 }
621 else
622 {
623 // Hide current page number
624 $(this).addClass("hidden");
625 }
626 });
627 }
628 else
629 {
630 if (currentPage - lowerModifier < 1)
631 {
632 //console.log("Entered here: " + (currentPage - lowerModifier < 1) );
633 lowerLimitPagination = 1;
634 upperLimitPagination = lowerLimitPagination + lowerModifier + upperModifier;
635 middleLimitPagination = lowerLimitPagination + upperModifier;
636 }
637 else
638 {
639 middleLimitPagination = currentPage;
640 upperLimitPagination = middleLimitPagination + upperModifier;
641 lowerLimitPagination = middleLimitPagination - lowerModifier;
642 }
643
644 // Update pagination display
645 $(".addedPage").each(function(){
646
647 currentPage = $(this).data("page");
648 if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination)
649 {
650 // Show current page number
651 $(this).removeClass("hidden");
652 }
653 else
654 {
655 // Hide current page number
656 $(this).addClass("hidden");
657 }
658 });
659 }
660
661 $("#paginationFirst").addClass("disabled");
662
663 if($("#paginationLast").hasClass("disabled") && (globalPaginationCount > 1)){
664 $("#paginationLast").removeClass("disabled");
665 }
666
667
668 });
669
670 // When clicking on the last button
671 $("#pageIndex_Last").on("click", function(){
672 // Get what will be previous page
673 var lastPageIndexId = "#pageIndex_" + globalPaginationCount;
674 var previousPage = $(".pagination > li.active").data("page");
675
676 // Update pagination class active
677 $(".pagination > li.active").removeClass("active");
678 $(lastPageIndexId).parent().addClass("active");
679
680 // Get current page
681 var currentPage = globalPaginationCount
682
683 // Hide previous page elements
684 $(".page_" + previousPage).addClass("hiddenElement");
685
686 // Show current page elements
687 $(".page_" + currentPage).removeClass("hiddenElement");
688
689 // Enable or disable arrows
690 if (currentPage != 1)
691 {
692 $("#paginationPrevious").attr("class", "");
693 }
694 else
695 {
696 $("#paginationPrevious").attr("class", "disabled");
697 }
698
699 if (currentPage != globalPaginationCount)
700 {
701 $("#paginationNext").attr("class", "");
702 }
703 else
704 {
705 $("#paginationNext").attr("class", "disabled");
706 }
707
708 // Updating list pagination numbers
709 if (currentPage > middleLimitPagination) // Cambiar a >= cuando la cuenta sea de 10
710 {
711 if (currentPage + upperModifier > globalPaginationCount)
712 {
713 upperLimitPagination = globalPaginationCount;
714 lowerLimitPagination = globalPaginationCount - lowerModifier - upperModifier;
715 middleLimitPagination = lowerLimitPagination + lowerModifier;
716 }
717 else
718 {
719 middleLimitPagination = currentPage;
720 upperLimitPagination = middleLimitPagination + upperModifier;
721 lowerLimitPagination = middleLimitPagination - lowerModifier;
722 }
723
724 // Update pagination display
725 $(".addedPage").each(function(){
726 currentPage = $(this).data("page");
727 if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination)
728 {
729 // Show current page number
730 $(this).removeClass("hidden");
731 }
732 else
733 {
734 // Hide current page number
735 $(this).addClass("hidden");
736 }
737 });
738 }
739 else
740 {
741 if (currentPage - lowerModifier < 1)
742 {
743 lowerLimitPagination = 1;
744 upperLimitPagination = lowerLimitPagination + lowerModifier + upperModifier;
745 middleLimitPagination = lowerLimitPagination + upperModifier;
746 }
747 else
748 {
749 middleLimitPagination = currentPage;
750 upperLimitPagination = middleLimitPagination + upperModifier;
751 lowerLimitPagination = middleLimitPagination - lowerModifier;
752 }
753
754 // Update pagination display
755 $(".addedPage").each(function(){
756 currentPage = $(this).data("page");
757 if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination)
758 {
759 // Show current page number
760 $(this).removeClass("hidden");
761 }
762 else
763 {
764 // Hide current page number
765 $(this).addClass("hidden");
766 }
767 });
768 }
769
770 $("#paginationLast").addClass("disabled");
771
772 if($("#paginationFirst").hasClass("disabled") && (globalPaginationCount > 1)){
773 $("#paginationFirst").removeClass("disabled");
774 }
775
776 });
777
778
779 // When clicking on the previous icon
780 $("#paginationPrevious").on("click", function(){
781 if ($(this).attr("class") == "")
782 {
783 // Get previous page
784 var previousPage = $(".pagination > li.active").data("page");
785 var currentPage = previousPage - 1;
786
787 if (currentPage <= 0)
788 {
789 currentPage = 1;
790 }
791
792 // Update pagination class active
793 $(".pagination > li.active").removeClass("active");
794 $(".addedPage").each(function(){
795 if ($(this).data("page") == currentPage)
796 {
797 // Hide previous page elements
798 $(".page_" + previousPage).addClass("hiddenElement");
799
800 // Show current page elements
801 $(".page_" + currentPage).removeClass("hiddenElement");
802
803 $(this).addClass("active");
804 }
805 });
806
807 // Enable or disable previous arrow
808 if (currentPage != 1)
809 {
810 $("#paginationPrevious").attr("class", "");
811 $("#paginationFirst").attr("class", "");
812 }
813 else
814 {
815 $("#paginationPrevious").attr("class", "disabled");
816 $("#paginationFirst").attr("class", "disabled");
817 }
818
819 // Enable or disable next arrow
820 if (currentPage != globalPaginationCount)
821 {
822 $("#paginationNext").attr("class", "");
823 $("#paginationLast").attr("class", "");
824 }
825 else
826 {
827 $("#paginationNext").attr("class", "disabled");
828 $("#paginationLast").attr("class", "disabled");
829 }
830
831 if (currentPage - lowerModifier < 1)
832 {
833 lowerLimitPagination = 1;
834 upperLimitPagination = lowerLimitPagination + lowerModifier + upperModifier;
835 middleLimitPagination = lowerLimitPagination + upperModifier;
836 }
837 else
838 {
839 middleLimitPagination = currentPage;
840 upperLimitPagination = middleLimitPagination + upperModifier;
841 lowerLimitPagination = middleLimitPagination - lowerModifier;
842 }
843
844 // Update pagination display
845 $(".addedPage").each(function(){
846 currentPage = $(this).data("page");
847 if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination)
848 {
849 // Show current page number
850 $(this).removeClass("hidden");
851 }
852 else
853 {
854 // Hide current page number
855 $(this).addClass("hidden");
856 }
857 });
858 }
859 });
860
861 // When clicking on the next icon
862 $("#paginationNext").on("click", function(){
863 if ($(this).attr("class") == "")
864 {
865 // Get previous page
866 var previousPage = $(".pagination > li.active").data("page");
867 var currentPage = previousPage + 1;
868
869 if (currentPage > globalPaginationCount)
870 {
871 currentPage = globalPaginationCount;
872 }
873
874
875
876 // Update pagination class active
877 $(".pagination > li.active").removeClass("active");
878 $(".addedPage").each(function(){
879 if ($(this).data("page") == currentPage)
880 {
881 // Hide previous page elements
882 $(".page_" + previousPage).addClass("hiddenElement");
883
884 // Show current page elements
885 $(".page_" + currentPage).removeClass("hiddenElement");
886
887 $(this).addClass("active");
888 }
889 });
890
891 // Enable or disable next arrow
892 if (currentPage != globalPaginationCount)
893 {
894 $("#paginationNext").attr("class", "");
895 $("#paginationLast").attr("class", "");
896 }
897 else
898 {
899 $("#paginationNext").attr("class", "disabled");
900 $("#paginationLast").attr("class", "disabled");
901 }
902
903 // Enable or disable previous arrow
904 if (currentPage != 1)
905 {
906 $("#paginationPrevious").attr("class", "");
907 $("#paginationFirst").attr("class", "");
908 }
909 else
910 {
911 $("#paginationPrevious").attr("class", "disabled");
912 $("#paginationFirst").attr("class", "disabled");
913 }
914
915 // Updating list pagination numbers
916 if (currentPage > middleLimitPagination) // Cambiar a >= cuando la cuenta sea de 10
917 {
918 if (currentPage + upperModifier > globalPaginationCount)
919 {
920 upperLimitPagination = globalPaginationCount;
921 lowerLimitPagination = globalPaginationCount - lowerModifier - upperModifier;
922 middleLimitPagination = lowerLimitPagination + lowerModifier;
923 }
924 else
925 {
926 middleLimitPagination = currentPage;
927 upperLimitPagination = middleLimitPagination + upperModifier;
928 lowerLimitPagination = middleLimitPagination - lowerModifier;
929 }
930
931 // Update pagination display
932 $(".addedPage").each(function(){
933 currentPage = $(this).data("page");
934 if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination)
935 {
936 // Show current page number
937 $(this).removeClass("hidden");
938 }
939 else
940 {
941 // Hide current page number
942 $(this).addClass("hidden");
943 }
944 });
945 }
946 }
947 });
948 }
949
950 function startFilters(){
951 // Action when clicking submit filters
952 $(".applyFilters").on("click", function(){
953 var allCategories = [];
954 var categoryString = "";
955 $("input:checkbox[name=filterCategories]:checked").each(function () {
956 var splitCategory = $(this).val().split("_");
957 allCategories.push(splitCategory[1]);
958 });
959
960 for (var i = 0; i < allCategories.length; i ++)
961 {
962 categoryString += allCategories[i];
963
964 if (i != allCategories.length - 1)
965 {
966 categoryString += ",";
967 }
968 }
969 var url = window.location.href;
970 url = url.split('?')[0];
971 url=queryStringUrlReplacement(url, "categoryList", allCategories)
972 window.location.href = url+"#navigate";
973 });
974
975 // Action when clicking clear filters
976 $(".clearFilters").on("click", function(){
977 $("input:checkbox[name=filterCategories]:checked").each(function () {
978 $(this).prop('checked', false);
979 });
980 var firstYear = 1998;
981 var currentYear = (new Date()).getFullYear();
982 var url = window.location.href;
983 url = url.split('?')[0];
984 url=queryStringUrlReplacement(url, "categoryList", "")
985 window.location.href = url+"#navigate";
986 });
987
988 var categoryList = getUrlParameter("categoryList");
989
990 if (categoryList != null && categoryList != ""){
991 listOfCategories = categoryList.split(",");
992
993 for (var i = 0; i < listOfCategories.length; i ++)
994 {
995 $("#category_" + listOfCategories[i]).prop('checked', true);
996 }
997 }
998
999 $(".filtersContainer .filter:not(#yearsFilter) .checkbox:first-child").on("click", function(){
1000 var parentCheckbox = $(this).find("input").is(":checked");
1001
1002 var listOfCheckboxes = $(this).parent().find("input");
1003
1004 for (var i = 0; i < listOfCheckboxes.length; i ++)
1005 {
1006 if (parentCheckbox)
1007 {
1008 listOfCheckboxes[i].checked = true;
1009 }
1010 else
1011 {
1012 listOfCheckboxes[i].checked = false;
1013 }
1014 }
1015 });
1016
1017 $(".filtersContainer .filter:not(#yearsFilter) .checkbox:not(:first-child)").on("click", function(){
1018
1019 var parentCheckbox = $(this).parent().find(".checkbox:first-child input");
1020 var currentChecbox = $(this).find("input").is(":checked");
1021
1022 if (!currentChecbox)
1023 {
1024 parentCheckbox.prop("checked", false);
1025 }
1026
1027 });
1028
1029 $("#visibiblityFilter .show-all-results").on("click", function(){
1030 $(".hiddenElement").removeClass("hiddenElement")
1031 $(this).addClass("active");
1032 $("#visibiblityFilter .show-results").removeClass("active");
1033 $("#paginationContainer").addClass("hiddenElement");
1034 });
1035 $("#visibiblityFilter .show-results").on("click", function(){
1036 if($(".addedPage").length>0){
1037 $(".addedPage")[0].click();
1038 }
1039 $(".b-project:not(.page_1)").addClass("hiddenElement");
1040 $(this).addClass("active");
1041 $("#visibiblityFilter .show-all-results").removeClass("active");
1042 $("#paginationContainer").removeClass("hiddenElement");
1043 });
1044
1045 $(".filter").each(function(){
1046 var container=$(this);
1047 var containerListItems=container.find(".checkbox");
1048 if(containerListItems.length<=1){
1049 container.hide()
1050 }
1051 })
1052
1053 /*$(".filter").each(function(){
1054 var optionsCount=$(this).find(".checkbox").length;
1055 if(optionsCount<=1){
1056 $(this).addClass("hidden")
1057 }
1058
1059 })*/
1060
1061 }
1062
1063 function queryStringUrlReplacement(url, param, value) {
1064 var re = new RegExp("[\\?&]" + param + "=([^&#]*)"), match = re.exec(url), delimiter, newString;
1065
1066 if (match === null) {
1067 // append new param
1068 var hasQuestionMark = /\?/.test(url);
1069 delimiter = hasQuestionMark ? "&" : "?";
1070 newString = url + delimiter + param + "=" + value;
1071 } else {
1072 delimiter = match[0].charAt(0);
1073 newString = url.replace(re, delimiter + param + "=" + value);
1074 }
1075
1076 return newString;
1077 }
1078
1079 function getUrlParameter(paramName){
1080 var results = new RegExp('[\?&]' + paramName + '=([^&#]*)').exec(window.location.href);
1081 if (results == null)
1082 {
1083 return null;
1084 }
1085 return results[1] || 0;
1086 }
1087</script>
1088<!-- END: Project Filter Template -->