Files
luos/workflow/engine/js/controls/variablePicker.js
Roly Rudy Gutierrez Pinto 877a088ad8 PM-4411
2015-12-10 11:45:40 -04:00

200 lines
7.1 KiB
JavaScript
Executable File

var setVariablePickerJS = function(){
if (document.getElementById('_Var_Form_').addEventListener) // W3C DOM
document.getElementById('_Var_Form_').addEventListener('dblclick', function(){
if(this.value.substring(0,5) == 'gridt') {
try {
updateEditorContent(this.value.substring(5));
closePluginPopup();
} catch(err) {
closePluginPopup();
}
} else {
if (this.getAttribute('displayOption')=='event'){
e.insertFormVar(this.value.substring(2), this.value.substring(2), 'dyn' );
} else {
insertFormVar(document.getElementById('selectedField').value, this.value);
}
}
});
else if (document.getElementById('selectedField').attachEvent) { // IE DOM
var element = document.getElementById('_Var_Form_');
element.attachEvent("ondblclick", function(){
if(element.value.substring(0,5) == 'gridt') {
try {
updateEditorContent(element.value.substring(5));
closePluginPopup();
} catch(err) {
closePluginPopup();
}
} else {
if (element.displayOption=='event'){
e.insertFormVar(element.value.substring(2), element.value.substring(2), 'dyn' );
} else {
insertFormVar(document.getElementById('selectedField').value, element.value);
}
}
});
}
/**
* Function getVariableList returns a list with all process variables
*
* @access public
* @param string proUid process ID
* @param string queryText text searched
* @param string varType type of variables (System or Process)
* @return array
*/
var getVariableList = function (queryText, proUid, varType){
varType = varType.toLowerCase();
var responseData
var oRPC = new leimnud.module.rpc.xmlhttp({
url : "../processes/processes_Ajax",
async : false,
method: "POST",
args : "action=getVariableList&process="+proUid+"&queryText="+queryText+"&type="+varType
});
oRPC.make();
//alert(oRPC.xmlhttp.responseText);
responseData = eval ("(" +oRPC.xmlhttp.responseText+ ")");
return responseData;
}
/**
* Function getPrefix returns selected prefix
*
* @access public
* @param string prefix
* @return string
*/
var getPrefix = function (prefix) {
if(document.getElementById('prefix').value=='ID_TO_STRING')
prefix='@@';
else if(document.getElementById('prefix').value=='ID_TO_FLOAT')
prefix='@#';
else if(document.getElementById('prefix').value=='ID_TO_INTEGER')
prefix='@%';
else if(document.getElementById('prefix').value=='ID_TO_URL')
prefix='@?';
else if(document.getElementById('prefix').value=='ID_SQL_ESCAPE')
prefix='@$';
else if(document.getElementById('prefix').value=='ID_REPLACE_WITHOUT_CHANGES')
prefix='@=';
return prefix;
}
/**
* Function getPrefixInfo returns a prefix description
*
* @access public
* @param string prefix
* @return string
*/
var getPrefixInfo = function (prefix){
var oRPC = new leimnud.module.rpc.xmlhttp({
url : "../processes/processes_Ajax",
async : false,
method: "POST",
args : "action=getVariablePrefix&prefix="+prefix
});
oRPC.make();
return oRPC.xmlhttp.responseText;
}
leimnud.event.add(document.getElementById('type_variables'), 'change', function(event) {
var prefix=getPrefix(document.getElementById('prefix').value);
generateListValues(prefix);
});
leimnud.event.add(document.getElementById('prefix'), 'change', function(event) {
var prefix=getPrefix(document.getElementById('prefix').value);
generateListValues(prefix);
});
leimnud.event.add(document.getElementById('_Var_Form_'), 'change', function(event) {
var selectElement = document.getElementById('_Var_Form_');
if(selectElement.value.substring(0,5) == 'gridt') {
document.getElementById('selectedVariableLabel').textContent = selectElement.options[selectElement.selectedIndex].text;
} else {
document.getElementById('selectedVariableLabel').textContent = selectElement.value
}
});
leimnud.event.add(document.getElementById('search'), 'keypress', function(e) {
var prefix=getPrefix(document.getElementById('prefix').value);
var key = e.keyCode;
if(key == '13'){
generateListValues(prefix);
e.cancelBubble = true;
e.returnValue = false;
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
}
});
/**
* Function generateListValues fills the dropdown with all variables according to filters
*
* @access public
* @param string prefix
* @return array
*/
function generateListValues (prefix){
var list = getVariableList(document.getElementById('search').value, document.getElementById('process').value, document.getElementById('type_variables').value);
var combo = document.getElementById("_Var_Form_");
var option = document.createElement('option');
var isBpmn = document.getElementById('isBpmn').value;
for(i=(combo.length-1); i>=0; i--)
{
aBorrar = combo.options[i];
aBorrar.parentNode.removeChild(aBorrar);
}
if(list.length>0){
for(i=0; i<list.length; i++)
{
var optionValue = prefix+list[i].sName;
if(isBpmn) {
if (list[i].sType === "hidden"){
list[i].sLabel = "hidden";
}
if(list[i].sLabel && list[i].sLabel.toLowerCase() == 'grid') {
var gridValue = 'gridt<table border=1 cellspacing=0><tr><th>Header_1</th></tr><tbody><!--@>'+list[i].sName+'--><tr><td>column_name1</td></tr><!--@<'+list[i].sName+'--></tbody></table>';
optionValue = gridValue;
}
}
option = document.createElement("OPTION");
option.value = optionValue;
option.text = prefix+list[i].sName+' ('+list[i].sLabel+')';
combo.add(option);
}
} else {
option = document.createElement("OPTION");
option.value = 0;
option.text = 'No results';
combo.add(option);
}
}
}
// check wether the document has been already loaded or not,
// whatever the state is this condition ensures that the events are always loaded
if (document.readyState == 'complete'){
// if completed load the functions and events
setVariablePickerJS();
} else {
// if not set the function call in the body onload event
document.body.onload = setVariablePickerJS;
}