This sample nav_controls.jsp file is used for the Relationship Discovery UI.

The following nav_controls.jsp file has been modified to display refinements from the Terms Discovery dimension. Added or modified code is highlighted in bold face.

<%----------------------------------------------------------------------
DESCRIPTION:
This module displays basic, standard navigation controls.  It
is mainly used for debugging purposes and as a starting point for
no-frills navigation solutions. It only displays refinement dimensions,
so this module should be used in conjunction with nav_breadcrumbs.

Copyright (C) 2008 by Endeca Technologies - COMPANY CONFIDENTIAL
-----------------------------------------------------------------------%>

<table border="0" cellspacing="0" cellpadding="0" width="100%">
  <tr><td colspan="2" bgcolor="orange"><font face="arial" size=2 color="white">
  &nbsp;nav_controls:<font></td></tr>
  <tr><td colspan="2"><img src="b.gif" height=3></td></tr>
  <%
  // Get refinement dimension groups
  DimGroupList refDimensionGroups = nav.getRefinementDimGroups();
  // Get descriptor dimensions  
  DimensionList descDimensionsNC = nav.getDescriptorDimensions();
  // Output message if no refinement options left
  if (refDimensionGroups.size() == 0) {
    %>
    <tr><td colspan="2"><font face="arial" size=3 color="orange">
    <i>No Additional Query<br>Parameters Available</i></font></td></tr>
    <%
  }
  // Output message if no refinement options have been made
  else if (descDimensionsNC.size() == 0) {
    %>
    <tr><td colspan="2"><font face="arial" size=3 color="orange">
    <i>Query Parameters:</i></font></td></tr>
    <tr><td colspan="2"><img src="b.gif" height=5></td></tr>
    <%
  }
  // Header if additional query parameters available
  else {
    %>
    <tr><td colspan="2"><font face="arial" size=3 color="orange">
    <i>Additional Query Parameters:</i></font></td></tr>
    <tr><td colspan="2"><img src="b.gif" height=5></td></tr>
    <%
  }
  // Loop over dimension groups
  for (int i=0; i<refDimensionGroups.size(); i++) {
    // Get dimension group object
    DimGroup dg = (DimGroup)refDimensionGroups.get(i);
    //  If group is explicit (not default group), display group
    if (dg.isExplicit()) {
      %>
      <tr><td colspan="2"><img src="b.gif" height="10"></td></tr>
      <tr><td colspan="2"><font face="arial" size="2" color="#999999">
      <%= dg.getName() %></font></td></tr>
      <%
    }
  // Loop over dimensions in group
    for (int j=0; j<dg.size(); j++) {
      // Get dimension object
      Dimension dim = (Dimension)dg.get(j);
      // Get root for dimension
      DimVal root = dim.getRoot();
      // Get id of root
      long rootId = root.getId();
      // special handling for Term Discovery dimension
      final boolean isRelTerms = dim.getName().equals(relTermsDimName);
      // Get refinement list for dimension
      DimValList refs = dim.getRefinements();
      // Create request to expose dimension values
      UrlGen urlg = new UrlGen(request.getQueryString(), "UTF-8");
      urlg.removeParam("D");
      urlg.removeParam("Dx");
      urlg.removeParam("sid");
      urlg.removeParam("in_dym");
      urlg.removeParam("in_dim_search");
      urlg.addParam("sid",(String)request.getAttribute("sid"));
      // Expand dimension
      if (!isRelTerms && refs.size() == 0) {
        urlg.addParam("Ne",Long.toString(rootId)+
        (relTermsRootId>= 0? " "+Long.toString(relTermsRootId):""));
      }
      // Close dimension
      else {
        urlg.removeParam("Ne");
      }
      String url = CONTROLLER+"?"+urlg;
      // Display dimension (open row here, close later)
      if (!isRelTerms) {
        %>
        <tr><td colspan="2"><a href="<%= url %>">
        <font face="arial" size="2" color="#444444">
        <%= dim.getName() %></font></a>
        <%
      }
      else {
        %>
        <tr><td colspan="2" bgcolor="orange">
        <font face="arial" size=2 color="white">
        &nbsp;<%=relTermsDisplayString %><font></td></tr>
        <%
      }

      // Get intermediate list for dimension
      DimValList ints = dim.getIntermediates();
      // Loop over intermediate list
      for (int k=0; k < ints.size(); k++) {
        // Get intermediate dimension value
        DimVal intermediate = ints.getDimValue(k);
        // Display intermediate
        %><font face="arial" size="2" color="#444444"> >
        <%= intermediate.getName() %></font><%
      }
      // Close nav row
      %></td></tr><%
      String refinementsColor = "blue";
      Set activeDiscTerms = new HashSet();
      if (isRelTerms) {
        String ntk = (String)request.getParameter("Ntk");
        String ntx = (String)request.getParameter("Ntx");
        if (ntk != null && ntk.equals(P_AllTerms) &&
           "mode matchall".equals(ntx))
        {
          String discTerm = (String)request.getParameter("Ntt");
          if (discTerm != null) {
            if (discTerm.length() >= 3 &&
               discTerm.charAt(0) == '"' &&
               discTerm.charAt(discTerm.length()-1) == '"')
            {
              // remove quotes
              discTerm = discTerm.substring(1, discTerm.length()-1);
            }
            activeDiscTerms.add(discTerm);
          }
        }
      } // if (isRelTerms)

    %><%
      // Loop over refinement list
      for (int k=0; k < refs.size(); k++) {
        // Get refinement dimension value
        DimVal ref = refs.getDimValue(k);
        // Get properties for refinement value
        PropertyMap pmap = ref.getProperties();
        // Get dynamic stats
        String dstats = "";
        if (pmap.get("DGraph.Bins") != null) {
          dstats = " ("+pmap.get("DGraph.Bins")+")";
        }
    %><%
        // Create request to select refinement value
        urlg = new UrlGen(request.getQueryString(), "UTF-8");
        boolean displayRefinement=true;
        if (isRelTerms &&
           (!ref.getName().equals("More...") || !showRelTermsMore))
        {
          if (ref.getName().equals("More...") ||
             ENEQueryToolkit.isImplicitRefinement(dim, ref) ||
             activeDiscTerms.contains(ref.getName()))
          {
            displayRefinement = false;
          }
          else {
            urlg.addParam("Ntk","clustersPartial");
            urlg.addParam("Ntt","\""+ref.getName()+"\"");
            urlg.addParam("Ntx","mode matchall");
            urlg.removeParam("No");
            urlg.removeParam("Nao");
            urlg.removeParam("Nty");
            urlg.removeParam("D");
            urlg.removeParam("Dx");
            urlg.removeParam("sid");
            urlg.removeParam("in_dym");
            urlg.removeParam("in_dim_search");
            urlg.addParam("sid",(String)request.getAttribute("sid"));
            url = CONTROLLER+"?"+urlg;
          }
      %><%
      } else {
          // If refinement is navigable, change the Navigation parameter
          if (ref.isNavigable()) {
            urlg.addParam("N",
             (ENEQueryToolkit.selectRefinement(nav,ref)).toString());
            urlg.addParam("Ne",Long.toString(rootId)+
             (relTermsRootId>= 0? " "+Long.toString(relTermsRootId):""));
      }
      // If refinement is non-navigable, change only the
      // exposed dimension parameter
      // (Leave the Navigation parameter as is)
      else {
        urlg.addParam("Ne",Long.toString(ref.getId())+
          (relTermsRootId>= 0? " "+Long.toString(relTermsRootId):""));
      }
      urlg.removeParam("No");
      urlg.removeParam("Nao");
      urlg.removeParam("Nty");
      urlg.removeParam("D");
      urlg.removeParam("Dx");
      urlg.removeParam("sid");
      urlg.removeParam("in_dym");
      urlg.removeParam("in_dim_search");
      urlg.addParam("sid",(String)request.getAttribute("sid"));
      url = CONTROLLER+"?"+urlg;
    }
      // Display refinement
      if (displayRefinement) {
        %>
        <tr><td><img src="b.gif" width=10></td>
        <td width="100%"><a href="<%= url %>">
        <font face="arial" size="1" color="<%=refinementsColor%>">
        <%= ref.getName() %></font></a>
        <font face="arial" size="1" color="gray"><%= dstats %>
        </font></td></tr>
        <%
      }
      } // end of: Loop over refinement list
    } // end of: Loop over dimensions in group
    //  If group is explicit (not default group), display spacer
    if (dg.isExplicit()) {
      %>
      <tr><td colspan="2"><img src="b.gif" height="10"></td></tr>
      <%
    }

  } // end of: Loop over dimension groups
  %>
  <tr><td colspan="2"><img src="b.gif" height=30></td></tr>
</table>

<%-- Display Clusters Controls --%>
<%@ include file="nav_clusters.jsp" %>

<%-- Display Range Filter Controls --%>
<%@ include file="nav_range_controls.jsp" %>


Copyright © Legal Notices