diff --git a/gulliver/system/class.form.php b/gulliver/system/class.form.php
index ec820ef0e..a795e5db1 100644
--- a/gulliver/system/class.form.php
+++ b/gulliver/system/class.form.php
@@ -330,6 +330,9 @@ class Form extends XmlForm
$values["{$k}_label"] .= ($i != 0 ? '|': '') . $v->options[$value];
} else {
$query = G::replaceDataField($this->fields[$k]->sql,$newValues);
+ if(trim($query) == '') {
+ continue;
+ }
//we do the query to the external connection and we've got the label
$con = Propel::getConnection($this->fields[$k]->sqlConnection!=""?$this->fields[$k]->sqlConnection:"workflow");//use default connection workflow if connection is not defined. Same as Dynaforms
@@ -361,6 +364,9 @@ class Form extends XmlForm
$values["{$k}_label"] = $newValues["{$k}_label"] = $v->options[$newValues[$k]];
} else {
$query = G::replaceDataField($this->fields[$k]->sql,$newValues);
+ if(trim($query) == '') {
+ continue;
+ }
//we do the query to the external connection and we've got the label
$con = Propel::getConnection($this->fields[$k]->sqlConnection!=""?$this->fields[$k]->sqlConnection:"workflow");
$stmt = $con->prepareStatement($query);
diff --git a/workflow/engine/controllers/pmTables.php b/workflow/engine/controllers/pmTables.php
index 1f0b1d9dc..10b3447e5 100644
--- a/workflow/engine/controllers/pmTables.php
+++ b/workflow/engine/controllers/pmTables.php
@@ -37,6 +37,14 @@ class pmTables extends Controller
$this->setJSVar('_PLUGIN_SIMPLEREPORTS', $this->_getSimpleReportPluginDef());
+ if (isset($_SESSION['_cache_pmtables'])) {
+ unset($_SESSION['_cache_pmtables']);
+ }
+
+ if (isset($_SESSION['ADD_TAB_UID'])) {
+ unset($_SESSION['ADD_TAB_UID']);
+ }
+
//render content
G::RenderPage('publish', 'extJs');
}
@@ -52,66 +60,21 @@ class pmTables extends Controller
$table = false;
$repTabPluginPermissions = false;
$additionalTables = new AdditionalTables();
- $additionalTables = new AdditionalTables();
if ($addTabUid !== false) { // if is a edit request
- require_once 'classes/model/AdditionalTables.php';
- require_once 'classes/model/Fields.php';
+ require_once 'classes/model/AdditionalTables.php';
$tableFields = array();
$fieldsList = array();
$table = $additionalTables->load($addTabUid, true);
-
- // list the case fields
- foreach ($table['FIELDS'] as $i=>$field) {
- $table['FIELDS'][$i]['FLD_KEY'] = $field['FLD_KEY'] == '1' ? TRUE: FALSE;
- $table['FIELDS'][$i]['FLD_NULL'] = $field['FLD_NULL'] == '1' ? TRUE: FALSE;
- $table['FIELDS'][$i]['FLD_FILTER'] = $field['FLD_FILTER'] == '1' ? TRUE: FALSE;
- array_push($tableFields, $field['FLD_DYN_NAME']);
- }
+ $_SESSION['ADD_TAB_UID'] = $addTabUid;
//list dynaform fields
switch ($table['ADD_TAB_TYPE']) {
case 'NORMAL':
- $fields = pmTablesProxy::_getDynafields($table['PRO_UID']);
-
- foreach ($fields as $field) {
- //select to not assigned fields for available grid
- if (!in_array($field['name'], $tableFields)) {
- $fieldsList[] = array(
- 'FIELD_UID' => $field['name'] . '-' . $field['type'],
- 'FIELD_NAME' => $field['name']
- );
- }
- }
- sort($fieldsList);
- $this->setJSVar('avFieldsList', $fieldsList);
- $repTabPluginPermissions = $this->_getSimpleReportPluginDef();
- $this->setJSVar('_plugin_permissions', $repTabPluginPermissions);
- break;
-
case 'GRID':
- list($gridName, $gridId) = explode('-', $table['ADD_TAB_GRID']);
- // $G_FORM = new Form($table['PRO_UID'] . '/' . $gridId, PATH_DYNAFORM, SYS_LANG, false);
- // $gridFields = $G_FORM->getVars(false);
- $fieldsList = array();
- $gridFields = pmTablesProxy::_getGridDynafields($table['PRO_UID'], $gridId);
- foreach ($gridFields as $gfield) {
- if (!in_array($gfield['name'], $tableFields)) {
- $fieldsList[] = array(
- 'FIELD_UID' => $gfield['name'] . '-' . $gfield['type'],
- 'FIELD_NAME' => $gfield['name']
- );
- }
- }
- sort($fieldsList);
- $this->setJSVar('avFieldsList', $fieldsList);
$repTabPluginPermissions = $this->_getSimpleReportPluginDef();
break;
-
- default:
-
- break;
}
}
diff --git a/workflow/engine/controllers/pmTablesProxy.php b/workflow/engine/controllers/pmTablesProxy.php
index a3b25a1d0..cb3f5e83a 100644
--- a/workflow/engine/controllers/pmTablesProxy.php
+++ b/workflow/engine/controllers/pmTablesProxy.php
@@ -13,6 +13,7 @@ class pmTablesProxy extends HttpProxyController
protected $className;
protected $classPeerName;
+ protected $dynUid;
/**
* get pmtables list
@@ -109,49 +110,68 @@ class pmTablesProxy extends HttpProxyController
$aFields['FIELDS'] = array();
$aFields['PRO_UID'] = $httpData->PRO_UID;
+ $dynFields = array();
if(isset($httpData->TYPE) && $httpData->TYPE == 'GRID') {
$aProcessGridFields = Array();
if (isset($httpData->GRID_UID)) {
- global $G_FORM;
list($gridName, $gridId) = explode('-', $httpData->GRID_UID);
+ $this->dynUid = $gridId;
- $gridFields = $this->_getGridDynafields($httpData->PRO_UID, $gridId);
-
- foreach ($gridFields as $gfield) {
- $aProcessGridFields[] = array(
- 'FIELD_UID' => $gfield['name'] . '-' . $gfield['type'],
- 'FIELD_NAME' => $gfield['name']
- );
+ $httpData->textFilter = isset($httpData->textFilter) ? $httpData->textFilter : null;
+ $dynFields = $this->_getDynafields($aFields['PRO_UID'], 'grid', $httpData->start, $httpData->limit, $httpData->textFilter);
+ }
+ else {
+ if (isset($_SESSION['_cache_pmtables'])) {
+ unset($_SESSION['_cache_pmtables']);
}
- } else {
$gridFields = $this->_getGridFields($aFields['PRO_UID']);
foreach ($gridFields as $gfield) {
- $aProcessGridFields[] = array(
+ $dynFields[] = array(
'FIELD_UID' => $gfield['name'] . '-' . $gfield['xmlform'],
'FIELD_NAME' => $gfield['name']
);
}
}
- $resultList = $aProcessGridFields;
- } else {
- $aProcessFields = Array();
- $dynFields = $this->_getDynafields($aFields['PRO_UID']);
-
- foreach ($dynFields as $dfield) {
- $aProcessFields[] = array(
- 'FIELD_UID' => $dfield['name'] . '-' . $dfield['type'],
- 'FIELD_NAME' => $dfield['name']
- );
- }
- $resultList = $aProcessFields;
+ }
+ else {
+ $httpData->textFilter = isset($httpData->textFilter) ? $httpData->textFilter : null;
+ $dynFields = $this->_getDynafields($aFields['PRO_UID'], 'xmlform', $httpData->start, $httpData->limit, $httpData->textFilter);
}
- sort($resultList);
+ return $dynFields;
+ }
- return array('processFields'=>$resultList);
+ public function updateAvDynafields($httpData)
+ {
+ $indexes = explode(',', $httpData->indexes);
+ $fields = array();
+ $httpData->isset = $httpData->isset=='true'? true: false;
+
+ if (isset($_SESSION['_cache_pmtables']) && $_SESSION['_cache_pmtables']['pro_uid']== $httpData->PRO_UID) {
+ foreach ($indexes as $i) {
+ if (is_numeric($i)) {
+ if (isset($_SESSION['_cache_pmtables']['rows'][$i])) {
+ $_SESSION['_cache_pmtables']['rows'][$i]['_isset'] = $httpData->isset;
+ if ($httpData->isset) {
+ $_SESSION['_cache_pmtables']['count']++;
+ } else {
+ $_SESSION['_cache_pmtables']['count']--;
+ }
+
+ $fields[] = $_SESSION['_cache_pmtables']['rows'][$i]['FIELD_NAME'];
+ }
+ } else {
+
+ $index = $_SESSION['_cache_pmtables']['indexes'][$i];
+ $_SESSION['_cache_pmtables']['rows'][$index]['_isset'] = $httpData->isset;
+ }
+ }
+ }
+
+ return $fields;
}
/**
@@ -813,7 +833,7 @@ class pmTablesProxy extends HttpProxyController
* @param $proUid
* @param $type [values:xmlform/grid]
*/
- function _getDynafields($proUid, $type = 'xmlform')
+ function _getDynafields2($proUid, $type = 'xmlform')
{
require_once 'classes/model/Dynaform.php';
$fields = array();
@@ -856,6 +876,122 @@ class pmTablesProxy extends HttpProxyController
return $fields;
}
+ function _getDynafields($proUid, $type = 'xmlform', $start=null, $limit=null, $filter=null)
+ {
+ $cache = 1;
+ if (!isset($_SESSION['_cache_pmtables']) || (isset($_SESSION['_cache_pmtables']) && $_SESSION['_cache_pmtables']['pro_uid'] != $proUid)) {
+ require_once 'classes/model/Dynaform.php';
+ $cache = 0;
+ $fields = array();
+ $fieldsNames = array();
+
+ $oCriteria = new Criteria('workflow');
+ $oCriteria->addSelectColumn(DynaformPeer::DYN_FILENAME);
+ $oCriteria->add(DynaformPeer::PRO_UID, $proUid);
+ $oCriteria->add(DynaformPeer::DYN_TYPE, $type);
+
+
+ if (isset($this->dynUid)) {
+ $oCriteria->add(DynaformPeer::DYN_UID, $this->dynUid);
+ }
+
+ $oDataset = DynaformPeer::doSelectRS($oCriteria);
+ $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $oDataset->next();
+
+ $excludeFieldsList = array('title', 'subtitle', 'link', 'file', 'button', 'reset', 'submit',
+ 'listbox', 'checkgroup', 'grid', 'javascript');
+
+ $labelFieldsTypeList = array('dropdown', 'radiogroup');
+ G::loadSystem('dynaformhandler');
+ $index = 0;
+
+ while ($aRow = $oDataset->getRow()) {
+ if (file_exists(PATH_DYNAFORM . PATH_SEP . $aRow['DYN_FILENAME'] . '.xml')) {
+ $dynaformHandler = new dynaformHandler(PATH_DYNAFORM . $aRow['DYN_FILENAME']. '.xml');
+ $nodeFieldsList = $dynaformHandler->getFields();
+
+ foreach($nodeFieldsList as $node) {
+ $arrayNode = $dynaformHandler->getArray($node);
+ $fieldName = $arrayNode['__nodeName__'];
+ $fieldType = $arrayNode['type'];
+
+ if (!in_array($fieldType, $excludeFieldsList) && !in_array($fieldName, $fieldsNames)) {
+ $fields[] = array(
+ 'FIELD_UID' => $fieldName . '-' . $fieldType,
+ 'FIELD_NAME' => $fieldName,
+ '_index' => $index++,
+ '_isset' => true
+ );
+ $fieldsNames[] = $fieldName;
+
+ if (in_array($fieldType, $labelFieldsTypeList) && !in_array($fieldName . '_label', $fieldsNames)) {
+ $fields[] = array(
+ 'FIELD_UID' => $fieldName . '_label' . '-' . $fieldType,
+ 'FIELD_NAME' => $fieldName . '_label',
+ '_index' => $index++,
+ '_isset' => true
+ );
+ $fieldsNames[] = $fieldName;
+ }
+ }
+ }
+
+ }
+ $oDataset->next();
+ }
+
+ sort($fields);
+
+ // if is a editing
+ $fieldsEdit = array();
+ if (isset($_SESSION['ADD_TAB_UID'])) {
+ require_once 'classes/model/AdditionalTables.php';
+
+ $additionalTables = new AdditionalTables();
+ $table = $additionalTables->load($_SESSION['ADD_TAB_UID'], true);
+
+ foreach ($table['FIELDS'] as $i=>$field) {
+ array_push($fieldsEdit, $field['FLD_DYN_NAME']);
+ }
+ }//end editing
+
+ foreach($fields as $i => $field) {
+ $fields[$i]['_index'] = $i;
+ $indexes[$field['FIELD_NAME']] = $i;
+
+ if(in_array($field['FIELD_NAME'], $fieldsEdit)) {
+ $fields[$i]['_isset'] = false;
+ }
+ }
+
+ $_SESSION['_cache_pmtables']['pro_uid'] = $proUid;
+ $_SESSION['_cache_pmtables']['rows'] = $fields;
+ $_SESSION['_cache_pmtables']['count'] = count($fields);
+ $_SESSION['_cache_pmtables']['indexes'] = $indexes;
+ } //end reload
+
+ $fields = array();
+ $tmp = array();
+
+ foreach ($_SESSION['_cache_pmtables']['rows'] as $i => $row) {
+ if (isset($filter) && $filter != '') {
+ if ($row['_isset'] && stripos($row['FIELD_NAME'], $filter) !== false) {
+ $tmp[] = $row;
+ }
+ }
+ else {
+ if ($row['_isset']) {
+ $tmp[] = $row;
+ }
+ }
+ }
+
+ $fields = array_slice($tmp, $start, $limit);
+
+ return array('cache'=>$cache, 'count'=>count($tmp), 'rows'=>$fields);
+ }
+
/**
* Get all dynaform grid fields from a process
* @param $proUid
@@ -895,27 +1031,38 @@ class pmTablesProxy extends HttpProxyController
*/
function _getGridFields($proUid)
{
+ require_once 'classes/model/Dynaform.php';
+ G::loadSystem('dynaformhandler');
$aFields = array();
$aFieldsNames = array();
- require_once 'classes/model/Dynaform.php';
+
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(DynaformPeer::DYN_FILENAME);
$oCriteria->add(DynaformPeer::PRO_UID, $proUid);
+ $oCriteria->add(DynaformPeer::DYN_TYPE, 'xmlform');
$oDataset = DynaformPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
+
while ($aRow = $oDataset->getRow()) {
- $G_FORM = new Form($aRow['DYN_FILENAME'], PATH_DYNAFORM, SYS_LANG);
- if ($G_FORM->type == 'xmlform') {
- foreach($G_FORM->fields as $k => $v) {
- if ($v->type == 'grid') {
- if (!in_array($k, $aFieldsNames)) {
- $aFields[] = array('name' => $k, 'xmlform' => str_replace($proUid . '/', '', $v->xmlGrid));
- $aFieldsNames[] = $k;
- }
+ //$G_FORM = new Form($aRow['DYN_FILENAME'], PATH_DYNAFORM, SYS_LANG);
+ $dynaformHandler = new dynaformHandler(PATH_DYNAFORM . $aRow['DYN_FILENAME']. '.xml');
+ $nodeFieldsList = $dynaformHandler->getFields();
+
+ foreach($nodeFieldsList as $node) {
+ $arrayNode = $dynaformHandler->getArray($node);
+ $fieldName = $arrayNode['__nodeName__'];
+ $fieldType = $arrayNode['type'];
+
+ if ($fieldType == 'grid') {
+
+ if (!in_array($fieldName, $aFieldsNames)) {
+ $aFields[] = array('name' => $fieldName, 'xmlform' => str_replace($proUid . '/', '', $arrayNode['xmlgrid']));
+ $aFieldsNames[] = $fieldName;
}
}
}
+
$oDataset->next();
}
return $aFields;
diff --git a/workflow/engine/js/processmap/core/processmap.js b/workflow/engine/js/processmap/core/processmap.js
index b69fa4286..2b6960ce5 100644
--- a/workflow/engine/js/processmap/core/processmap.js
+++ b/workflow/engine/js/processmap/core/processmap.js
@@ -2,6 +2,7 @@ var PROCESSMAP_STEP_EDIT = false;
var PROCESSMAP_USER_EDIT = false;
var processmapOutputsPanel;
+var _client = getClientWindowSize();
var processmap=function(){
this.data={
@@ -23,8 +24,8 @@ var processmap=function(){
Hx = 460;
if(lanzado=='reportTables'){
- Wx = 800;
- Hx = 600;
+ Wx = _client.width-20; //900;
+ Hx = _client.height-15; //600;
}
var bbk = {
@@ -163,8 +164,8 @@ var processmap=function(){
iframe.setAttribute('id','reportTablesIframe');
iframe.src = '../pmTables?PRO_UID=' + this.options.uid;
iframe.style.border='0px';
- iframe.style.width='786px';
- iframe.style.height='564px';
+ iframe.style.width=_client.width-36;//'886px';
+ iframe.style.height=_client.height-60;//'564px';
panel.addContent(iframe);
}.extend(this),
dynaforms:function(){
diff --git a/workflow/engine/templates/pmTables/editReport.js b/workflow/engine/templates/pmTables/editReport.js
index 161a896e4..30fbe4da6 100644
--- a/workflow/engine/templates/pmTables/editReport.js
+++ b/workflow/engine/templates/pmTables/editReport.js
@@ -16,9 +16,12 @@ var assignAllButton;
var removeButton;
var removeAllButton;
var tmp1 = new Array();
+var pageSize = 50;
+var mainMask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait..."});
+var bbarpaging;
//main
Ext.onReady(function(){
-
+ mainMask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait..."});
var fm = Ext.form;
var fieldsCount = 0;
@@ -28,15 +31,31 @@ Ext.onReady(function(){
url: '../pmTablesProxy/getDynafields'
}),
reader : new Ext.data.JsonReader( {
- root: 'processFields',
- fields : [{name : 'FIELD_UID'}, {name : 'FIELD_NAME'}]
+ root: 'rows',
+ totalProperty: 'count',
+ fields : [
+ {name : 'FIELD_UID'},
+ {name : 'FIELD_NAME'},
+ {name : '_index'},
+ {name : '_isset'}
+ ]
}),
listeners: {
load: function() {
-
+ Ext.getCmp('availableGrid').store.sort();
+ storeA.setBaseParam('PRO_UID', (PRO_UID !== false? PRO_UID : Ext.getCmp('PROCESS').getValue()));
+ mainMask.hide();
+ assignedGrid._setTitle();
}
- }
+ },
+ baseParams: {
+ PRO_UID: ''
+ },
+ remoteSort: false
});
+
+ storeA.setDefaultSort('FIELD_NAME', 'asc');
+
//column model for available fields grid
cmodelA = new Ext.grid.ColumnModel({
defaults: {
@@ -49,6 +68,14 @@ Ext.onReady(function(){
dataIndex: 'FIELD_UID',
hidden:true,
hideable:false
+ }, {
+ dataIndex:'_index',
+ hidden:true,
+ hideable:false
+ }, {
+ dataIndex:'_isset',
+ hidden:true,
+ hideable:false
}, {
header : _("ID_DYNAFORM_FIELDS"),
dataIndex : 'FIELD_NAME',
@@ -69,6 +96,43 @@ Ext.onReady(function(){
}
}
});
+
+
+ storePageSize = new Ext.data.SimpleStore({
+ fields: ['size'],
+ data: [['20'],['30'],['40'],['50'],['100']],
+ autoLoad: true
+ });
+
+ comboPageSize = new Ext.form.ComboBox({
+ typeAhead : false,
+ mode : 'local',
+ triggerAction : 'all',
+ store: storePageSize,
+ valueField: 'size',
+ displayField: 'size',
+ width: 50,
+ editable: false,
+ listeners:{
+ select: function(c,d,i){
+ //UpdatePageConfig(d.data['size']);
+ bbarpaging.pageSize = parseInt(d.data['size']);
+ bbarpaging.moveFirst();
+ }
+ }
+ });
+
+ comboPageSize.setValue(pageSize);
+
+ bbarpaging = new Ext.PagingToolbar({
+ pageSize: pageSize,
+ store: storeA,
+ displayInfo: true,
+ displayMsg: '{0} - {1} of {2}',
+ emptyMsg: 'No records'/*,
+ items: ['-',_('ID_PAGE_SIZE')+':',comboPageSize]*/
+ });
+
//grid for table columns grid
availableGrid = new Ext.grid.GridPanel({
layout : 'fit',
@@ -80,7 +144,7 @@ Ext.onReady(function(){
autoWidth : true,
stripeRows : true,
height : 100,
- width : 200,
+ width : '25%',
stateful : true,
stateId : 'grid',
enableHdMenu : false,
@@ -89,11 +153,50 @@ Ext.onReady(function(){
cm : cmodelA,
sm : smodelA,
store : storeA,
+ //loadMask: {message:'Loading...'},
listeners : {
rowdblclick: AssignFieldsAction
- }
+ },
+ tbar: [
+ '->',
+ {
+ xtype: 'textfield',
+ id: 'searchTxt',
+ ctCls:'pm_search_text_field',
+ allowBlank: true,
+ width: 150,
+ emptyText: _('ID_ENTER_SEARCH_TERM'),
+ listeners: {
+ specialkey: function(f,e){
+ if (e.getKey() == e.ENTER) {
+ filterAvFields();
+ }
+ }
+ }
+ },
+ {
+ text: 'X',
+ ctCls:'pm_search_x_button',
+ handler: function(){
+ Ext.getCmp('searchTxt').setValue('');
+ filterAvFields();
+ }
+ }, {
+ text: 'Filter',
+ handler: function(){
+ filterAvFields();
+ }
+ }
+ ],
+ bbar: bbarpaging
});
+ var filterAvFields = function() {
+ //availableGrid.store.load({params: {textFilter: Ext.getCmp('searchTxt').getValue()}});
+ //storeA.setParam('textFilter', Ext.getCmp('searchTxt').getValue());
+ storeA.reload({params: {textFilter: Ext.getCmp('searchTxt').getValue(), start: bbarpaging.cursor, limit: pageSize}});
+ }
+
//selecion model for table columns grid
sm = new Ext.grid.RowSelectionModel({
selectSingle: false,
@@ -106,8 +209,9 @@ Ext.onReady(function(){
break;
case 1:
var record = Ext.getCmp('assignedGrid').getSelectionModel().getSelected();
-
- if (record.data.field_dyn == '' && record.data.field_name != 'APP_UID' && record.data.field_name != 'APP_NUMBER' && record.data.field_name != 'ROW') {
+ Ext.getCmp('removeButton').enable();
+
+ if (record.data.field_dyn != '' && record.data.field_name != 'APP_UID' && record.data.field_name != 'APP_NUMBER' && record.data.field_name != 'ROW') {
Ext.getCmp('removeColumn').enable();
}
break;
@@ -132,7 +236,15 @@ Ext.onReady(function(){
id: 'uid',
dataIndex: 'uid',
hidden: true
- },
+ },
+ {
+ dataIndex: '_index',
+ hidden: true
+ },
+ {
+ dataIndex: '_isset',
+ hidden: true
+ },
{
id: 'field_uid',
dataIndex: 'field_uid',
@@ -247,6 +359,8 @@ Ext.onReady(function(){
store = new Ext.data.ArrayStore({
fields: [
{name: 'uid', type: 'string'},
+ {name: '_index'},
+ {name: '_isset'},
{name: 'field_uid', type: 'string'},
{name: 'field_key', type: 'string'},
{name: 'field_name', type: 'string'},
@@ -276,7 +390,7 @@ Ext.onReady(function(){
//table columns grid
assignedGrid = new Ext.grid.GridPanel({
- //title: 'Columns',
+ title: 'New Report Table',
region : 'center',
id : 'assignedGrid',
ddGroup : 'availableGridDDGroup',
@@ -286,6 +400,7 @@ Ext.onReady(function(){
sm : sm,
store : store,
plugins : [editor, checkColumn],
+ loadMask: {message:'Loading...'},
tbar : [
{
icon: '/images/add-row-after.png',
@@ -333,6 +448,9 @@ Ext.onReady(function(){
}
});
}
+ },
+ _setTitle: function() {
+ this.setTitle('Report Table: ' + Ext.getCmp('REP_TAB_NAME').getValue() + ' ('+store.getCount()+' columns)');
}
});
@@ -497,7 +615,7 @@ Ext.onReady(function(){
gridsListStore = new Ext.data.Store({
//autoLoad: true,
proxy : new Ext.data.HttpProxy({
- url: '../pmTablesProxy/availableFieldsReportTables',
+ url: '../pmTablesProxy/getDynafields',
method : 'POST'
}),
baseParams : {
@@ -505,7 +623,7 @@ Ext.onReady(function(){
TYPE: 'GRID'
},
reader : new Ext.data.JsonReader( {
- root : 'processFields',
+ //root : 'processFields',
fields : [{name : 'FIELD_UID'}, {name : 'FIELD_NAME'}]
}),
listeners: {
@@ -595,9 +713,11 @@ Ext.onReady(function(){
comboDbConnections.getStore().reload({params:{PRO_UID : Ext.getCmp('PROCESS').getValue()}});
// loading available fields
- //if (TABLE.ADD_TAB_TYPE == 'NORMAL') {
- loadAvFieldsFromArray(avFieldsList);
- //}
+ //loadAvFieldsFromArray(avFieldsList);
+ if (TABLE.ADD_TAB_TYPE == 'GRID')
+ loadFieldsGrids();
+ else
+ loadFieldNormal();
// loading table fields
loadTableRowsFromArray(TABLE.FIELDS);
@@ -662,7 +782,8 @@ Ext.onReady(function(){
style:'text-transform: uppercase',
listeners:{
change: function(){
- this.setValue(this.getValue().toUpperCase())
+ this.setValue(this.getValue().toUpperCase());
+ assignedGrid._setTitle();
}
}
});
@@ -746,7 +867,8 @@ Ext.onReady(function(){
}
if (TABLE === false) {
- loadFieldNormal();
+ if(TABLE.ADD_TAB_TYPE != 'GRID')
+ loadFieldNormal();
} //else if(typeof avFieldsList != 'undefined')
//loadAvFieldsFromArray(avFieldsList);
@@ -845,6 +967,10 @@ function createReportTable()
//add custon column for assignedGrid
function addColumn()
{
+ if (!verifyTableLimit()) {
+ return false;
+ }
+
var PMRow = assignedGrid.getStore().recordType;
var row = new PMRow({
uid : '',
@@ -877,100 +1003,45 @@ function removeColumn()
////ASSIGNBUTON FUNCTIONALITY
AssignFieldsAction = function(){
records = Ext.getCmp('availableGrid').getSelectionModel().getSelections();
-
- for(i=0; i < records.length; i++){
- var PMRow = assignedGrid.getStore().recordType;
- var meta = mapPMFieldType(records[i].data['FIELD_UID']);
- var row = new PMRow({
- uid : '',
- field_uid : records[i].data['FIELD_UID'],
- field_dyn : records[i].data['FIELD_NAME'],
- field_name : records[i].data['FIELD_NAME'].toUpperCase(),
- field_label : records[i].data['FIELD_NAME'].toUpperCase(),
- field_type : meta.type,
- field_size : meta.size,
- field_key : 0,
- field_null : 1
- });
-
- store.add(row);
- }
-
- //remove from source grid
- Ext.each(records, Ext.getCmp('availableGrid').store.remove, Ext.getCmp('availableGrid').store);
+ setReportFields(records);
};
+
//RemoveButton Functionality
RemoveFieldsAction = function(){
-
records = Ext.getCmp('assignedGrid').getSelectionModel().getSelections();
- var PMRow = availableGrid.getStore().recordType;
- for(i=0; i < records.length; i++){
- if (records[i].data['field_dyn'] != '' && records[i].data['field_name'] != 'APP_UID' && records[i].data['field_name'] != 'APP_NUMBER' && records[i].data['field_name'] != 'ROW') {
- var row = new PMRow({
- FIELD_UID : records[i].data['field_uid'],
- FIELD_NAME : records[i].data['field_dyn']
- });
- availableGrid.getStore().add(row);
- } else {
- records[i] = null;
- }
- }
//remove from source grid
- Ext.each(records, Ext.getCmp('assignedGrid').store.remove, Ext.getCmp('assignedGrid').store);
+ unsetReportFields(records);
};
//AssignALLButton Functionality
AssignAllFieldsAction = function(){
- var available = Ext.getCmp('availableGrid');
- var allRows = available.getStore();
- var arrAux = new Array();
- records = new Array()
+ var avStore = Ext.getCmp('availableGrid').getStore();
+ var records = new Array();
- if (allRows.getCount() > 0){
- var PMRow = assignedGrid.getStore().recordType;
- for (i=0; i < allRows.getCount(); i++){
- records[i] = allRows.getAt(i);
- var meta = mapPMFieldType(records[i].data['FIELD_UID']);
- var row = new PMRow({
- uid : '',
- field_uid : records[i].data['FIELD_UID'],
- field_dyn : records[i].data['FIELD_NAME'],
- field_name : records[i].data['FIELD_NAME'].toUpperCase(),
- field_label : records[i].data['FIELD_NAME'].toUpperCase(),
- field_type : meta.type,
- field_size : meta.size,
- field_key : 0,
- field_null : 1
- });
-
- store.add(row);
+ if (avStore.getCount() > 0){
+ for (i=0; i < avStore.getCount(); i++){
+ records[i] = avStore.getAt(i);
}
- //remove from source grid
- Ext.each(records, Ext.getCmp('availableGrid').store.remove, Ext.getCmp('availableGrid').store);
+ setReportFields(records);
}
-
};
//RevomeALLButton Functionality
RemoveAllFieldsAction = function(){
+
+ if (store.getCount() > 100) {
+ PMExt.info('Notice', 'This action was disabled to prevent low performance on your browser. This is because there is more than 100 records on the columns definition grid.
Please perform this action with manual selection only.');
+ return ;
+ }
+
var allRows = Ext.getCmp('assignedGrid').getStore();
var records = new Array();
if (allRows.getCount() > 0) {
- var PMRow = availableGrid.getStore().recordType;
for (var i=0; i < allRows.getCount(); i++){
records[i] = allRows.getAt(i);
- if (records[i].data['field_dyn'] != '' && records[i].data['field_name'] != 'APP_UID' && records[i].data['field_name'] != 'APP_NUMBER' && records[i].data['field_name'] != 'ROW') {
- var row = new PMRow({
- FIELD_UID : records[i].data['field_uid'],
- FIELD_NAME : records[i].data['field_dyn']
- });
- availableGrid.getStore().add(row);
- } else {
- records[i] = null;
- }
}
//remove from source grid
- Ext.each(records, Ext.getCmp('assignedGrid').store.remove, Ext.getCmp('assignedGrid').store);
+ unsetReportFields(records);
}
};
@@ -980,7 +1051,9 @@ loadFieldNormal = function(){
Ext.getCmp('availableGrid').store.load({
params: {
action: "getDynafields",
- PRO_UID: PRO_UID !== false ? PRO_UID : Ext.getCmp('PROCESS').getValue()
+ PRO_UID: PRO_UID !== false ? PRO_UID : Ext.getCmp('PROCESS').getValue(),
+ start: 0,
+ limit: pageSize
}
});
Ext.getCmp('assignedGrid').store.removeAll();
@@ -995,7 +1068,9 @@ loadFieldsGrids = function(){
action: "getDynafields",
PRO_UID: PRO_UID !== false ? PRO_UID : Ext.getCmp('PROCESS').getValue(),
TYPE: 'GRID',
- GRID_UID: Ext.getCmp('REP_TAB_GRID').getValue()
+ GRID_UID: Ext.getCmp('REP_TAB_GRID').getValue(),
+ start: 0,
+ limit: pageSize
}
});
@@ -1023,28 +1098,8 @@ var DDLoadFields = function(){
var availableGridDropTarget = new Ext.dd.DropTarget(availableGridDropTargetEl, {
ddGroup : 'availableGridDDGroup',
notifyDrop : function(ddSource, e, data){
-
var records = ddSource.dragData.selections;
- var PMRow = availableGrid.getStore().recordType;
-
- for (i=0; i < records.length; i++) {
- if (records[i].data['field_dyn'] != '') {
- var row = new PMRow({
- FIELD_UID: records[i].data['field_uid'],
- FIELD_NAME: records[i].data['field_dyn']
- });
- availableGrid.getStore().add(row);
- } else {
- if ( records[i].data['field_name'] == 'APP_UID'
- || records[i].data['field_name'] == 'APP_NUMBER'
- || records[i].data['field_name'] == 'ROW')
- {
- records[i] = null;
- }
- }
- }
-
- Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
+ unsetReportFields(records);
return true;
}
});
@@ -1054,37 +1109,104 @@ var DDLoadFields = function(){
var assignedGridDropTarget = new Ext.dd.DropTarget(assignedGridDropTargetEl, {
ddGroup : 'assignedGridDDGroup',
notifyDrop : function(ddSource, e, data){
-
- var records = ddSource.dragData.selections;
- var PMRow = assignedGrid.getStore().recordType;
-
//add on target grid
- for (i=0; i < records.length; i++){
- //arrAux[r] = records[r].data['FIELD_UID'];
- var meta = mapPMFieldType(records[i].data['FIELD_UID']);
- var row = new PMRow({
- uid : '',
- field_uid : records[i].data['FIELD_UID'],
- field_dyn : records[i].data['FIELD_NAME'],
- field_name : records[i].data['FIELD_NAME'].toUpperCase(),
- field_label : records[i].data['FIELD_NAME'].toUpperCase(),
- field_type : meta.type,
- field_size : meta.size,
- field_key : 0,
- field_null : 1
- });
-
- store.add(row);
- }
- //remove from source grid
- Ext.each(records, availableGrid.store.remove, availableGrid.store);
-
+ setReportFields(ddSource.dragData.selections)
return true;
}
});
//sw_func_groups = true;
};
+function setReportFields(records) {
+ mainMask.show();
+
+ var PMRow = assignedGrid.getStore().recordType;
+ var indexes = new Array();
+
+ for (i=0; i < records.length; i++) {
+ if (!verifyTableLimit()) {
+ return false;
+ }
+
+ var meta = mapPMFieldType(records[i].data['FIELD_UID']);
+ var row = new PMRow({
+ uid : '',
+ field_uid : records[i].data['FIELD_UID'],
+ field_dyn : records[i].data['FIELD_NAME'],
+ field_name : records[i].data['FIELD_NAME'].toUpperCase(),
+ field_label : records[i].data['FIELD_NAME'].toUpperCase(),
+ field_type : meta.type,
+ field_size : meta.size,
+ field_key : 0,
+ field_null : 1,
+ _index : records[i].data['_index'] ? records[i].data['_index'] : records[i].data['FIELD_DYN']
+ });
+
+ store.add(row);
+ indexes.push(records[i].data['_index']);
+ }
+
+ //remove from source grid
+ Ext.each(records, availableGrid.store.remove, availableGrid.store);
+
+ //update on server
+ Ext.Ajax.request({
+ url: '../pmTablesProxy/updateAvDynafields',
+ params: {
+ PRO_UID : PRO_UID !== false? PRO_UID : Ext.getCmp('PROCESS').getValue(),
+ indexes : indexes.join(','),
+ isset : false
+ },
+ success: function(resp){
+ result = Ext.util.JSON.decode(resp.responseText);
+ availableGrid.store.reload();
+ }
+ });
+}
+
+function unsetReportFields(records) {
+ mainMask.show();
+
+ var PMRow = availableGrid.getStore().recordType;
+ var indexes = new Array();
+
+ for (i=0; i < records.length; i++) {
+ if (records[i].data['field_dyn'] != '') {
+ var row = new PMRow({
+ FIELD_UID: records[i].data['field_uid'],
+ FIELD_NAME: records[i].data['field_dyn']
+ });
+ availableGrid.getStore().add(row);
+ ix = records[i].data['_index'] != '' ? records[i].data['_index'] : records[i].data['field_dyn']
+ indexes.push(ix);
+ } else {
+ if ( records[i].data['field_name'] == 'APP_UID'
+ || records[i].data['field_name'] == 'APP_NUMBER'
+ || records[i].data['field_name'] == 'ROW')
+ {
+ records[i] = null;
+ }
+ }
+ }
+
+ Ext.each(records, assignedGrid.store.remove, assignedGrid.store);
+
+ //update on server
+ Ext.Ajax.request({
+ url: '../pmTablesProxy/updateAvDynafields',
+ params: {
+ PRO_UID : PRO_UID !== false? PRO_UID : Ext.getCmp('PROCESS').getValue(),
+ indexes : indexes.join(','),
+ isset : true
+ },
+ success: function(resp){
+ result = Ext.util.JSON.decode(resp.responseText);
+ availableGrid.store.reload();
+ }
+ });
+}
+
+
function loadTableRowsFromArray(records)
{
var PMRow = assignedGrid.getStore().recordType;
@@ -1101,7 +1223,8 @@ function loadTableRowsFromArray(records)
field_size : records[i].FLD_SIZE,
field_key : records[i].FLD_KEY,
field_null : records[i].FLD_NULL,
- field_filter: records[i].FLD_FILTER == '1' ? true : false
+ field_filter: records[i].FLD_FILTER == '1' ? true : false,
+ _index : ''
});
store.add(row);
@@ -1182,4 +1305,16 @@ Ext.override(Ext.form.TextField, {
}
return value;
}
-});
\ No newline at end of file
+});
+
+
+function verifyTableLimit()
+{
+ if( store.getCount() >= 255 ) {
+ mainMask.hide();
+ PMExt.info('Notice', 'The maximun limit of columns for a database table is 255, you already have them defined!');
+ assignedGrid._setTitle();
+ return false;
+ }
+ return true;
+}
\ No newline at end of file