From 5664be4a43ec202a61105b58eaedc36b72056e7e Mon Sep 17 00:00:00 2001 From: Tim Worrall Date: Mon, 16 Mar 2015 11:02:33 -0400 Subject: [PATCH] VIVO-970: needed to break out the more/less javascript toggle into a separate file. --- .../web/js/individual/moreLessController.js | 91 +++++++++++++++++++ .../body/individual/individual-vitro.ftl | 1 + 2 files changed, 92 insertions(+) create mode 100644 webapp/web/js/individual/moreLessController.js diff --git a/webapp/web/js/individual/moreLessController.js b/webapp/web/js/individual/moreLessController.js new file mode 100644 index 000000000..a9d61d7d5 --- /dev/null +++ b/webapp/web/js/individual/moreLessController.js @@ -0,0 +1,91 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +$(document).ready(function(){ + + $.fn.exists = function () { + return this.length !== 0; + } + + $.fn.moreLess = function () { + $(this).each + } + + var togglePropDisplay = { + showMore: function($toggleLink, $itemContainer) { + $toggleLink.click(function() { + $itemContainer.show(); + $(this).attr('href', '#show less content'); + $(this).text(i18nStrings.displayLess); + togglePropDisplay.showLess($toggleLink, $itemContainer); + return false; + }); + }, + + showLess: function($toggleLink, $itemContainer) { + $toggleLink.click(function() { + $itemContainer.hide(); + $(this).attr('href', '#show more content'); + $(this).text(i18nStrings.displayMoreEllipsis); + togglePropDisplay.showMore($toggleLink, $itemContainer); + return false; + }); + } + }; + + // var $propList = $('.property-list').not('>li>ul'); + var $propList = $('.property-list:not(:has(>li>ul))'); + $propList.each(function() { + var limit = $(this).attr("displayLimit"); + var $additionalItems = $(this).find('li:gt(' + (limit - 1) + ')'); + if ( $additionalItems.exists() ) { + // create container for additional elements + var $itemContainer = $('
').appendTo(this); + + // create toggle link + var $toggleLink = $('' + i18nStrings.displayMoreEllipsis + '').appendTo(this); + + $additionalItems.appendTo($itemContainer); + + $itemContainer.hide(); + + togglePropDisplay.showMore($toggleLink, $itemContainer); + } + }); + + var $subPropList = $('.subclass-property-list'); + $subPropList.each(function() { + var limit = $(this).parent().parent().attr("displayLimit"); + var $additionalItems = $(this).find('li:gt(' + (limit - 1) + ')'); + if ( $additionalItems.exists() ) { + // create container for additional elements + var $itemContainer = $('
').appendTo(this); + + // create toggle link + var $toggleLink = $('' + i18nStrings.displayMoreEllipsis + '').appendTo(this); + + $additionalItems.appendTo($itemContainer); + + $itemContainer.hide(); + + togglePropDisplay.showMore($toggleLink, $itemContainer); + } + }); + + var $subPropSibs = $subPropList.closest('li').last().nextAll(); + var $subPropParent = $subPropList.closest('li').last().parent(); + var $additionalItems = $subPropSibs.slice(3); + if ( $additionalItems.length > 0 ) { + // create container for additional elements + var $itemContainer = $('
').appendTo($subPropParent); + + // create toggle link + var $toggleLink = $('' + i18nStrings.displayMoreEllipsis + '').appendTo($subPropParent); + + $additionalItems.appendTo($itemContainer); + + $itemContainer.hide(); + + togglePropDisplay.showMore($toggleLink, $itemContainer); + } + +}); diff --git a/webapp/web/templates/freemarker/body/individual/individual-vitro.ftl b/webapp/web/templates/freemarker/body/individual/individual-vitro.ftl index f37214ebc..6f896d0bb 100644 --- a/webapp/web/templates/freemarker/body/individual/individual-vitro.ftl +++ b/webapp/web/templates/freemarker/body/individual/individual-vitro.ftl @@ -94,6 +94,7 @@ ${headScripts.add('')} ${scripts.add('', + '', '')}