All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.viaoa.web.html.jquery.JqAutoComplete Maven / Gradle / Ivy

package com.viaoa.web.html.jquery;

import java.util.List;
import java.util.Set;

import com.viaoa.util.OAStr;
import com.viaoa.web.html.form.OAFormInsertDelegate;
import com.viaoa.web.html.input.InputText;
import com.viaoa.web.server.OASession;
import com.viaoa.web.util.OAJspUtil;

/**
 * Uses JQuery autocomplete.
 * 

* Note: does not support multivalues. * * @author vince */ public abstract class JqAutoComplete extends InputText { public JqAutoComplete(String id) { super(id); } @Override protected String getInitializeScript() { final StringBuilder sb = new StringBuilder(); // support for jqueryui autocomplete sb.append("var cache" + getId() + " = {}, lastXhr" + getId() + ";\n"); sb.append("$( '#" + getId() + "' ).autocomplete({\n"); sb.append("minLength: 3,\n"); sb.append("source: function( request, response ) {\n"); sb.append(" var term = request.term;\n"); sb.append(" if ( term in cache" + getId() + " ) {\n"); sb.append(" response( cache" + getId() + "[ term ] );\n"); sb.append(" return;\n"); sb.append(" }\n"); sb.append(" \n"); sb.append(" lastXhr" + getId() + " = $.getJSON( 'oagetjson.jsp?oaform=" + getForm().getId() + "&id=" + getId() + "', request, function( data, status, xhr ) {\n"); sb.append(" cache" + getId() + "[ term ] = data;\n"); sb.append(" if ( xhr === lastXhr" + getId() + " ) {\n"); sb.append(" response( data );\n"); sb.append(" }\n"); sb.append(" });\n"); sb.append("}\n"); if (getAjaxSubmit()) { sb.append(",\n"); sb.append("select: function( event, ui ) {\n"); sb.append(" $('#" + getId() + "').val(ui.item.value);\n"); sb.append(" $('#oacommand').val('" + getId() + "');\n"); sb.append(" ajaxSubmit();\n"); sb.append("}\n"); } sb.append("});\n"); return sb.toString(); } //qqqqqqqqqqq this can use OATypeAhead ?? qqqqqqqqqqqqqqqqq /** * Called by browser. Uses oagetjson.jsp * * @param value from user text input * @return list of values to send back to browser. */ public abstract List getAutoCompleteText(String value); /** * Called by OAForm.processClientRequest to send back Json object for AutoComplete lookups. *

* See: oaclientrequest.jsp */ @Override protected String onGetJson(OASession session) { String value = session.getRequest().getParameter("term"); List al = getAutoCompleteText(value); String values = null; if (al != null) { for (String s : al) { if (values == null) { values = "["; } else values += ", "; s = OAJspUtil.createJsString(s, '\"'); values += "\"" + s + "\""; } values += "]"; } if (values == null) values = "[]"; return values; } @Override public void getRequiredCssNames(Set hsCssName) { } @Override public void getRequiredJsNames(Set hsJsName) { hsJsName.add(OAFormInsertDelegate.JS_bootstrap); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy