<%@page import="com.edeal.frontline.helper.custom.DataDictionaryHelper"%> <% /****************************************************************************** * Copyright (c) 2000-2009 e-Deal * * e-Deal S.A. * 55 rue Brillat Savarin * 75013 Paris * France * * T: +33 (0)1 53 80 80 30 * F: +33 (0)1 73 01 69 77 * http://www.e-deal.com * * La diffusion de ce code source sous quelque forme que ce soit sans * l'autorisation de E-DEAL est interdite. * * Vous �tes autoris�s � modifier ce code source uniquement pour votre usage * propre et sous r�serve que les mentions de copyright demeurent intactes. * * Ce code est fourni en l'�tat. Aucune garantie d'aucune sorte, explicite ou * implicite n'est donn�e. En aucun cas E-DEAL ne pourra �tre tenu pour * responsable des dommages pouvant r�sulter de l'utilisation de ce code * source. ******************************************************************************/ %><%@ page language="java"%> <%@ page import="com.edeal.frontline.navigation.FlRequest" %> <%@ page import="java.util.Iterator" %> <%@ page import="com.edeal.frontline.Utils" %> <%@ page import="com.edeal.frontline.*" %> <%@ page import="java.util.Hashtable" %> <%@ page import="java.util.HashMap" %> <%@ page import="java.util.Vector" %> <%@ page import="com.edeal.frontline.ListBean" %> <%@ page import="com.edeal.frontline.ListBean.SearchZone" %> <%@ page import="com.edeal.frontline.DataDictionary" %> <%@ page import="com.edeal.frontline.FlContext" %> <%@ page import="java.util.Map" %> <%@ page import="java.lang.reflect.*" %> <%@ page import="com.edeal.frontline.navigation.WebUtils" %> <%@ page import="com.edeal.frontline.controller.actions.SelectAction" %> <%@ page import="com.edeal.frontline.FlDataSource" %> <%@ page import="java.util.Date" %> <%@ page import="com.edeal.frontline.helper.custom.ListHelper" %> <%@ page import="com.edeal.frontline.ListBean.MandatoryGroup" %> <%@page import="com.edeal.frontline.navigation.EdealBigTabsNavigation"%> <%@page import="com.edeal.frontline.navigation.EdealBigTabsNavigation.BigTabsParams"%> <%@page import="org.apache.commons.lang.StringUtils"%> <%@page import="com.edeal.frontline.display.XmlSelector"%> <%@taglib uri="http://www.e-deal.com/taglib/fl" prefix="fl"%> <%@ include file="/common/list/list_variables.jsp" %><% FlContext context = flRequest.getContext(); DataDictionary dico = context.getDataDictionary(); EdealBigTabsNavigation ebtn = new EdealBigTabsNavigation(request); Vector pagination = (Vector)flRequest.getAttribute("Pagination"); boolean hasPagination = pagination != null ? pagination.size() > 1 : false; ListBean.SearchZone searchZone = null; ListBean.ResultZone resultZone=null; try { searchZone = List.getSearchZone(); resultZone = List.getResultZone(); } catch (Exception e) { } String includedListScript=null; if (resultZone!=null) { includedListScript=ListHelper.processXmlListScriptExtension(context, session, resultZone.getScript()); } String SfwID = flRequest.getRequestParameterOrAttribute("SfwID"); //AjaxUrl the default value is /list_ajax.fl String au = flRequest.getRequestParameterOrAttribute("au"); // Is this our first time in here? (ie, we're not navigating back from an object) boolean isFirstTimeIn = !ebtn.isDoList(); Map searchCriteria = new Hashtable(); if (sc != null) { searchCriteria = WebUtils.parseQueryString(sc); } String gridName=Utils.formatToWeb(lc, true); EdealBigTabsNavigation bTabNav = new EdealBigTabsNavigation(request); bTabNav.setBigTabsParameterValue(BigTabsParams.NameSearchGridJs, "_grid__" + gridName + "_js_"); String pageIndex=flRequest.getSearchCriteria("$$idx",gridName,false); pageIndex=StringUtils.isEmpty(pageIndex)?"0":pageIndex; String pagePagination=flRequest.getSearchCriteria("$$nb",gridName,false); pagePagination=StringUtils.isEmpty(pagePagination)?(String)pagination.firstElement():pagePagination; String pPreview = flRequest.getSearchCriteria("$$preview"); boolean fHasPreview="true".equals(pPreview); // add a flag to check if the list is designed to have preview boolean fHasListPreview = resultZone.hasPreview(); //mandatory groups HashMap mdGps = null; boolean fHasMandatoryGroups = false; if (searchZone != null) { mdGps = searchZone.getMandatoryGroups(); } fHasMandatoryGroups = ((mdGps != null) && (mdGps.size() > 0)); %> <%-- Le Javascript ci-dessous doit etre inclus en page, car le JSP a besoin du request --%>
<%@include file="/common/tabs.jsp" %>
<%= ebtn.getBigTabsInput(BigTabsParams.CodeLC) %> <%= ebtn.getBigTabsInput(BigTabsParams.SearchCriteria) %> <%= ebtn.getBigTabsInput(BigTabsParams.ObjectURI) %> <%= ebtn.getBigTabsInput(BigTabsParams.ObjectTitle) %> <%= ebtn.getBigTabsInput(BigTabsParams.CriteriaListTitle) %> <% if (isFirstTimeIn) { %> <%= ebtn.getBigTabsInput(BigTabsParams.DoList, "1") %> <%= ebtn.getBigTabsInput(BigTabsParams.CriteriaListURI, "/list_criteria.fl") %> <%= ebtn.getBigTabsInput(BigTabsParams.SelectedTab, "1") %> <% } %> <% if (SfwID != null) { %> <%= ebtn.getBigTabsInput(BigTabsParams.SoftwareModule) %> <% } %> <% } %>
<% if(searchZone != null) { int nTabIndex = 1; for(int i = 0; i < searchZone.getNbLines(); i++) { for(int j = 0; j < searchZone.getNbFields(i); j++) { if (j >= 4) { // Four is our limit for right now, hard-coded break; } ListBean.Field fld = searchZone.getField(i, j); String fldinputname=fld.getInputName(); fldinputname=fldinputname.replace("$",":"); // in the sc param, the fields are with : where we expect with $ Vector fieldValues = (Vector)searchCriteria.get(fldinputname); if(fld.getChoiceType() == ListBean.CHOICE_NONE) { String strDisp = null; String value = null; if (fieldValues != null && fieldValues.size() > 0) { value = (String) fieldValues.firstElement(); } if (fld.isDate() || fld.isTime() || fld.isDecimal() || fld.isInteger()) { strDisp = fld.getDisplayForBoolean(session); } else if (fld.isBoolean()) { strDisp = fld.getDisplayForBoolean(session); } else { strDisp = "<" + fld.getDisplayForBoolean(session) + ">"; } if(fld.getFldFobSql() != null) { String lblValue = null; String initVal = flRequest.getRequestParameterOrAttribute("init"+fld.getInputName()); if (value != null) { Vector lblValues = (Vector)searchCriteria.get("lbl" + fldinputname); if (lblValues != null && lblValues.size() > 0) { lblValue = (String)lblValues.firstElement(); } } else { HashMap vectDefaultVals; if (initVal != null) { FieldBean fldBean = dico.getFieldByName(fld.getName()); ObjectsBean obj = dico.getTable("id", fldBean.getFldFobID()); lblValue = obj.toString(session, initVal); value=initVal; } else if (sc == null && (vectDefaultVals = fld.getStrDefaultValsList(session)) != null) { if (vectDefaultVals.size() > 0) { FieldBean fldBean = dico.getFieldByName(fld.getName()); ObjectsBean obj = dico.getTable("id", fldBean.getFldFobID()); value = vectDefaultVals.get(ListBean.Field.DISPLAY); lblValue = obj.toString(session, value); } } } FieldBean fldBean = dico.getFieldByName(fld.getName()); ObjectsBean object = dico.getTable("id", fldBean.getFldFobID()); boolean doAjax = true; try { doAjax = object.getObjAjaxSearch() != null; } catch(FieldNotInitializedException e) { doAjax = false; } String fldNameWeb = Utils.formatToWeb(fld.getInputName(), true); String emptyLabelDisplay = lblValue != null ? Utils.formatToWeb(lblValue, true) : Utils.formatToWeb(strDisp, true); String emptyLabelDisplayJS = lblValue != null ? Utils.formatToJavascript(lblValue) : Utils.formatToJavascript(strDisp); String fobSql = fld.getFldFobSql(); ObjectsBean fobBean = dico.getTable("sql", fobSql); String webapp = request.getContextPath(); String query = StringUtils.isEmpty(fld.getQuery(session)) ? "" : Utils.formatToJavascript("&query=" + fld.getQuery(session)); String selectUrl = "javascript:var win = window.open('" + webapp + "/select.fl?type=" + flRequest.urlEncode(fobSql) + "&field=" + flRequest.urlEncode(fld.getInputName()) + query + "', 'Select" + fobSql + "', 'menubar=no,status=no,toolbar=no,scrollbars=yes,resizable=yes,width=" + SelectAction.SELECT_WINDOW_WIDTH + ",height=500')" ; //Determination of which selector will be used (XML or fields) try { String xmlListSelect = fobBean.getObjSelectListID(); if (!Utils.isEmpty(xmlListSelect)) { XmlSelector selector = new XmlSelector(false, webapp, xmlListSelect,flRequest.urlEncode(fld.getInputName()), "", 0, query, ""); selectUrl = selector.buildSelectUrl(); } } catch (FieldNotInitializedException e) { //No list defined for object selection (=> use SelectFields) // logger.debug("No list defined for object selection",e); } catch (FrontlineException fe) { //No list defined for object selection (=> use SelectFields) logger.error("Error in list defined for object selection",fe); } %> <%=ListHelper.getFldClasses(fld)%>" type="text" value="<%=emptyLabelDisplay%>"<%=doAjax ? " autocomplete=\"off\" onfocus=\"displayOnFocus(this);\"" : " readonly onfocus=\"this.blur();\""%>> $(f.lbl<%=fldNameWeb%>).change(); void('')" tabindex="<%= nTabIndex++ %>"> <% if (doAjax) { %> <% } %> <% } else if (fld.isFldRef()) { %> <% } else if (fld.isString()) { // voir si une valeur par d�faut est pr�-renseign�e dans l'URL String initVal = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName()); if("".equals(initVal)) initVal = null; if (sc == null) { HashMap vectDefaultVals = fld.getStrDefaultValsList(session); if (initVal == null) { // voir si une valeur est pr�-renseign�e dans l'XML if (vectDefaultVals != null) if (vectDefaultVals.size() > 0) initVal = vectDefaultVals.get(ListBean.Field.DISPLAY); } } %> <%=ListHelper.getFldClasses(fld)%>" type="text" value="<%=Utils.formatToWeb(value != null ? value : (initVal != null ? initVal : strDisp), true)%>" onfocus="if(this.value == '<%=Utils.formatToJavascript(strDisp)%>') this.value = '';" onblur="if(this.value == '') this.value = '<%=Utils.formatToJavascript(strDisp)%>';" tabindex="<%=nTabIndex++%>"> <% } else if (fld.isInteger()) { String fromValue = null; String toValue = null; Vector intValues = (Vector) searchCriteria.get(fldinputname + "$From"); if (intValues != null && intValues.size() > 0) { fromValue = (String) intValues.firstElement(); } intValues = (Vector) searchCriteria.get(fldinputname + "$To"); if (intValues != null && intValues.size() > 0) { toValue = (String) intValues.firstElement(); } String initValMin = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Min"); String initValMax = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Max"); Vector vectDefaultVals = fld.getDefaultValsList(); if (initValMin != null) { if (fromValue == null) fromValue = initValMin; } if (initValMax != null) { if (toValue == null) toValue = initValMax; } if (vectDefaultVals != null) { if (vectDefaultVals.size() > 0) { if (fromValue == null) { if (fld.getDefaultValsList().elementAt(0) != null) { fromValue = ((Hashtable) fld.getDefaultValsList().elementAt(0)).get(ListBean.Field.DISPLAY_MIN).toString(); } } if (toValue == null) { if (fld.getDefaultValsList().elementAt(1) != null) toValue = ((Hashtable) fld.getDefaultValsList().elementAt(1)).get(ListBean.Field.DISPLAY_MAX).toString(); } } } %> <%=Utils.formatToWeb(strDisp, false)%>   ');" tabindex="<%=nTabIndex++%>">    ');" tabindex="<%=nTabIndex++%>"> <% } else if (fld.isDecimal()) { String fromValue = null; String toValue = null; Vector decValues = (Vector) searchCriteria.get(fldinputname + "$From"); if (decValues != null && decValues.size() > 0) { fromValue = (String) decValues.firstElement(); } decValues = (Vector) searchCriteria.get(fldinputname + "$To"); if (decValues != null && decValues.size() > 0) { toValue = (String) decValues.firstElement(); } String initValMin = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Min"); String initValMax = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Max"); HashMap vectDefaultVals = fld.getStrDefaultValsList(session); if (initValMin != null) { if (fromValue == null) fromValue = initValMin; } if (initValMax != null) { if (toValue == null) toValue = initValMax; } if (vectDefaultVals != null) { if (vectDefaultVals.size() > 0) { if (sc == null && fromValue == null) { fromValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MIN); } if (sc == null && toValue == null) { toValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MAX); } } } %> <%=Utils.formatToWeb(strDisp, false)%>   ');" tabindex="<%=nTabIndex++%>">    ');" tabindex="<%=nTabIndex++%>"> <% } else if (fld.isDate()) { String fromValue = null; String toValue = null; String fldNameWeb = Utils.formatToWeb(fld.getFullName(), true); Vector dateValues = (Vector) searchCriteria.get(fldinputname + "$From"); if (dateValues != null && dateValues.size() > 0) { fromValue = (String) dateValues.firstElement(); } dateValues = (Vector) searchCriteria.get(fldinputname + "$To"); if (dateValues != null && dateValues.size() > 0) { toValue = (String) dateValues.firstElement(); } String initValMin = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Min"); String initValMax = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Max"); if (initValMin != null) { if (fromValue == null) fromValue = initValMin; } if (initValMax != null) { if (toValue == null) toValue = initValMax; } if (sc == null) { HashMap vectDefaultVals = fld.getStrDefaultValsList(session); if (vectDefaultVals != null) { if (vectDefaultVals.size() > 0) { if (fromValue == null) { if (vectDefaultVals.containsKey(ListBean.Field.DISPLAY_MIN)) fromValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MIN); } if (toValue == null) { if (vectDefaultVals.containsKey(ListBean.Field.DISPLAY_MAX)) toValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MAX); } } } } %> "><%=Utils.formatToWeb(strDisp, false)%>   ');" tabindex="<%=nTabIndex++%>" size="10" maxlength="10">    ');" tabindex="<%=nTabIndex++%>" size="10" maxlength="10"> <% } else if (fld.isTime()) { String fromValue = null; String toValue = null; Vector dateValues = (Vector) searchCriteria.get(fldinputname + "$From"); if (dateValues != null && dateValues.size() > 0) { fromValue = (String) dateValues.firstElement(); } dateValues = (Vector) searchCriteria.get(fldinputname + "$To"); if (dateValues != null && dateValues.size() > 0) { toValue = (String) dateValues.firstElement(); } String initValMin = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Min"); String initValMax = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Max"); HashMap vectDefaultVals = fld.getStrDefaultValsList(session); if (initValMin != null) { if (fromValue == null) fromValue = initValMin; } if (initValMax != null) { if (toValue == null) toValue = initValMax; } if (sc == null && vectDefaultVals != null) { if (vectDefaultVals.size() > 0) { if (fromValue == null) { if (vectDefaultVals.containsKey(ListBean.Field.DISPLAY_MIN)) fromValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MIN); } if (toValue == null) { if (vectDefaultVals.containsKey(ListBean.Field.DISPLAY_MAX)) toValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MAX); } } } %> "><%=Utils.formatToWeb(strDisp, false)%>   ');" tabindex="<%=nTabIndex++%>" size="5" maxlength="5">  ');" tabindex="<%=nTabIndex++%>" size="5" maxlength="5"> <% } else if (fld.isBoolean()) { String initVal = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName()); if (sc == null) { HashMap vectDefaultVals = fld.getStrDefaultValsList(session); if (initVal == null) { // voir si une valeur est pr�-renseign�e dans l'XML if (vectDefaultVals != null) if (vectDefaultVals.size() > 0) initVal = vectDefaultVals.get(ListBean.Field.DISPLAY); } } boolean isChecked = "1".equals(initVal) || "true".equalsIgnoreCase(initVal) || "1".equals(value) || "true".equalsIgnoreCase(value); %> <%=ListHelper.getFldClasses(fld)%>" name="<%=Utils.formatToWeb(fld.getInputName(), true)%>" id="<%=Utils.formatToWeb(fld.getInputName(), true)%>" type="checkbox" value="1" tabindex="<%=nTabIndex++%>" <%=isChecked ? "checked" : ""%> > <% } } else { String strDisp = null; String strType = null; Vector values = (Vector) searchCriteria.get(fld.getFullName()); if (values == null) { values = new Vector(); } Vector vectChoices = fld.getChoiceList(); switch (fld.getChoiceType()) { case ListBean.CHOICE_SELECT : case ListBean.CHOICE_SELECT_MULTIPLE : strDisp = "<" + fld.getDisplay(session) + ">"; %> <% break; case ListBean.CHOICE_RADIO: strType = "radio"; case ListBean.CHOICE_CHECKBOX: strDisp = fld.getDisplay(session); if(strType == null) strType = "checkbox"; %> <%= Utils.formatToWeb(strDisp, false) %> : <% for(int c = 0; c < vectChoices.size(); c++) { boolean isSelected = values.contains(Integer.toString(c)); Hashtable row = (Hashtable)vectChoices.elementAt(c); %> 0 ? "class=\"leftMargin10\" " : " ") %>name="<%= Utils.formatToWeb(fld.getFullName(), true) %>" type="<%= strType %>" value="<%= c %>" tabindex="<%= nTabIndex++ %>" <%= isSelected ? "checked" : "" %> > <%= Utils.replace(Utils.formatToWeb(row.get("Display"), false), " ", " ") %> <% } %> <% break; } } } %><%= (i < (searchZone.getNbLines() - 1) ? "

" : "") %><% } %>
<% if (hasPagination) { %> <% } String iconRunSearch=StringUtils.isEmpty(searchZone.getIconUrl())?"/icons/ico/valid_green2_long.gif":searchZone.getIconUrl(); String iconRunSearchWithPreview="/icons/ico/valid2_long.gif"; %>

<% if (fHasListPreview) { String previewAttribute=fHasPreview?"checked=\"true\"":""; %> <% } %>
" href="javascript:executeSearch(); void('')">
<% if (fHasMandatoryGroups) { %> "/> <% } %>

> ">    

"/>