Files
luos/workflow/engine/xmlform/dynaforms/fields/suggest.xml
Luis Fernando Saisa Lopez 4170a6ded0 BUG 13323 "Suggest Requirement" SOLVED
- Nuevo requerimiento de funciones, nueva funcionalidad de filtrado para el campo "Suggest"
- Solucion:
  Se ha implementado un nuevo atributo para el campo "Suggest" en el formulario "Add Suggest"
  que consta de un Dropdown que nos permite seleccionar una opcion, la misma permite el filtrado
  de texto, de la siguiente manera:
      > Results that contain the entered text
      > Results that start with the entered text
      > Results that finish with the entered text
  Esta opciones estan seteadas en el atributo "Search Type" con sus correspondientes opciones.
  Disponible para la version 2.5.2
2013-10-18 09:06:21 -04:00

320 lines
8.9 KiB
XML
Executable File

<?xml version="1.0" encoding="UTF-8"?>
<dynaForm
name="text"
type="xmlform"
width="100%"
labelWidth="350px"
enableTemplate="1"
>
<PME_A type="hidden" />
<PME_TYPE type="hidden" />
<PME_PRO_UID type="hidden" />
<PME_PRO_UID type="hidden" />
<PME_DYN_TYPE type="phpvariable"/>
<PME_TITLE type="title" enableHTML="1">
<en>Properties</en>
</PME_TITLE>
<PME_XMLNODE_NAME type="text" size="42" maxlength="64" validate="NodeName" dependentFields="PME_VALIDATE_NAME" required="1">
<en>Field Name</en>
</PME_XMLNODE_NAME>
<PME_XMLNODE_NAME_OLD type="hidden" />
<PME_VALIDATE_NAME type="hidden" sqlConnection="XMLDB">
SELECT XMLNODE_NAME, TYPE FROM dynaForm WHERE XMLNODE_NAME = @@PME_XMLNODE_NAME
</PME_VALIDATE_NAME>
<PME_LABEL type="text" maxlength="255" size="42">
<en>Label</en>
</PME_LABEL>
<PME_SUBTITLE3 type="title" enableHTML="1">
<en>Behaviour</en>
</PME_SUBTITLE3>
<!--<PME_STRTO type="dropdown" defaultvalue="" >
<en>Text transform
<option name=""></option>
<option name="UPPER">UPPER</option>
<option name="LOWER">LOWER</option>
</en>
</PME_STRTO>-->
<PME_REQUIRED type="checkbox" falseValue="0" value="1" defaultvalue="0" labelOnRight="0">
<en>Required</en>
</PME_REQUIRED>
<!--<PME_READONLY type="checkbox" falseValue="0" value="1" defaultvalue="0" labelOnRight="0">
<en>Read Only</en>
</PME_READONLY>-->
<PME_DEPENDENTFIELDS type="listbox" defaultvalue="" sqlconnection="XMLDB" width="362"><![CDATA[
select XMLNODE_NAME, XMLNODE_NAME AS NAME FROM dynaForm WHERE XMLNODE_NAME <> @@PME_XMLNODE_NAME AND XMLNODE_NAME <> "" AND ( TYPE="text" or TYPE="textarea" or TYPE="dropdown" or TYPE="listbox" or TYPE="hidden" or TYPE="suggest")
]]><en>Dependent Fields<option name="">(none)</option></en>
</PME_DEPENDENTFIELDS>
<PME_HINT type="textarea" cols="44" rows="1">
<en>Hint</en>
</PME_HINT>
<PME_SUBTITLE type="title" enableHTML="1">
<en>Appearance</en>
</PME_SUBTITLE>
<PME_SIZE type="text" maxlength="10" size="10" validate="Int" defaultvalue="15" >
<en>Size</en>
</PME_SIZE>
<PME_MODE type="dropdown" defaultvalue="edit">
<en>Mode
<option name="edit">Edit</option>
<option name="view">View</option>
</en>
</PME_MODE>
<PME_SUBTITLE2 type="title" enableHTML="1">
<en>Autosuggest behaviour</en>
</PME_SUBTITLE2>
<PME_SQLCONNECTION type="dropdown" sqlConnection="dbarray" required="1" >
SELECT * FROM DB_CONNECTIONS
<en>Sql Connection <option name="">(none)</option></en>
</PME_SQLCONNECTION>
<PME_XMLNODE_VALUE type="textarea" cols="40" rows="3" required="1">
<en>Sql</en>
</PME_XMLNODE_VALUE>
<PME_MAXRESULTS type="text" maxlength="10" size="10" validate="Int" defaultvalue="6" >
<en>Max Results</en>
</PME_MAXRESULTS>
<PME_SHOWNORESULTS type="checkbox" falseValue="0" value="1" defaultvalue="0" labelOnRight="1">
<en>Show no results message</en>
</PME_SHOWNORESULTS>
<PME_SAVELABEL type="dropdown" falseValue="0" value="1" defaultvalue="1" labelOnRight="1">
<en>Save selected option as
<option name="0">Value</option>
<option name="1">Label</option>
</en>
</PME_SAVELABEL>
<PME_STORE_NEW_ENTRY type="checkbox" falseValue="0" value="1" defaultvalue="0" labelOnRight="1">
<en>Store new entry</en>
</PME_STORE_NEW_ENTRY>
<PME_SEARCHTYPE type="dropdown" required="0" readonly="0" optgroup="0" mode="edit">
<en>Search Type
<option name="*searchtype*">Results that contain the entered text</option>
<option name="searchtype*">Results that start with the entered text</option>
<option name="*searchtype">Results that finish with the entered text</option>
</en>
</PME_SEARCHTYPE>
<PME_TABLE_DATA type="hidden"/>
<PME_TABLE type="dropdown" sqlconnection="" required="1">
<en>Table</en>
</PME_TABLE>
<PME_PRIMARY_KEY_DATA type="hidden"/>
<PME_PRIMARY_KEY type="dropdown" sqlconnection="" required="1">
<en>Primary Key</en>
</PME_PRIMARY_KEY>
<PME_FIELD type="hidden"/>
<PME_PRIMARY_KEY_TYPE_DATA type="hidden"/>
<PME_PRIMARY_KEY_TYPE type="dropdown" sqlconnection="">
<en>Type
<option name="0"></option>
<option name="int">Integer</option>
<option name="varchar">Varchar</option>
</en>
</PME_PRIMARY_KEY_TYPE>
<PME_CALLBACK type="textarea" cols="40" rows="2">
<en>Javascript callback to execute by a selection</en>
</PME_CALLBACK>
<BTN_CANCEL type="button" onclick="cancel();">
<en>Cancel</en>
</BTN_CANCEL>
<PME_ACCEPT type="button" onclick="doSave(this.form)">
<en>Save</en>
</PME_ACCEPT>
<PME_JS type="javascript">
<![CDATA[
var fieldForm = "text";
var fieldName = getField("PME_XMLNODE_NAME", fieldForm);
var savedFieldName = fieldName.value;
var pme_validating;
fieldName.focus();
fieldName.select();
leimnud.event.add(fieldName, "change", {method: dynaformVerifyFieldName, instance: fieldName, event: true});
var dyntype = "@#PME_DYN_TYPE";
storeNewEntriesOptions(getField("PME_STORE_NEW_ENTRY"));
leimnud.event.add(
getField("PME_STORE_NEW_ENTRY"),
"click",
function ()
{
storeNewEntriesOptions(getField("PME_STORE_NEW_ENTRY"));
}
);
function storeNewEntriesOptions(o)
{
if (o.checked) {
showRowById("PME_PRIMARY_KEY");
getTablesNames();
getTableFields()
getField("PME_TABLE").value = getField("PME_TABLE_DATA").value.trim();
getField("PME_PRIMARY_KEY").value = getField("PME_PRIMARY_KEY_DATA").value.trim();
getField("PME_PRIMARY_KEY_TYPE").value = getField("PME_PRIMARY_KEY_TYPE_DATA").value.trim();
} else {
hideRowById("PME_PRIMARY_KEY");
}
}
leimnud.event.add(getField('PME_XMLNODE_VALUE'), 'keyup', function(){
getTablesNames();
});
leimnud.event.add(getField('PME_TABLE'), 'change', function(){
getTableFields();
getField('PME_TABLE_DATA').value = this.value.trim();
});
leimnud.event.add(getField('PME_PRIMARY_KEY'), 'change', function(){
getField('PME_PRIMARY_KEY_DATA').value = this.value.trim();
for(i=1; i<this.length; i++){
if(this.options[i].value != this.value){
getField('PME_FIELD').value = this.options[i].value.trim();
break;
}
}
});
leimnud.event.add(getField('PME_PRIMARY_KEY_TYPE'), 'change', function(){
getField('PME_PRIMARY_KEY_TYPE_DATA').value = this.value.trim();
});
function getTablesNames() {
var strSql = getField("PME_XMLNODE_VALUE").value;
strSql = stringReplace("\\x0A", " ", strSql); //\n 10
strSql = stringReplace("\\x0D", " ", strSql); //\r 13
strSql = stringReplace("\\x09", " ", strSql); //\t 9
var s0 = strSql;
var s = strSql.toUpperCase();
p1 = s.indexOf(" FROM ");
if(p1 > 0){
p2 = s.indexOf(" WHERE ");
if( p2 < 0 ){
p2 = s.indexOf(" ORDER ");
if( p2 < 0 ){
p2 = s.indexOf(" JOIN ");
if( p2 < 0 )
p2 = s.length
}
}
ss = s0.substring(p1, p2);
ss = ss.replace("FROM", "").trim();
ss = ss.replace("from", "").trim();
aTables = ss.split(',');
otable = getField('PME_TABLE');
oPK = getField('PME_PRIMARY_KEY');
oPKT = getField('PME_PRIMARY_KEY_TYPE');
oPK.length = 0;
oPKT.value = '';
otable.length = 0;
var newOption = new Option("", "0");
otable.options[0] = newOption;
var t = "";
for (var i = 0; i <= aTables.length - 1; i++) {
t = aTables[i].trim();
var newOption = new Option(t, t);
otable.options[i + 1] = newOption;
}
}
}
function getTableFields() {
var strSql = getField("PME_XMLNODE_VALUE").value;
strSql = stringReplace("\\x0A", " ", strSql); //\n 10
strSql = stringReplace("\\x0D", " ", strSql); //\r 13
strSql = stringReplace("\\x09", " ", strSql); //\t 9
var s0 = strSql;
var s = strSql.toUpperCase();
p1 = s.indexOf("SELECT ");
if(p1 >= 0){
p2 = s.indexOf(" FROM ");
p2 = (p2 > 0)? p2: s.length;
ss = s0.substring(p1, p2);
ss = ss.replace("SELECT", "").trim();
ss = ss.replace("FROM", "").trim();
ss = ss.replace("select", "").trim();
ss = ss.replace("from", "").trim();
aTables = ss.split(',');
otable = getField('PME_PRIMARY_KEY');
otable.length = 0;
var newOption = new Option("", "0");
otable.options[0] = newOption;
var t = "";
for (var i = 0; i <= aTables.length - 1; i++) {
t = aTables[i].trim();
var newOption = new Option(t, t);
otable.options[i + 1] = newOption;
}
}
}
function doSave(form){
if( getField('PME_STORE_NEW_ENTRY').checked ){
if(getField('PME_TABLE').value.trim() != '0' && getField('PME_PRIMARY_KEY').value.trim() != '0' && getField('PME_PRIMARY_KEY_TYPE').value.trim() != '0'){
fieldsSave(form);
} else {
msgBox(G_STRINGS.ID_SUGGEST_NEW_ENTRIES_ALERT, "alert");
}
} else {
fieldsSave(form);
}
}
function cancel(){
currentPopupWindow.remove();
}
]]></PME_JS>
</dynaForm>