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

