Ignore:
Timestamp:
2023-10-24T14:28:05+13:00 (8 months ago)
Author:
kjdon
Message:

some more commits for facets. changed the buttons to use a sorting icon. uses scroll plus see more/less in case you want to expand the list

Location:
main/trunk/greenstone3/web/interfaces/default
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/default/js/facet-scripts.js

    r38152 r38327  
    1 
    21var facetSortOptions = {
    32    valueNames: [ 'facet', 'count' ]
    43}
    54
     5function setUpFacetList(indexname)
     6{
     7    var newList = new List(indexname, facetSortOptions);
     8    enableMoreButtonIfNeeded(indexname);
     9}
     10
     11function enableMoreButtonIfNeeded(indexname) {
     12    var morelink = $(".expandFacetList" + indexname);
     13    var tables = $(".facetTable");
     14    for(var i = 0; i < tables.length; i++)
     15    {
     16        var $current = $(tables[i]);
     17        if($current.attr("indexname") == indexname) {
     18        var current = $current[0];
     19        if (current.clientHeight < current.scrollHeight) {
     20        morelink.css("display", "block");
     21        }
     22        break;
     23    }
     24    }
     25
     26}
    627
    728function getFacetQueryString(facetsThatAreChecked)
     
    2041    var allCheckBoxes = $("#facetSelector input");
    2142    var counts = new Array();
    22 //    var facetsThatAreChecked = new Set();
     43
    2344    for(var i = 0; i < allCheckBoxes.length; i++)
    2445    {
     
    99120            // only replace the facets that haven't been selected
    100121            var $current_facets = $(".facetContainer");
     122         
    101123            for (var i=0; i<$current_facets.length; i++) {
    102124            var $current = $($current_facets[i]);
     
    106128                var $newNode =$response.find('#'+indexName);
    107129                $current.replaceWith($newNode);
     130                enableMoreButtonIfNeeded(indexName);
    108131            }
    109132            }
     
    207230
    208231}
    209 
    210 function expandFacetList(indexName, countSize)
     232var savedFacetHeight;
     233function expandFacets(indexname)
     234{
     235    var tables = $(".facetTable");
     236    for(var i = 0; i < tables.length; i++)
     237    {
     238        var current = $(tables[i]);
     239        if(current.attr("indexname") == indexname)
     240        {
     241        savedFacetHeight = current.css("max-height");
     242        current.css("max-height", "none");
     243        break;
     244    }
     245
     246    }
     247
     248    var morelink = $(".expandFacetList" + indexname);
     249    morelink.css("display", "none");
     250    var lesslink = $(".collapseFacetList" + indexname);
     251    lesslink.css("display", "block");
     252
     253
     254}
     255
     256function collapseFacets(indexname)
     257{
     258    console.log("collapse "+indexname);
     259    var tables = $(".facetTable");
     260
     261    for(var i = 0; i < tables.length; i++)
     262    {
     263        var current = $(tables[i]);
     264        if(current.attr("indexname") == indexname)
     265        {
     266            current.css("max-height", savedFacetHeight);
     267            break;
     268    }
     269
     270    }
     271
     272    // the above code has hidden both the see more and see less links.
     273    // display the see more one
     274    var morelink = $(".expandFacetList" + indexname);
     275    morelink.css("display", "block");
     276    var lesslink = $(".collapseFacetList" + indexname);
     277    lesslink.css("display", "none");
     278
     279}
     280
     281
     282   
     283function expandFacetListORIG(indexName, countSize)
    211284{
    212285    var tables = $(".facetTable");
     
    238311}
    239312
    240 function collapseFacetList(indexName, countSize)
     313function collapseFacetListORIG(indexName, countSize)
    241314{
    242315    var tables = $(".facetTable");
  • main/trunk/greenstone3/web/interfaces/default/transform/pages/query.xsl

    r38152 r38327  
    117117  <xsl:template name="displayFacets">
    118118    <script type="text/javascript" src="interfaces/{$interface_name}/js/utility_scripts.js"><xsl:text> </xsl:text></script>
    119     <script type="text/javascript" src="interfaces/{$interface_name}/js/facet-scripts.js">
    120       <xsl:text> </xsl:text></script>
    121       <script type="text/javascript" src="interfaces/default/js/List.js">
    122       <xsl:text> </xsl:text></script>
     119    <script type="text/javascript" src="interfaces/{$interface_name}/js/facet-scripts.js"><xsl:text> </xsl:text></script>
     120    <script type="text/javascript" src="interfaces/default/js/List.js"><xsl:text> </xsl:text></script>
    123121    <div id="facetSelector" >
    124122      <xsl:for-each select="/page/pageResponse/facetList/facet">
     
    131129          <xsl:value-of select="@name"/>
    132130        </xsl:variable>
    133         <xsl:variable name="countSize">
    134           <xsl:choose>
    135         <xsl:when test="/page/pageResponse/format[@type='search']/gsf:option[@name='facetTableRows']">
    136           <xsl:value-of select="/page/pageResponse/format[@type='search']/gsf:option[@name='facetTableRows']/@value"/>
    137         </xsl:when>
    138         <xsl:otherwise>8</xsl:otherwise>
    139           </xsl:choose>
    140         </xsl:variable>
    141        
    142         <li class="ui-widget-header" style="text-transform:capitalize; text-align:center;">
     131        <div class="ui-widget-header" style="text-transform:capitalize; text-align:center;">
    143132          <xsl:value-of select="displayItem[@name='name']"/>
    144         </li>
    145         <input class="search" placeholder="Search" /><button class="sort" data-sort="facet">Sort by facet</button><button class="sort" data-sort="count">Sort by count</button>
     133        </div>
     134        <xsl:variable name="filterText"><gsf:interfaceText name="query.facet.filter"/></xsl:variable>
     135        <div class="facetControls">
     136        <input class="search" placeholder="{$filterText}" /><span class="sort" data-sort="facet"><img width="15" style="width:15px;" alt="Sort" src="interfaces/{$interface_name}/images/sort.png"/><gsf:interfaceText name="query.facet.az"/>  </span><span class="sort" data-sort="count"><img width="15" style="width:15px;" alt="Sort" src="interfaces/{$interface_name}/images/sort.png"/><gsf:interfaceText name="query.facet.freq"/></span></div>
    146137        <ul class="list facetTable"  indexName="{@name}">
    147138        <xsl:for-each select="count">
    148139          <li>
    149         <xsl:attribute name="style">
    150           <xsl:if test="position() > $countSize">display:none;<xsl:value-of select="$indexShortName"/>
    151           </xsl:if>
    152         </xsl:attribute>
    153140        <input type="checkbox" onclick="performRefinedSearch();"/>
    154141        <span class="facet"><xsl:value-of select="@name"/></span>
     
    157144        </xsl:for-each>
    158145        </ul>
    159         <xsl:if test="count(count) > $countSize">
    160           <li class="expandFacetList{$indexShortName}">
    161         <a class="expandFacetListLink{$indexShortName}" href="javascript:expandFacetList('{$indexShortName}', {$countSize});"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.facet.more')"/></a>
    162           </li>
    163           <li class="collapseFacetList{$indexShortName}" style="display: none;">
    164         <a  class="collapseFacetListLink{$indexShortName}" href="javascript:collapseFacetList('{$indexShortName}', {$countSize});"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'query.facet.less')"/></a>
    165           </li>
    166         </xsl:if>
     146        <!-- set up see more/less buttons, hidden to start with. Will enable them with js later -->
     147        <span class="expandFacetList{$indexShortName}" style="display:none">
     148          <a class="expandFacetListLink{$indexShortName}" href="javascript:expandFacets('{$indexShortName}');"><gsf:interfaceText name="query.facet.more"/></a>
     149        </span>
     150        <span class="collapseFacetList{$indexShortName}" style="display: none;">
     151          <a  class="collapseFacetListLink{$indexShortName}" href="javascript:collapseFacets('{$indexShortName}');"><gsf:interfaceText name="query.facet.less"/></a>
     152        </span>
    167153      </div>
     154     
    168155      <script type="text/javascript">
    169 <xsl:text disable-output-escaping="yes">var facetList</xsl:text><xsl:value-of select="@name"/><xsl:text disable-output-escaping="yes"> = new List('</xsl:text><xsl:value-of select="@name"/><xsl:text disable-output-escaping="yes">', facetSortOptions);</xsl:text>
     156        <!-- this call sets up the facets as a List (for search/sorting of the list), and displays the more button if needed -->
     157        <xsl:text disable-output-escaping="yes">setUpFacetList('</xsl:text><xsl:value-of select="@name"/><xsl:text disable-output-escaping="yes">');</xsl:text>
    170158      </script>
    171159
Note: See TracChangeset for help on using the changeset viewer.