diff --git a/workflow/engine/classes/class.pmTable.php b/workflow/engine/classes/class.pmTable.php index 16ba6b28c..cce6b9969 100755 --- a/workflow/engine/classes/class.pmTable.php +++ b/workflow/engine/classes/class.pmTable.php @@ -182,7 +182,7 @@ class PmTable * Build the pmTable with all dependencies */ public function build () - { + { $this->prepare(); $this->preparePropelIniFile(); $this->buildSchema(); @@ -273,6 +273,10 @@ class PmTable break; } + $indexNode = $this->dom->createElement( 'index' ); + $indexNode->setAttribute( 'name', 'indexTable' ); + $flag = false; + foreach ($this->columns as $column) { // create the column node @@ -296,9 +300,20 @@ class PmTable if ($column->field_autoincrement) { $columnNode->setAttribute( 'autoIncrement', "true" ); } + + // define the Index attribute if it is defined + if ($column->field_index) { + $columnNode->setAttribute( 'index', "true" ); + $indexColumnNode = $this->dom->createElement( 'index-column' ); + $indexColumnNode->setAttribute( 'name', $column->field_name ); + $indexNode->appendChild( $indexColumnNode ); + $flag = true; + } $tableNode->appendChild( $columnNode ); } - + if ($flag) { + $tableNode->appendChild( $indexNode ); + } $xpath = new DOMXPath( $this->dom ); $xtable = $xpath->query( '/database/table[@name="' . $this->tableName . '"]' ); @@ -377,7 +392,7 @@ class PmTable * Save the xml schema for propel */ public function saveSchema () - { + { $this->dom->save( $this->configDir . $this->schemaFilename ); } diff --git a/workflow/engine/classes/model/AdditionalTables.php b/workflow/engine/classes/model/AdditionalTables.php index c34abc1ba..07ce84404 100755 --- a/workflow/engine/classes/model/AdditionalTables.php +++ b/workflow/engine/classes/model/AdditionalTables.php @@ -97,6 +97,7 @@ class AdditionalTables extends BaseAdditionalTables $oCriteria->addSelectColumn(FieldsPeer::FLD_NULL); $oCriteria->addSelectColumn(FieldsPeer::FLD_AUTO_INCREMENT); $oCriteria->addSelectColumn(FieldsPeer::FLD_KEY); + $oCriteria->addSelectColumn(FieldsPeer::FLD_TABLE_INDEX); $oCriteria->addSelectColumn(FieldsPeer::FLD_FOREIGN_KEY); $oCriteria->addSelectColumn(FieldsPeer::FLD_FOREIGN_KEY_TABLE); $oCriteria->addSelectColumn(FieldsPeer::FLD_DYN_NAME); diff --git a/workflow/engine/classes/model/map/FieldsMapBuilder.php b/workflow/engine/classes/model/map/FieldsMapBuilder.php index 9380301fc..4ac11b15e 100755 --- a/workflow/engine/classes/model/map/FieldsMapBuilder.php +++ b/workflow/engine/classes/model/map/FieldsMapBuilder.php @@ -85,7 +85,9 @@ class FieldsMapBuilder $tMap->addColumn('FLD_KEY', 'FldKey', 'int', CreoleTypes::TINYINT, true, null); - $tMap->addColumn('FLD_FOREIGN_KEY', 'FldForeignKey', 'int', CreoleTypes::TINYINT, true, null); + $tMap->addColumn('FLD_TABLE_INDEX', 'FldTableIndex', 'int', CreoleTypes::TINYINT, true, null); + + $tMap->addColumn('FLD_FOREIGN_KEY', 'FldForeignKey', 'int', CreoleTypes::TINYINT, false, null); $tMap->addColumn('FLD_FOREIGN_KEY_TABLE', 'FldForeignKeyTable', 'string', CreoleTypes::VARCHAR, true, 32); diff --git a/workflow/engine/classes/model/om/BaseFields.php b/workflow/engine/classes/model/om/BaseFields.php index cde8d208b..55ca978db 100755 --- a/workflow/engine/classes/model/om/BaseFields.php +++ b/workflow/engine/classes/model/om/BaseFields.php @@ -87,6 +87,12 @@ abstract class BaseFields extends BaseObject implements Persistent */ protected $fld_key = 0; + /** + * The value for the fld_table_index field. + * @var int + */ + protected $fld_table_index = 0; + /** * The value for the fld_foreign_key field. * @var int @@ -241,6 +247,17 @@ abstract class BaseFields extends BaseObject implements Persistent return $this->fld_key; } + /** + * Get the [fld_table_index] column value. + * + * @return int + */ + public function getFldTableIndex() + { + + return $this->fld_table_index; + } + /** * Get the [fld_foreign_key] column value. * @@ -516,6 +533,28 @@ abstract class BaseFields extends BaseObject implements Persistent } // setFldKey() + /** + * Set the value of [fld_table_index] column. + * + * @param int $v new value + * @return void + */ + public function setFldTableIndex($v) + { + + // Since the native PHP type for this column is integer, + // we will cast the input value to an int (if it is not). + if ($v !== null && !is_int($v) && is_numeric($v)) { + $v = (int) $v; + } + + if ($this->fld_table_index !== $v || $v === 0) { + $this->fld_table_index = $v; + $this->modifiedColumns[] = FieldsPeer::FLD_TABLE_INDEX; + } + + } // setFldTableIndex() + /** * Set the value of [fld_foreign_key] column. * @@ -663,22 +702,24 @@ abstract class BaseFields extends BaseObject implements Persistent $this->fld_key = $rs->getInt($startcol + 9); - $this->fld_foreign_key = $rs->getInt($startcol + 10); + $this->fld_table_index = $rs->getInt($startcol + 10); - $this->fld_foreign_key_table = $rs->getString($startcol + 11); + $this->fld_foreign_key = $rs->getInt($startcol + 11); - $this->fld_dyn_name = $rs->getString($startcol + 12); + $this->fld_foreign_key_table = $rs->getString($startcol + 12); - $this->fld_dyn_uid = $rs->getString($startcol + 13); + $this->fld_dyn_name = $rs->getString($startcol + 13); - $this->fld_filter = $rs->getInt($startcol + 14); + $this->fld_dyn_uid = $rs->getString($startcol + 14); + + $this->fld_filter = $rs->getInt($startcol + 15); $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 15; // 15 = FieldsPeer::NUM_COLUMNS - FieldsPeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 16; // 16 = FieldsPeer::NUM_COLUMNS - FieldsPeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating Fields object", $e); @@ -913,18 +954,21 @@ abstract class BaseFields extends BaseObject implements Persistent return $this->getFldKey(); break; case 10: - return $this->getFldForeignKey(); + return $this->getFldTableIndex(); break; case 11: - return $this->getFldForeignKeyTable(); + return $this->getFldForeignKey(); break; case 12: - return $this->getFldDynName(); + return $this->getFldForeignKeyTable(); break; case 13: - return $this->getFldDynUid(); + return $this->getFldDynName(); break; case 14: + return $this->getFldDynUid(); + break; + case 15: return $this->getFldFilter(); break; default: @@ -957,11 +1001,12 @@ abstract class BaseFields extends BaseObject implements Persistent $keys[7] => $this->getFldNull(), $keys[8] => $this->getFldAutoIncrement(), $keys[9] => $this->getFldKey(), - $keys[10] => $this->getFldForeignKey(), - $keys[11] => $this->getFldForeignKeyTable(), - $keys[12] => $this->getFldDynName(), - $keys[13] => $this->getFldDynUid(), - $keys[14] => $this->getFldFilter(), + $keys[10] => $this->getFldTableIndex(), + $keys[11] => $this->getFldForeignKey(), + $keys[12] => $this->getFldForeignKeyTable(), + $keys[13] => $this->getFldDynName(), + $keys[14] => $this->getFldDynUid(), + $keys[15] => $this->getFldFilter(), ); return $result; } @@ -1024,18 +1069,21 @@ abstract class BaseFields extends BaseObject implements Persistent $this->setFldKey($value); break; case 10: - $this->setFldForeignKey($value); + $this->setFldTableIndex($value); break; case 11: - $this->setFldForeignKeyTable($value); + $this->setFldForeignKey($value); break; case 12: - $this->setFldDynName($value); + $this->setFldForeignKeyTable($value); break; case 13: - $this->setFldDynUid($value); + $this->setFldDynName($value); break; case 14: + $this->setFldDynUid($value); + break; + case 15: $this->setFldFilter($value); break; } // switch() @@ -1102,23 +1150,27 @@ abstract class BaseFields extends BaseObject implements Persistent } if (array_key_exists($keys[10], $arr)) { - $this->setFldForeignKey($arr[$keys[10]]); + $this->setFldTableIndex($arr[$keys[10]]); } if (array_key_exists($keys[11], $arr)) { - $this->setFldForeignKeyTable($arr[$keys[11]]); + $this->setFldForeignKey($arr[$keys[11]]); } if (array_key_exists($keys[12], $arr)) { - $this->setFldDynName($arr[$keys[12]]); + $this->setFldForeignKeyTable($arr[$keys[12]]); } if (array_key_exists($keys[13], $arr)) { - $this->setFldDynUid($arr[$keys[13]]); + $this->setFldDynName($arr[$keys[13]]); } if (array_key_exists($keys[14], $arr)) { - $this->setFldFilter($arr[$keys[14]]); + $this->setFldDynUid($arr[$keys[14]]); + } + + if (array_key_exists($keys[15], $arr)) { + $this->setFldFilter($arr[$keys[15]]); } } @@ -1172,6 +1224,10 @@ abstract class BaseFields extends BaseObject implements Persistent $criteria->add(FieldsPeer::FLD_KEY, $this->fld_key); } + if ($this->isColumnModified(FieldsPeer::FLD_TABLE_INDEX)) { + $criteria->add(FieldsPeer::FLD_TABLE_INDEX, $this->fld_table_index); + } + if ($this->isColumnModified(FieldsPeer::FLD_FOREIGN_KEY)) { $criteria->add(FieldsPeer::FLD_FOREIGN_KEY, $this->fld_foreign_key); } @@ -1264,6 +1320,8 @@ abstract class BaseFields extends BaseObject implements Persistent $copyObj->setFldKey($this->fld_key); + $copyObj->setFldTableIndex($this->fld_table_index); + $copyObj->setFldForeignKey($this->fld_foreign_key); $copyObj->setFldForeignKeyTable($this->fld_foreign_key_table); diff --git a/workflow/engine/classes/model/om/BaseFieldsPeer.php b/workflow/engine/classes/model/om/BaseFieldsPeer.php index 1b8eb5a6f..b64a964a4 100755 --- a/workflow/engine/classes/model/om/BaseFieldsPeer.php +++ b/workflow/engine/classes/model/om/BaseFieldsPeer.php @@ -25,7 +25,7 @@ abstract class BaseFieldsPeer const CLASS_DEFAULT = 'classes.model.Fields'; /** The total number of columns. */ - const NUM_COLUMNS = 15; + const NUM_COLUMNS = 16; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -61,6 +61,9 @@ abstract class BaseFieldsPeer /** the column name for the FLD_KEY field */ const FLD_KEY = 'FIELDS.FLD_KEY'; + /** the column name for the FLD_TABLE_INDEX field */ + const FLD_TABLE_INDEX = 'FIELDS.FLD_TABLE_INDEX'; + /** the column name for the FLD_FOREIGN_KEY field */ const FLD_FOREIGN_KEY = 'FIELDS.FLD_FOREIGN_KEY'; @@ -87,10 +90,10 @@ abstract class BaseFieldsPeer * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('FldUid', 'AddTabUid', 'FldIndex', 'FldName', 'FldDescription', 'FldType', 'FldSize', 'FldNull', 'FldAutoIncrement', 'FldKey', 'FldForeignKey', 'FldForeignKeyTable', 'FldDynName', 'FldDynUid', 'FldFilter', ), - BasePeer::TYPE_COLNAME => array (FieldsPeer::FLD_UID, FieldsPeer::ADD_TAB_UID, FieldsPeer::FLD_INDEX, FieldsPeer::FLD_NAME, FieldsPeer::FLD_DESCRIPTION, FieldsPeer::FLD_TYPE, FieldsPeer::FLD_SIZE, FieldsPeer::FLD_NULL, FieldsPeer::FLD_AUTO_INCREMENT, FieldsPeer::FLD_KEY, FieldsPeer::FLD_FOREIGN_KEY, FieldsPeer::FLD_FOREIGN_KEY_TABLE, FieldsPeer::FLD_DYN_NAME, FieldsPeer::FLD_DYN_UID, FieldsPeer::FLD_FILTER, ), - BasePeer::TYPE_FIELDNAME => array ('FLD_UID', 'ADD_TAB_UID', 'FLD_INDEX', 'FLD_NAME', 'FLD_DESCRIPTION', 'FLD_TYPE', 'FLD_SIZE', 'FLD_NULL', 'FLD_AUTO_INCREMENT', 'FLD_KEY', 'FLD_FOREIGN_KEY', 'FLD_FOREIGN_KEY_TABLE', 'FLD_DYN_NAME', 'FLD_DYN_UID', 'FLD_FILTER', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ) + BasePeer::TYPE_PHPNAME => array ('FldUid', 'AddTabUid', 'FldIndex', 'FldName', 'FldDescription', 'FldType', 'FldSize', 'FldNull', 'FldAutoIncrement', 'FldKey', 'FldTableIndex', 'FldForeignKey', 'FldForeignKeyTable', 'FldDynName', 'FldDynUid', 'FldFilter', ), + BasePeer::TYPE_COLNAME => array (FieldsPeer::FLD_UID, FieldsPeer::ADD_TAB_UID, FieldsPeer::FLD_INDEX, FieldsPeer::FLD_NAME, FieldsPeer::FLD_DESCRIPTION, FieldsPeer::FLD_TYPE, FieldsPeer::FLD_SIZE, FieldsPeer::FLD_NULL, FieldsPeer::FLD_AUTO_INCREMENT, FieldsPeer::FLD_KEY, FieldsPeer::FLD_TABLE_INDEX, FieldsPeer::FLD_FOREIGN_KEY, FieldsPeer::FLD_FOREIGN_KEY_TABLE, FieldsPeer::FLD_DYN_NAME, FieldsPeer::FLD_DYN_UID, FieldsPeer::FLD_FILTER, ), + BasePeer::TYPE_FIELDNAME => array ('FLD_UID', 'ADD_TAB_UID', 'FLD_INDEX', 'FLD_NAME', 'FLD_DESCRIPTION', 'FLD_TYPE', 'FLD_SIZE', 'FLD_NULL', 'FLD_AUTO_INCREMENT', 'FLD_KEY', 'FLD_TABLE_INDEX', 'FLD_FOREIGN_KEY', 'FLD_FOREIGN_KEY_TABLE', 'FLD_DYN_NAME', 'FLD_DYN_UID', 'FLD_FILTER', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ) ); /** @@ -100,10 +103,10 @@ abstract class BaseFieldsPeer * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('FldUid' => 0, 'AddTabUid' => 1, 'FldIndex' => 2, 'FldName' => 3, 'FldDescription' => 4, 'FldType' => 5, 'FldSize' => 6, 'FldNull' => 7, 'FldAutoIncrement' => 8, 'FldKey' => 9, 'FldForeignKey' => 10, 'FldForeignKeyTable' => 11, 'FldDynName' => 12, 'FldDynUid' => 13, 'FldFilter' => 14, ), - BasePeer::TYPE_COLNAME => array (FieldsPeer::FLD_UID => 0, FieldsPeer::ADD_TAB_UID => 1, FieldsPeer::FLD_INDEX => 2, FieldsPeer::FLD_NAME => 3, FieldsPeer::FLD_DESCRIPTION => 4, FieldsPeer::FLD_TYPE => 5, FieldsPeer::FLD_SIZE => 6, FieldsPeer::FLD_NULL => 7, FieldsPeer::FLD_AUTO_INCREMENT => 8, FieldsPeer::FLD_KEY => 9, FieldsPeer::FLD_FOREIGN_KEY => 10, FieldsPeer::FLD_FOREIGN_KEY_TABLE => 11, FieldsPeer::FLD_DYN_NAME => 12, FieldsPeer::FLD_DYN_UID => 13, FieldsPeer::FLD_FILTER => 14, ), - BasePeer::TYPE_FIELDNAME => array ('FLD_UID' => 0, 'ADD_TAB_UID' => 1, 'FLD_INDEX' => 2, 'FLD_NAME' => 3, 'FLD_DESCRIPTION' => 4, 'FLD_TYPE' => 5, 'FLD_SIZE' => 6, 'FLD_NULL' => 7, 'FLD_AUTO_INCREMENT' => 8, 'FLD_KEY' => 9, 'FLD_FOREIGN_KEY' => 10, 'FLD_FOREIGN_KEY_TABLE' => 11, 'FLD_DYN_NAME' => 12, 'FLD_DYN_UID' => 13, 'FLD_FILTER' => 14, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ) + BasePeer::TYPE_PHPNAME => array ('FldUid' => 0, 'AddTabUid' => 1, 'FldIndex' => 2, 'FldName' => 3, 'FldDescription' => 4, 'FldType' => 5, 'FldSize' => 6, 'FldNull' => 7, 'FldAutoIncrement' => 8, 'FldKey' => 9, 'FldTableIndex' => 10, 'FldForeignKey' => 11, 'FldForeignKeyTable' => 12, 'FldDynName' => 13, 'FldDynUid' => 14, 'FldFilter' => 15, ), + BasePeer::TYPE_COLNAME => array (FieldsPeer::FLD_UID => 0, FieldsPeer::ADD_TAB_UID => 1, FieldsPeer::FLD_INDEX => 2, FieldsPeer::FLD_NAME => 3, FieldsPeer::FLD_DESCRIPTION => 4, FieldsPeer::FLD_TYPE => 5, FieldsPeer::FLD_SIZE => 6, FieldsPeer::FLD_NULL => 7, FieldsPeer::FLD_AUTO_INCREMENT => 8, FieldsPeer::FLD_KEY => 9, FieldsPeer::FLD_TABLE_INDEX => 10, FieldsPeer::FLD_FOREIGN_KEY => 11, FieldsPeer::FLD_FOREIGN_KEY_TABLE => 12, FieldsPeer::FLD_DYN_NAME => 13, FieldsPeer::FLD_DYN_UID => 14, FieldsPeer::FLD_FILTER => 15, ), + BasePeer::TYPE_FIELDNAME => array ('FLD_UID' => 0, 'ADD_TAB_UID' => 1, 'FLD_INDEX' => 2, 'FLD_NAME' => 3, 'FLD_DESCRIPTION' => 4, 'FLD_TYPE' => 5, 'FLD_SIZE' => 6, 'FLD_NULL' => 7, 'FLD_AUTO_INCREMENT' => 8, 'FLD_KEY' => 9, 'FLD_TABLE_INDEX' => 10, 'FLD_FOREIGN_KEY' => 11, 'FLD_FOREIGN_KEY_TABLE' => 12, 'FLD_DYN_NAME' => 13, 'FLD_DYN_UID' => 14, 'FLD_FILTER' => 15, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ) ); /** @@ -224,6 +227,8 @@ abstract class BaseFieldsPeer $criteria->addSelectColumn(FieldsPeer::FLD_KEY); + $criteria->addSelectColumn(FieldsPeer::FLD_TABLE_INDEX); + $criteria->addSelectColumn(FieldsPeer::FLD_FOREIGN_KEY); $criteria->addSelectColumn(FieldsPeer::FLD_FOREIGN_KEY_TABLE); diff --git a/workflow/engine/classes/model/om/BaseHolidayPeer.php b/workflow/engine/classes/model/om/BaseHolidayPeer.php index 2428fc1ff..e517622e4 100755 --- a/workflow/engine/classes/model/om/BaseHolidayPeer.php +++ b/workflow/engine/classes/model/om/BaseHolidayPeer.php @@ -348,7 +348,7 @@ abstract class BaseHolidayPeer $criteria = $values->buildCriteria(); // build Criteria from Holiday object } - $criteria->remove(HolidayPeer::HLD_UID); // remove pkey col since this table uses auto-increment + //$criteria->remove(HolidayPeer::HLD_UID); // remove pkey col since this table uses auto-increment // Set the correct dbName diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index ab5aa6b94..30ba10fb1 100755 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -2171,21 +2171,22 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/workflow/engine/controllers/pmTablesProxy.php b/workflow/engine/controllers/pmTablesProxy.php index 76d841752..b62e28fbf 100755 --- a/workflow/engine/controllers/pmTablesProxy.php +++ b/workflow/engine/controllers/pmTablesProxy.php @@ -311,7 +311,23 @@ class pmTablesProxy extends HttpProxyController // Updating pmtable fields foreach ($columns as $i => $column) { - $field = array ('FLD_UID' => $column->uid,'FLD_INDEX' => $i,'ADD_TAB_UID' => $addTabUid,'FLD_NAME' => $column->field_name,'FLD_DESCRIPTION' => $column->field_label,'FLD_TYPE' => $column->field_type,'FLD_SIZE' => $column->field_size == '' ? null : $column->field_size,'FLD_NULL' => $column->field_null ? 1 : 0,'FLD_AUTO_INCREMENT' => $column->field_autoincrement ? 1 : 0,'FLD_KEY' => $column->field_key ? 1 : 0,'FLD_FOREIGN_KEY' => 0,'FLD_FOREIGN_KEY_TABLE' => '','FLD_DYN_NAME' => $column->field_dyn,'FLD_DYN_UID' => $column->field_uid,'FLD_FILTER' => (isset( $column->field_filter ) && $column->field_filter) ? 1 : 0 + $field = array ( + 'FLD_UID' => $column->uid, + 'FLD_INDEX' => $i, + 'ADD_TAB_UID' => $addTabUid, + 'FLD_NAME' => $column->field_name, + 'FLD_DESCRIPTION' => $column->field_label, + 'FLD_TYPE' => $column->field_type, + 'FLD_SIZE' => $column->field_size == '' ? null : $column->field_size, + 'FLD_NULL' => $column->field_null ? 1 : 0, + 'FLD_AUTO_INCREMENT' => $column->field_autoincrement ? 1 : 0, + 'FLD_KEY' => $column->field_key ? 1 : 0, + 'FLD_TABLE_INDEX' => $column->field_index ? 1 : 0, + 'FLD_FOREIGN_KEY' => 0, + 'FLD_FOREIGN_KEY_TABLE' => '', + 'FLD_DYN_NAME' => $column->field_dyn, + 'FLD_DYN_UID' => $column->field_uid, + 'FLD_FILTER' => (isset( $column->field_filter ) && $column->field_filter) ? 1 : 0 ); $oFields->create( $field ); } diff --git a/workflow/engine/templates/pmTables/edit.js b/workflow/engine/templates/pmTables/edit.js index c6de75793..c4453ba1a 100644 --- a/workflow/engine/templates/pmTables/edit.js +++ b/workflow/engine/templates/pmTables/edit.js @@ -160,6 +160,12 @@ Ext.onReady(function(){ hidden: true, hideable:false }, + { + id: 'field_index', + dataIndex: 'field_index', + hidden: true, + hideable:false + }, { id: 'field_null', dataIndex: 'field_null', @@ -238,10 +244,11 @@ Ext.onReady(function(){ var fieldNull = Ext.getCmp("field_null"); var fieldPrimaryKey = Ext.getCmp("field_primary_key"); + var fieldIndex = Ext.getCmp("field_index"); var fieldInc = Ext.getCmp("field_incre"); var sizeEdit = Ext.getCmp("sizeEdit"); - editorFieldsEnableDisable(selCombo, fieldNull, fieldPrimaryKey, fieldInc, sizeEdit); + editorFieldsEnableDisable(selCombo, fieldNull, fieldPrimaryKey, fieldIndex, fieldInc, sizeEdit); flagShowMessageError = 1; } @@ -297,6 +304,20 @@ Ext.onReady(function(){ disabled: true, inputValue: 'always' } + }, { + xtype: 'booleancolumn', + header: _('ID_INDEX'), + dataIndex: 'field_index', + align: 'center', + width: 80, + trueText: _('ID_YES'), + falseText: _('ID_NO'), + editor: { + xtype: 'checkbox', + id: 'field_index', + disabled: true, + inputValue: 'always' + } } ]; @@ -331,6 +352,7 @@ Ext.onReady(function(){ {name: 'uid', type: 'string'}, {name: 'field_uid', type: 'string'}, {name: 'field_key', type: 'string'}, + {name: 'field_index', type: 'string'}, {name: 'field_name', type: 'string'}, {name: 'field_label', type: 'string'}, {name: 'field_type'}, @@ -393,10 +415,11 @@ Ext.onReady(function(){ var fieldTypeValue = Ext.getCmp("fieldType").getValue(); var fieldNull = Ext.getCmp("field_null"); var fieldPrimaryKey = Ext.getCmp("field_primary_key"); + var fieldIndex = Ext.getCmp("field_index"); var fieldInc = Ext.getCmp("field_incre"); var sizeEdit = Ext.getCmp("sizeEdit"); - editorFieldsEnableDisable(fieldTypeValue, fieldNull, fieldPrimaryKey, fieldInc, sizeEdit); + editorFieldsEnableDisable(fieldTypeValue, fieldNull, fieldPrimaryKey, fieldIndex, fieldInc, sizeEdit); }, 250 ); @@ -407,7 +430,10 @@ Ext.onReady(function(){ //if a column was set as PK so can't be null if (row.get('field_key') == true) { row.data.field_null = false; + } + if (row.get('field_index') == true) { + row.data.field_null = false; } row.commit(); } @@ -838,6 +864,10 @@ function createReportTable() return false; } + if (row.data['field_index']) { + hasSomeIndex = true; + } + if (row.data['field_key']) { hasSomePrimaryKey = true; } @@ -939,6 +969,7 @@ function addColumn() { field_type : '', field_size : '', field_key : 0, + field_index : 0, field_null : 1 }); var len = assignedGrid.getStore().data.length; @@ -968,18 +999,20 @@ function removeColumn() }); } -function editorFieldsEnableDisable(fieldTypeValue, fieldNull, fieldPrimaryKey, fieldInc, sizeEdit) +function editorFieldsEnableDisable(fieldTypeValue, fieldNull, fieldPrimaryKey, fieldIndex, fieldInc, sizeEdit) { var swSize = 1; //Enable var swNull = 1; var swPK = 1; var swAI = 1; + var swI = 1; //Date if (fieldTypeValue == "DATE" || fieldTypeValue == "DATETIME" || fieldTypeValue == "TIME") { swSize = 0; //Disable swPK = 0; swAI = 0; + swI = 0; } //Numbers @@ -994,12 +1027,14 @@ function editorFieldsEnableDisable(fieldTypeValue, fieldNull, fieldPrimaryKey, f if (fieldTypeValue == "DECIMAL" || fieldTypeValue == "FLOAT") { swPK = 0; swAI = 0; + swI = 0; } if (fieldTypeValue == "DOUBLE" || fieldTypeValue == "REAL") { swSize = 0; swPK = 0; swAI = 0; + swI = 0; } //String @@ -1010,6 +1045,7 @@ function editorFieldsEnableDisable(fieldTypeValue, fieldNull, fieldPrimaryKey, f if (fieldTypeValue == "LONGVARCHAR") { swPK = 0; swAI = 0; + swI = 0; } //Boolean @@ -1018,6 +1054,7 @@ function editorFieldsEnableDisable(fieldTypeValue, fieldNull, fieldPrimaryKey, f swNull = 0; swPK = 0; swAI = 0; + swI = 0; } //Set enable/disable @@ -1035,6 +1072,13 @@ function editorFieldsEnableDisable(fieldTypeValue, fieldNull, fieldPrimaryKey, f fieldPrimaryKey.setValue(false); } + if (swI == 1) { + fieldIndex.enable(); + } else { + fieldIndex.disable(); + fieldIndex.setValue(false); + } + if (swAI == 1) { fieldInc.enable(); } else { @@ -1067,14 +1111,15 @@ AssignFieldsAction = function(){ 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 + 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_index : 0, + field_null : 1 }); store.add(row); @@ -1124,6 +1169,7 @@ AssignAllFieldsAction = function(){ field_type : meta.type, field_size : meta.size, field_key : 0, + field_index : 0, field_null : 1 }); @@ -1207,6 +1253,7 @@ var DDLoadFields = function(){ field_type : meta.type, field_size : meta.size, field_key : 0, + field_index : 0, field_null : 1 }); @@ -1223,25 +1270,25 @@ var DDLoadFields = function(){ function loadTableRowsFromArray(records) { - var PMRow = assignedGrid.getStore().recordType; - if (records.length == 0) return; - - for (i=0;i