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"> 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"> <%=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" %>