<%@ include file="/portal/include/include_java.jsp" %> <fmt:setBundle basename="text.jsp.analytics.report_config.defaultFilters" /> <% /* These are IDs for operators in custom filters. */ %> <c:set var="operatorEQUAL"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.EQUAL%></c:set> <c:set var="operatorNOT_EQUAL"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.NOT_EQUAL%></c:set> <c:set var="operatorLESS_THAN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.LESS_THAN%></c:set> <c:set var="operatorLESS_THAN_OR_EQUALS"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.LESS_THAN_OR_EQUALS%></c:set> <c:set var="operatorGREATER_THAN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.GREATER_THAN%></c:set> <c:set var="operatorGREATER_THAN_OR_EQUALS"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.GREATER_THAN_OR_EQUALS%></c:set> <c:set var="operatorIN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.IN%></c:set> <c:set var="operatorNOT_IN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.NOT_IN%></c:set> <c:set var="operatorBETWEEN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.BETWEEN%></c:set> <c:set var="operatorNOT_BETWEEN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.NOT_BETWEEN%></c:set> <c:set var="operatorLIKE"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.LIKE%></c:set> <c:set var="operatorNOT_LIKE"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.NOT_LIKE%></c:set> <c:choose><c:when test="${!empty param.filterType}"> <div class="dialogSection configFilter"><h2><fmt:message key="configureFilter" /></h2></c:when> <c:otherwise><div class="dialogSection defltFilters"><h2><fmt:message key="defaultFilters.title"/> </h2></c:otherwise></c:choose><div class="asiToolbar"> <a onclick="dynamicFilters.addNewFilter();" title="<fmt:message key='defaultFilters.toolbar.addFilterAlt'/>"><p:img page="/components/toolbar/img/add.gif" altKey="defaultFilters.toolbar.addFilterAlt" /><fmt:message key="defaultFilters.toolbar.addFilter"/></a> </div> <c:if test="${!empty param.filterType}"> <h4 id="filterNameField"><fmt:message key="FilterDisplayName" /> <input type="text" maxlength="30" class="iText" style="width: 200px;" data="CurrentFilter.name" /><div id="filterNameError" style="display:block; color:red; margin-left: 125px; font-weight:normal"><fmt:message key="filterNameError" /></div></h4> </c:if> <h4 style="font-weight:normal"><fmt:message key="defaultFilters.subheader.onlyInclude"/></h4> <div class="subSection"> <div class="defaultFilters" style="margin-left: 25px;" id="roStaticFilters_<c:out value="${param.filterType}" />"> <c:if test="${empty param.filterType}"> <ui:if test="StaticFilters.runningFilter"><label><input type="checkbox" data="StaticFilters.runningFilter.apply" /></label> <fmt:message key="defaultFilters.1"/><br /> </ui:if> <ui:if test="StaticFilters.completedFilter"> <label><input type="checkbox" data="StaticFilters.completedFilter.apply" /></label> <fmt:message key="defaultFilters.2"/><br /> </ui:if> </c:if> <ui:if test="StaticFilters.lastNCompletedFilter"> <label><input type="checkbox" id="<c:out value="${param.filterType}" />_lastNCompletedCheckbox" data="StaticFilters.lastNCompletedFilter.apply" /></label> <fmt:message key="defaultFilters.3"> <fmt:param><label><input type="textbox" size="3" data="StaticFilters.lastNCompletedFilter.completedCount" onfocus="setCheckbox('<asi:out value='${param.filterType}' encoding='js-html'/>_lastNCompleted',true);this.select();" onblur="validatePositive('<asi:out value='${param.filterType}' encoding='js-html'/>_lastNCompleted', this, 'long');"/></label></fmt:param></fmt:message> <br /> <span id="<c:out value="${param.filterType}" />_lastNCompletedError" class="filterError" style="display:none"> <fmt:message key="defaultFilters.3.error" /><br/></span> </ui:if> <ui:if test="StaticFilters.lastNDaysFilter"> <label><input type="checkbox" id="<c:out value="${param.filterType}" />_lastNDaysCheckbox" data="StaticFilters.lastNDaysFilter.apply" /></label> <fmt:message key="defaultFilters.4"> <fmt:param> <label><input type="textbox" size="3" data="StaticFilters.lastNDaysFilter.dayCount" onfocus="setCheckbox('<asi:out value='${param.filterType}' encoding='js-html'/>_lastNDays',true); this.select();" onblur="validatePositive('<asi:out value='${param.filterType}' encoding='js-html'/>_lastNDays', this); "/></label> </fmt:param> </fmt:message><br /> <span id="<c:out value="${param.filterType}" />_lastNDaysError" class="filterError" style="display:none"><fmt:message key="defaultFilters.4.error" /><br/></span> </ui:if> <ui:if test="StaticFilters.outsideNStandardDeviationsFilter"> <label><input type="checkbox" id="<c:out value="${param.filterType}" />_outsideNStandardDeviationsCheckbox" data="StaticFilters.outsideNStandardDeviationsFilter.apply" /></label> <fmt:message key="defaultFilters.5"> <fmt:param> <label><input type="textbox" size="3" data="StaticFilters.outsideNStandardDeviationsFilter.standardDeviationCount" onfocus="setCheckbox('<asi:out value='${param.filterType}' encoding='js-html'/>_outsideNStandardDeviations',true);this.select();" onblur="validatePositive('<asi:out value='${param.filterType}' encoding='js-html'/>_outsideNStandardDeviations', this);"/></label> </fmt:param> </fmt:message><br /> <span id="<c:out value="${param.filterType}" />_outsideNStandardDeviationsError" class="filterError" style="display:none"><fmt:message key="defaultFilters.5.error" /><br /></span> </ui:if> <ui:if test="StaticFilters.aheadOfScheduleFilter"> <label><input type="checkbox" data="StaticFilters.aheadOfScheduleFilter.apply" /></label> <fmt:message key="defaultFilters.6" /><br /> </ui:if> <ui:if test="StaticFilters.behindScheduleFilter"> <label><input type="checkbox" data="StaticFilters.behindScheduleFilter.apply" /></label> <fmt:message key="defaultFilters.7" /><br /> </ui:if> <ui:if test="StaticFilters.dueTodayFilter"> <label><input type="checkbox" data="StaticFilters.dueTodayFilter.apply" /></label> <fmt:message key="defaultFilters.8" /><br /> </ui:if> <script type="text/javascript"> function setCheckbox(id, checked){ var checkbox = getObject(id+'Checkbox'); getObject(id+'Checkbox').checked=checked; getObject(id+'Checkbox').onclick(); } function validatePositive(id, input, wholeNumber){ getObject(id+'Error').style.display='none'; delete addFilter.errors[id]; if(input.value === '') { setCheckbox(id, false); input.value = '0'; input.onchange(); } else if(!input.value.validate('positive') || (wholeNumber && !input.value.validate(wholeNumber))){ addFilter.errors[id] = $$(id+'Error').innerHTML.stripHTML(); input.value = ''; try{ input.focus(); }catch(e){}; getObject(id+'Error').style.display=''; } } var addFilter = { errors:{}, init:function() { if($$('roStaticFilters_quick')){ $$('filterNameError').style.display = 'none'; var filterIndex = parseInt('<asi:out value="${param.qfi}" encoding="js"/>'); if (isNaN(filterIndex)) { reportsSynchronizer.dataSources.CurrentFilter = addFilter.getNewFilter(); reportsSynchronizer.dataSources.StaticFilters = reportsSynchronizer.dataSources.CurrentFilter.staticFilters; } else { reportsSynchronizer.dataSources.CurrentFilter = copyBean(reportsSynchronizer.dataSources.QuickFilter.items[filterIndex]); reportsSynchronizer.dataSources.StaticFilters = copyBean(reportsSynchronizer.dataSources.CurrentFilter.staticFilters); } }else reportsSynchronizer.dataSources.StaticFilters = reportsSynchronizer.dataSources.Report.data.staticFilters; reportsSynchronizer.synchronize('roStaticFilters_<asi:out value="${param.filterType}" encoding="js"/>'); if($$('filterNameField')) reportsSynchronizer.synchronize('filterNameField'); }, getNewFilter:function() { return {staticFilters:{ outsideNStandardDeviationsFilter:{filterType:3,apply:false,standardDeviationCount:0}, behindScheduleFilter:{filterType:7,apply:false}, aheadOfScheduleFilter:{filterType:2,apply:false}, lastNDaysFilter:{filterType:1,apply:false,dayCount:0}, dueTodayFilter:{filterType:8,apply:false}, lastNCompletedFilter:{filterType:5,apply:false,completedCount:0} }, dynamicFilters:[], name:'' }; }, validateFilter:function(element){ var isError = false; $$('filterNameError').style.display = 'none'; if(reportsSynchronizer.dataSources.CurrentFilter.name == ''){ $$('filterNameError').style.display = ''; isError = true; } var error = dynamicFilters.validate(); if(error){ isError = true; asi.alert(error); } if(!isError) addFilter.saveAndClose(element); }, cancel:function(element) { reportsSynchronizer.dataSources.StaticFilters = reportsSynchronizer.dataSources.Report.data.staticFilters; reportsSynchronizer.dataSources.DynamicFilters = reportsSynchronizer.dataSources.Report.data.dynamicFilters; DIALOG.hide(element); addFilter=null; }, saveAndClose:function(element) { if (!isEmpty(addFilter.errors)) { return false; } var filterIndex = parseInt('<asi:out value="${param.qfi}" encoding="js"/>'); var items = reportsSynchronizer.dataSources.QuickFilter.items; reportsSynchronizer.dataSources.CurrentFilter.staticFilters = reportsSynchronizer.dataSources.StaticFilters; reportsSynchronizer.dataSources.CurrentFilter.dynamicFilters = reportsSynchronizer.dataSources.DynamicFilters; if (isNaN(filterIndex)) { items.push(reportsSynchronizer.dataSources.CurrentFilter); } else { items[filterIndex]=reportsSynchronizer.dataSources.CurrentFilter; } editFilterSetGrid.regenerateRows(true); reportsSynchronizer.synchronize('editFilterSetGrid'); addFilter.init(); addFilter.cancel(element); } } addFilter.init(); </script> <c:import url="/analytics/report_config/dynamicFilters.jsp" charEncoding="UTF-8" /> </div> </div> </div> <c:if test="${empty param.filterType}"> <c:import url="/analytics/report_config/quickFiltersGrid.jsp?filterType=${param.filterType}" charEncoding="UTF-8" /> </c:if> <br style="clear:both" />