Merge pull request #2084 from Jennydmz/BUG-12254a
BUG-12254 Funcionalidad Search en las grillas DATA de los PMTables y Report Tables.
This commit is contained in:
@@ -343,7 +343,7 @@ class AdditionalTables extends BaseAdditionalTables
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAllData($sUID, $start = null, $limit = null, $keyOrderUppercase = true)
|
public function getAllData($sUID, $start = null, $limit = null, $keyOrderUppercase = true, $filter = '')
|
||||||
{
|
{
|
||||||
$addTab = new AdditionalTables();
|
$addTab = new AdditionalTables();
|
||||||
$aData = $addTab->load($sUID, true);
|
$aData = $addTab->load($sUID, true);
|
||||||
@@ -370,15 +370,43 @@ class AdditionalTables extends BaseAdditionalTables
|
|||||||
if ($keyOrderUppercase == true) {
|
if ($keyOrderUppercase == true) {
|
||||||
foreach ($aData['FIELDS'] as $aField) {
|
foreach ($aData['FIELDS'] as $aField) {
|
||||||
eval('$oCriteria->addSelectColumn(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ');');
|
eval('$oCriteria->addSelectColumn(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ');');
|
||||||
if ($aField['FLD_KEY'] == '1') {
|
/*if ($aField['FLD_KEY'] == '1') {
|
||||||
eval('$oCriteria->addAscendingOrderByColumn('. $sClassPeerName . '::' . $aField['FLD_NAME'] . ');');
|
eval('$oCriteria->addAscendingOrderByColumn('. $sClassPeerName . '::' . $aField['FLD_NAME'] . ');');
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$oCriteriaCount = clone $oCriteria;
|
$oCriteriaCount = clone $oCriteria;
|
||||||
//$count = $sClassPeerName::doCount($oCriteria);
|
//$count = $sClassPeerName::doCount($oCriteria);
|
||||||
eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
|
eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
|
||||||
|
|
||||||
|
if ($filter != '' && is_string($filter)) {
|
||||||
|
eval('$fieldsTable = ' . $sClassPeerName . '::getFieldNames(BasePeer::TYPE_FIELDNAME);');
|
||||||
|
$countField = count($fieldsTable);
|
||||||
|
$stringOr = '$oCriteria->add(';
|
||||||
|
$cont = 1;
|
||||||
|
foreach ($fieldsTable as $value) {
|
||||||
|
if ($cont == $countField) {
|
||||||
|
$stringOr .= '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . strtoupper($value) . ', "%' . $filter . '%", Criteria::LIKE)';
|
||||||
|
} else {
|
||||||
|
$stringOr .= '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . strtoupper($value) . ', "%' . $filter . '%", Criteria::LIKE)->addOr(';
|
||||||
|
}
|
||||||
|
$cont++;
|
||||||
|
}
|
||||||
|
for ($c = 1; $c < $countField; $c ++) {
|
||||||
|
$stringOr .= ')';
|
||||||
|
}
|
||||||
|
$stringOr .= ');';
|
||||||
|
eval($stringOr);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST['sort'])) {
|
||||||
|
if ($_POST['dir'] == 'ASC') {
|
||||||
|
eval('$oCriteria->addAscendingOrderByColumn(' . $sClassPeerName . '::' . $_POST['sort'] . ');');
|
||||||
|
} else {
|
||||||
|
eval('$oCriteria->addDescendingOrderByColumn(' . $sClassPeerName . '::' . $_POST['sort'] . ');');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($limit)) {
|
if (isset($limit)) {
|
||||||
$oCriteria->setLimit($limit);
|
$oCriteria->setLimit($limit);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -416,10 +416,16 @@ class pmTablesProxy extends HttpProxyController
|
|||||||
$limit_size = isset( $config['pageSize'] ) ? $config['pageSize'] : 20;
|
$limit_size = isset( $config['pageSize'] ) ? $config['pageSize'] : 20;
|
||||||
$start = isset( $httpData->start ) ? $httpData->start : 0;
|
$start = isset( $httpData->start ) ? $httpData->start : 0;
|
||||||
$limit = isset( $httpData->limit ) ? $httpData->limit : $limit_size;
|
$limit = isset( $httpData->limit ) ? $httpData->limit : $limit_size;
|
||||||
|
$filter = isset( $httpData->textFilter ) ? $httpData->textFilter : '';
|
||||||
|
|
||||||
$additionalTables = new AdditionalTables();
|
$additionalTables = new AdditionalTables();
|
||||||
$table = $additionalTables->load( $httpData->id, true );
|
$table = $additionalTables->load( $httpData->id, true );
|
||||||
$result = $additionalTables->getAllData( $httpData->id, $start, $limit );
|
|
||||||
|
if ($filter != '') {
|
||||||
|
$result = $additionalTables::getAllData( $httpData->id, $start, $limit, true, $filter);
|
||||||
|
} else {
|
||||||
|
$result = $additionalTables->getAllData( $httpData->id, $start, $limit );
|
||||||
|
}
|
||||||
|
|
||||||
$primaryKeys = $additionalTables->getPrimaryKeys();
|
$primaryKeys = $additionalTables->getPrimaryKeys();
|
||||||
|
|
||||||
|
|||||||
@@ -71,9 +71,39 @@ Ext.onReady(function(){
|
|||||||
handler : BackPMList
|
handler : BackPMList
|
||||||
});
|
});
|
||||||
|
|
||||||
|
searchButton = new Ext.Action({
|
||||||
|
text: _('ID_SEARCH'),
|
||||||
|
handler: DoSearch
|
||||||
|
});
|
||||||
|
|
||||||
contextMenu = new Ext.menu.Menu({
|
contextMenu = new Ext.menu.Menu({
|
||||||
items : [ editButton, deleteButton ]
|
items : [ editButton, deleteButton ]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
searchText = new Ext.form.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) {
|
||||||
|
DoSearch();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
focus: function(f,e) {
|
||||||
|
var row = infoGrid.getSelectionModel().getSelected();
|
||||||
|
infoGrid.getSelectionModel().deselectRow(infoGrid.getStore().indexOf(row));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
clearTextButton = new Ext.Action({
|
||||||
|
text: 'X',
|
||||||
|
ctCls:'pm_search_x_button',
|
||||||
|
handler: GridByDefault
|
||||||
|
});
|
||||||
|
|
||||||
//This loop loads columns and fields to store and column model
|
//This loop loads columns and fields to store and column model
|
||||||
_columns = new Array();
|
_columns = new Array();
|
||||||
@@ -295,6 +325,7 @@ Ext.onReady(function(){
|
|||||||
})
|
})
|
||||||
|
|
||||||
store = new Ext.data.Store({
|
store = new Ext.data.Store({
|
||||||
|
remoteSort: true,
|
||||||
proxy : proxy,
|
proxy : proxy,
|
||||||
reader : reader,
|
reader : reader,
|
||||||
writer : writer, // <-- plug a DataWriter into the store just as you would a Reader
|
writer : writer, // <-- plug a DataWriter into the store just as you would a Reader
|
||||||
@@ -352,11 +383,19 @@ Ext.onReady(function(){
|
|||||||
deleteButton,
|
deleteButton,
|
||||||
'-',
|
'-',
|
||||||
importButton,
|
importButton,
|
||||||
exportButton
|
exportButton,
|
||||||
|
'->',
|
||||||
|
searchText,
|
||||||
|
clearTextButton,
|
||||||
|
searchButton
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
tbar = [genDataReportButton];
|
tbar = [genDataReportButton,
|
||||||
|
'->',
|
||||||
|
searchText,
|
||||||
|
clearTextButton,
|
||||||
|
searchButton];
|
||||||
|
|
||||||
infoGridConfig = {
|
infoGridConfig = {
|
||||||
region: 'center',
|
region: 'center',
|
||||||
@@ -423,6 +462,18 @@ onMessageContextMenu = function (grid, rowIndex, e) {
|
|||||||
|
|
||||||
/////JS FUNCTIONS
|
/////JS FUNCTIONS
|
||||||
|
|
||||||
|
//Do Search Function
|
||||||
|
|
||||||
|
DoSearch = function(){
|
||||||
|
infoGrid.store.load({params: {textFilter: searchText.getValue()}});
|
||||||
|
};
|
||||||
|
|
||||||
|
//Load Grid By Default
|
||||||
|
GridByDefault = function(){
|
||||||
|
searchText.reset();
|
||||||
|
infoGrid.store.load();
|
||||||
|
};
|
||||||
|
|
||||||
//Capitalize String Function
|
//Capitalize String Function
|
||||||
capitalize = function(s){
|
capitalize = function(s){
|
||||||
s = s.toLowerCase();
|
s = s.toLowerCase();
|
||||||
|
|||||||
Reference in New Issue
Block a user