HOR-509 "Departaments> Al dar click en todos para asignar..." SOLVED

Issue:
    Departaments> Al dar click en todos para asignar usuarios en Departamentos tarda demasiado y sale un error
Cause:
    El codigo en la seccion "assignedUsers" y "availableUsers" en departments_Ajax.php no son optimos
Solution:
    - Se implemento el metodo \ProcessMaker\BusinessModel\Department::getUsers() (Back-End)
    - Se agrego el pager a los grids en ADMIN>Users>Departments>Users (Front-End)
This commit is contained in:
Victor Saisa Lopez
2016-03-22 16:10:18 -04:00
parent e719e8ee82
commit 6470adda9b
5 changed files with 442 additions and 192 deletions

View File

@@ -63,6 +63,11 @@ $oHeadPublisher->addContent( 'departments/departmentUsers' ); //adding a html fi
G::LoadClass( 'configuration' ); G::LoadClass( 'configuration' );
$c = new Configurations(); $c = new Configurations();
$arrayConfigPage = $c->getConfiguration('departmentUsersList', 'pageSize', null, $_SESSION['USER_LOGGED']);
$arrayConfig = [];
$arrayConfig['pageSize'] = (isset($arrayConfigPage['pageSize']))? $arrayConfigPage['pageSize'] : 20;
$dep = new Department(); $dep = new Department();
$dep->Load( $_GET['dUID'] ); $dep->Load( $_GET['dUID'] );
@@ -73,6 +78,7 @@ $depart['DEP_MANAGER'] = $dep->getDepManager();
$oHeadPublisher->assign( 'DEPARTMENT', $depart ); $oHeadPublisher->assign( 'DEPARTMENT', $depart );
$oHeadPublisher->assign( 'FORMATS', $c->getFormats() ); $oHeadPublisher->assign( 'FORMATS', $c->getFormats() );
$oHeadPublisher->assign('CONFIG', $arrayConfig);
G::RenderPage( 'publish', 'extJs' ); G::RenderPage( 'publish', 'extJs' );

View File

@@ -22,12 +22,6 @@
* For more information, contact Colosa Inc, 2566 Le Jeune Rd., * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com. * Coral Gables, FL, 33134, USA, or email info@colosa.com.
*/ */
G::LoadSystem('inputfilter');
$filter = new InputFilter();
$_POST = $filter->xssFilterHard($_POST);
$_REQUEST = $filter->xssFilterHard($_REQUEST);
function LookForChildren ($parent, $level, $aDepUsers) function LookForChildren ($parent, $level, $aDepUsers)
{ {
G::LoadClass( 'configuration' ); G::LoadClass( 'configuration' );
@@ -251,7 +245,7 @@ switch ($_POST['action']) {
while ($oDataset->next()) { while ($oDataset->next()) {
$aRow = $oDataset->getRow(); $aRow = $oDataset->getRow();
$managerName = $aRow['USR_USERNAME'] ? " - Department Manager: ".$aRow['USR_USERNAME'] : 'No Manager'; $managerName = $aRow['USR_USERNAME'] ? " - Department Manager: ".$aRow['USR_USERNAME'] : 'No Manager';
} }
} }
@@ -282,55 +276,43 @@ switch ($_POST['action']) {
echo '{success: true}'; echo '{success: true}';
break; break;
case 'assignedUsers': case 'assignedUsers':
$filter = isset( $_POST['textFilter'] ) ? $_POST['textFilter'] : '';
$dep_uid = $_REQUEST['dUID'];
$oDept = new Department();
$oDept->Load( $dep_uid );
$manager = $oDept->getDepManager();
$oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn( UsersPeer::USR_UID );
$oCriteria->addSelectColumn( UsersPeer::USR_USERNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_FIRSTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_LASTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_STATUS );
$oCriteria->add( UsersPeer::DEP_UID, '' );
$oCriteria->add( UsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL );
if ($filter != '') {
$oCriteria->add( $oCriteria->getNewCriterion( UsersPeer::USR_USERNAME, '%' . $filter . '%', Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( UsersPeer::USR_FIRSTNAME, '%' . $filter . '%', Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( UsersPeer::USR_LASTNAME, '%' . $filter . '%', Criteria::LIKE ) ) ) );
}
$oCriteria->add( UsersPeer::DEP_UID, $dep_uid );
$oDataset = UsersPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$aUsers = array ();
while ($oDataset->next()) {
$aUsers[] = $oDataset->getRow();
$index = sizeof( $aUsers ) - 1;
$aUsers[$index]['USR_SUPERVISOR'] = ($manager == $aUsers[$index]['USR_UID']) ? true : false;
}
echo '{users:' . G::json_encode( $aUsers ) . '}';
break;
case 'availableUsers': case 'availableUsers':
$filter = isset( $_POST['textFilter'] ) ? $_POST['textFilter'] : ''; $response = [];
$dep_uid = $_REQUEST['dUID'];
$oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn( UsersPeer::USR_UID );
$oCriteria->addSelectColumn( UsersPeer::USR_USERNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_FIRSTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_LASTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_STATUS );
$oCriteria->add( UsersPeer::DEP_UID, '' );
$oCriteria->add( UsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL );
if ($filter != '') { try {
$oCriteria->add( $oCriteria->getNewCriterion( UsersPeer::USR_USERNAME, '%' . $filter . '%', Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( UsersPeer::USR_FIRSTNAME, '%' . $filter . '%', Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( UsersPeer::USR_LASTNAME, '%' . $filter . '%', Criteria::LIKE ) ) ) ); $option = $_POST['option'];
$departmentUid = $_POST['departmentUid'];
$pageSize = $_POST['pageSize'];
$filter = $_POST['filter'];
$sortField = (isset($_POST['sort']) && $_POST['sort'] != 'USR_USERNAME')? $_POST['sort']: '';
$sortDir = (isset($_POST['dir']))? $_POST['dir']: 'ASC';
$start = (isset($_POST['start']))? $_POST['start']: 0;
$limit = (isset($_POST['limit']))? $_POST['limit']: $pageSize;
$department = new \ProcessMaker\BusinessModel\Department();
$result = $department->getUsers(
$departmentUid,
$option,
['filter' => $filter, 'filterOption' => ''],
$sortField,
$sortDir,
$start,
$limit
);
$response['status'] = 'OK';
$response['success'] = true;
$response['resultTotal'] = $result['total'];
$response['resultRoot'] = $result['data'];
} catch (Exception $e) {
$response['status'] = 'ERROR';
$response['message'] = $e->getMessage();
} }
$oDataset = UsersPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); echo G::json_encode($response);
$aUsers = array ();
while ($oDataset->next()) {
$aUsers[] = $oDataset->getRow();
}
echo '{users:' . G::json_encode( $aUsers ) . '}';
break; break;
case 'assignDepartmentToUserMultiple': case 'assignDepartmentToUserMultiple':
$DEP_UID = $_REQUEST['DEP_UID']; $DEP_UID = $_REQUEST['DEP_UID'];

View File

@@ -146,95 +146,6 @@ class Department
return $aDepts; return $aDepts;
} }
/**
* Get list for Assigned User
*
* @access public
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
* @copyright Colosa - Bolivia
*
* @return array
*/
public function getAssignedUser($dep_uid)
{
$dep_uid = Validator::depUid($dep_uid);
$oDept = new \Department();
$oDept->Load( $dep_uid );
$manager = $oDept->getDepManager();
$oCriteria = new \Criteria( 'workflow' );
$oCriteria->addSelectColumn( UsersPeer::USR_UID );
$oCriteria->addSelectColumn( UsersPeer::USR_USERNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_FIRSTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_LASTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_STATUS );
$oCriteria->add( UsersPeer::DEP_UID, '' );
$oCriteria->add( UsersPeer::USR_STATUS, 'CLOSED', \Criteria::NOT_EQUAL );
$oCriteria->add( UsersPeer::DEP_UID, $dep_uid );
$oDataset = UsersPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
$aUsers = array ();
while ($oDataset->next()) {
$dataTemp = $oDataset->getRow();
$aUsers[] = array_change_key_case($dataTemp, CASE_LOWER);
$index = sizeof( $aUsers ) - 1;
$aUsers[$index]['usr_supervisor'] = ($manager == $aUsers[$index]['usr_uid']) ? true : false;
}
return $aUsers;
}
/**
* Get list for Available User
*
* @access public
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
* @copyright Colosa - Bolivia
*
* @return array
*/
public function getAvailableUser($dep_uid, $start = 0, $limit = 0, $search = '')
{
$dep_uid = Validator::depUid($dep_uid);
$start = (int)$start;
$start = abs($start);
if ($start != 0) {
$start+1;
}
$limit = (int)$limit;
$limit = abs($limit);
if ($limit == 0) {
$limit = 25;
} else {
$limit = (int)$limit;
}
$oCriteria = new \Criteria( 'workflow' );
$oCriteria->addSelectColumn( UsersPeer::USR_UID );
$oCriteria->addSelectColumn( UsersPeer::USR_USERNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_FIRSTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_LASTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_STATUS );
$oCriteria->add( UsersPeer::DEP_UID, '' );
$oCriteria->add( UsersPeer::USR_STATUS, 'CLOSED', \Criteria::NOT_EQUAL );
$oCriteria->setLimit( $limit );
$oCriteria->setOffset( $start );
if ($search != '') {
$oCriteria->add( $oCriteria->getNewCriterion( UsersPeer::USR_USERNAME, '%' . $search . '%', \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( UsersPeer::USR_FIRSTNAME, '%' . $search . '%', \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( UsersPeer::USR_LASTNAME, '%' . $search . '%', \Criteria::LIKE ) ) ) );
}
$oDataset = UsersPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
$aUsers = array ();
while ($oDataset->next()) {
$dataTemp = $oDataset->getRow();
$aUsers[] = array_change_key_case($dataTemp, CASE_LOWER);
}
return $aUsers;
}
/** /**
* Assign User to Department * Assign User to Department
* *
@@ -323,6 +234,217 @@ class Department
} }
} }
/**
* Get custom record
*
* @param array $record Record
*
* @return array Return an array with custom record
*/
private function __getUserCustomRecordFromRecord(array $record)
{
try {
$recordc = [
'usr_uid' => $record['USR_UID'],
'usr_username' => $record['USR_USERNAME'],
'usr_firstname' => $record['USR_FIRSTNAME'],
'usr_lastname' => $record['USR_LASTNAME'],
'usr_status' => $record['USR_STATUS']
];
if (isset($record['USR_SUPERVISOR'])) {
$recordc['usr_supervisor'] = $record['USR_SUPERVISOR'];
}
return $recordc;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get all Users of a Department (Assigned/Available)
*
* @param string $departmentUid Unique id of Department
* @param string $option Option (ASSIGNED, AVAILABLE)
* @param array $arrayFilterData Data of the filters
* @param string $sortField Field name to sort
* @param string $sortDir Direction of sorting (ASC, DESC)
* @param int $start Start
* @param int $limit Limit
* @param bool $flagRecord Flag that set the "getting" of record
* @param bool $throwException Flag to throw the exception (This only if the parameters are invalid)
* (TRUE: throw the exception; FALSE: returns FALSE)
*
* @return array Return an array with all Users of a Department, ThrowTheException/FALSE otherwise
*/
public function getUsers(
$departmentUid,
$option,
array $arrayFilterData = null,
$sortField = null,
$sortDir = null,
$start = null,
$limit = null,
$flagRecord = true,
$throwException = true
) {
try {
$arrayUser = array();
$numRecTotal = 0;
//Verify data and Set variables
$flagFilter = !is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData['filter']);
$result = \ProcessMaker\BusinessModel\Validator::validatePagerDataByPagerDefinition(
['$start' => $start, '$limit' => $limit],
['$start' => '$start', '$limit' => '$limit']
);
if ($result !== true) {
if ($throwException) {
throw new \Exception($result);
} else {
return false;
}
}
$arrayDepartmentData = $this->getDepartmentRecordByPk(
$departmentUid, ['$departmentUid' => '$departmentUid'], $throwException
);
if ($arrayDepartmentData === false) {
return false;
}
//Set variables
$filterName = 'filter';
if ($flagFilter) {
$arrayAux = [
'' => 'filter',
'LEFT' => 'lfilter',
'RIGHT' => 'rfilter'
];
$filterName = $arrayAux[
(isset($arrayFilterData['filterOption']))? $arrayFilterData['filterOption'] : ''
];
}
//Get data
if (!is_null($limit) && (string)($limit) == '0') {
return [
'total' => $numRecTotal,
'start' => (int)((!is_null($start))? $start : 0),
'limit' => (int)((!is_null($limit))? $limit : 0),
$filterName => ($flagFilter)? $arrayFilterData['filter'] : '',
'data' => $arrayUser
];
}
//Query
$criteria = new \Criteria('workflow');
$criteria->addSelectColumn(\UsersPeer::USR_UID);
$criteria->addSelectColumn(\UsersPeer::USR_USERNAME);
$criteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
$criteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
$criteria->addSelectColumn(\UsersPeer::USR_STATUS);
$criteria->add(\UsersPeer::USR_STATUS, 'CLOSED', \Criteria::NOT_EQUAL);
switch ($option) {
case 'ASSIGNED':
$criteria->add(\UsersPeer::DEP_UID, $departmentUid, \Criteria::EQUAL);
break;
case 'AVAILABLE':
$criteria->add(\UsersPeer::DEP_UID, '', \Criteria::EQUAL);
break;
}
if ($flagFilter && trim($arrayFilterData['filter']) != '') {
$arraySearch = [
'' => '%' . $arrayFilterData['filter'] . '%',
'LEFT' => $arrayFilterData['filter'] . '%',
'RIGHT' => '%' . $arrayFilterData['filter']
];
$search = $arraySearch[
(isset($arrayFilterData['filterOption']))? $arrayFilterData['filterOption'] : ''
];
$criteria->add(
$criteria->getNewCriterion(\UsersPeer::USR_USERNAME, $search, \Criteria::LIKE)->addOr(
$criteria->getNewCriterion(\UsersPeer::USR_FIRSTNAME, $search, \Criteria::LIKE)->addOr(
$criteria->getNewCriterion(\UsersPeer::USR_LASTNAME, $search, \Criteria::LIKE)))
);
}
//Number records total
$numRecTotal = \UsersPeer::doCount($criteria);
//Query
$conf = new \Configurations();
$sortFieldDefault = \UsersPeer::TABLE_NAME . '.' . $conf->userNameFormatGetFirstFieldByUsersTable();
if (!is_null($sortField) && trim($sortField) != '') {
$sortField = strtoupper($sortField);
if (in_array(\UsersPeer::TABLE_NAME . '.' . $sortField, $criteria->getSelectColumns())) {
$sortField = \UsersPeer::TABLE_NAME . '.' . $sortField;
} else {
$sortField = $sortFieldDefault;
}
} else {
$sortField = $sortFieldDefault;
}
if (!is_null($sortDir) && trim($sortDir) != '' && strtoupper($sortDir) == 'DESC') {
$criteria->addDescendingOrderByColumn($sortField);
} else {
$criteria->addAscendingOrderByColumn($sortField);
}
if (!is_null($start)) {
$criteria->setOffset((int)($start));
}
if (!is_null($limit)) {
$criteria->setLimit((int)($limit));
}
$rsCriteria = \UsersPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$record = $rsCriteria->getRow();
switch ($option) {
case 'ASSIGNED':
$record['USR_SUPERVISOR'] = $record['USR_UID'] == $arrayDepartmentData['DEP_MANAGER'];
break;
case 'AVAILABLE':
break;
}
$arrayUser[] = ($flagRecord)? $record : $this->__getUserCustomRecordFromRecord($record);
}
//Return
return [
'total' => $numRecTotal,
'start' => (int)((!is_null($start))? $start : 0),
'limit' => (int)((!is_null($limit))? $limit : 0),
$filterName => ($flagFilter)? $arrayFilterData['filter'] : '',
'data' => $arrayUser
];
} catch (\Exception $e) {
throw $e;
}
}
/** /**
* Put Set Manager User * Put Set Manager User
* *

View File

@@ -64,8 +64,12 @@ class Department extends Api
{ {
try { try {
$oDepartment = new \ProcessMaker\BusinessModel\Department(); $oDepartment = new \ProcessMaker\BusinessModel\Department();
$response = $oDepartment->getAssignedUser($dep_uid);
return $response; $response = $oDepartment->getUsers(
$dep_uid, 'ASSIGNED', null, null, null, null, null, false
);
return $response['data'];
} catch (\Exception $e) { } catch (\Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
} }
@@ -82,12 +86,16 @@ class Department extends Api
* @return array * @return array
* *
*/ */
public function doGetAvailableUser($dep_uid, $start = 0, $limit = 0, $search = '') public function doGetAvailableUser($dep_uid, $start = null, $limit = null, $search = null)
{ {
try { try {
$oDepartment = new \ProcessMaker\BusinessModel\Department(); $oDepartment = new \ProcessMaker\BusinessModel\Department();
$response = $oDepartment->getAvailableUser($dep_uid, $start, $limit, $search);
return $response; $response = $oDepartment->getUsers(
$dep_uid, 'AVAILABLE', ['filter' => $search, 'filterOption' => ''], null, null, $start, $limit, false
);
return $response['data'];
} catch (\Exception $e) { } catch (\Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
} }

View File

@@ -20,8 +20,6 @@ new Ext.KeyMap(document, {
} }
}); });
var storeP;
var storeA;
var cmodelP; var cmodelP;
var smodelA; var smodelA;
var smodelP; var smodelP;
@@ -45,7 +43,16 @@ var sw_func_auth;
var sw_form_changed; var sw_form_changed;
var sw_user_summary; var sw_user_summary;
var pagingUser;
var pagingAvailableUser;
Ext.onReady(function(){ Ext.onReady(function(){
var loadMaskGridLoading = new Ext.LoadMask(Ext.getBody(), {msg: _("ID_LOADING_GRID")});
//Variables
var pageSizeU = parseInt(CONFIG.pageSize);
var pageSizeA = parseInt(CONFIG.pageSize);
sw_func_groups = false; sw_func_groups = false;
//sw_func_reassign = false; //sw_func_reassign = false;
sw_func_auth = false; sw_func_auth = false;
@@ -63,7 +70,7 @@ Ext.onReady(function(){
handler: CancelEditMembersAction handler: CancelEditMembersAction
//hidden: true //hidden: true
}); });
supervisorButton = new Ext.Action({ supervisorButton = new Ext.Action({
text: _('ID_SET_MANAGER'), text: _('ID_SET_MANAGER'),
iconCls: 'button_menu_ext ss_sprite ss_user_edit', iconCls: 'button_menu_ext ss_sprite ss_user_edit',
@@ -83,42 +90,164 @@ Ext.onReady(function(){
iconCls: 'button_menu_ext ss_sprite ss_arrow_redo', iconCls: 'button_menu_ext ss_sprite ss_arrow_redo',
handler: BackToUsers handler: BackToUsers
}); });
contextMenu = new Ext.menu.Menu({ contextMenu = new Ext.menu.Menu({
items: [supervisorButton] items: [supervisorButton]
}); });
storeP = new Ext.data.GroupingStore( { //Stores
proxy : new Ext.data.HttpProxy({ var storePageSize = new Ext.data.SimpleStore({
url: 'departments_Ajax?action=assignedUsers&dUID=' + DEPARTMENT.DEP_UID fields: ["size"],
}), data: [["20"], ["30"], ["40"], ["50"], ["100"]],
reader : new Ext.data.JsonReader( { autoLoad: true
root: 'users',
fields : [
{name : 'USR_UID'},
{name : 'USR_USERNAME'},
{name : 'USR_FIRSTNAME'},
{name : 'USR_LASTNAME'},
{name : 'USR_SUPERVISOR'},
{name : 'USR_STATUS'}
]
})
}); });
storeA = new Ext.data.GroupingStore( { var storeUser = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({ proxy: new Ext.data.HttpProxy({
url: 'departments_Ajax?action=availableUsers&dUID=' + DEPARTMENT.DEP_UID url: "departments_Ajax",
}), method: "POST"
reader : new Ext.data.JsonReader( { }),
root: 'users',
fields : [ reader: new Ext.data.JsonReader({
{name : 'USR_UID'}, root: "resultRoot",
{name : 'USR_USERNAME'}, totalProperty: "resultTotal",
{name : 'USR_FIRSTNAME'}, fields: [
{name : 'USR_LASTNAME'}, {name: "USR_UID"},
{name : 'USR_STATUS'} {name: "USR_USERNAME"},
] {name: "USR_FIRSTNAME"},
}) {name: "USR_LASTNAME"},
{name: "USR_SUPERVISOR"},
{name: "USR_STATUS"}
]
}),
remoteSort: true,
listeners: {
beforeload: function (store)
{
loadMaskGridLoading.show();
this.baseParams = {
"option": "ASSIGNED",
"departmentUid": DEPARTMENT.DEP_UID,
"pageSize": pageSizeU,
"filter": searchTextP.getValue(),
"action": "assignedUsers"
};
},
load: function (store, record, opt)
{
loadMaskGridLoading.hide();
}
}
});
var storeAvailableUser = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: "departments_Ajax",
method: "POST"
}),
reader: new Ext.data.JsonReader({
root: "resultRoot",
totalProperty: "resultTotal",
fields: [
{name: "USR_UID"},
{name: "USR_USERNAME"},
{name: "USR_FIRSTNAME"},
{name: "USR_LASTNAME"},
{name: "USR_STATUS"}
]
}),
remoteSort: true,
listeners: {
beforeload: function (store)
{
loadMaskGridLoading.show();
this.baseParams = {
"option": "AVAILABLE",
"departmentUid": DEPARTMENT.DEP_UID,
"pageSize": pageSizeA,
"filter": searchTextA.getValue(),
"action": "availableUsers"
};
},
load: function (store, record, opt)
{
loadMaskGridLoading.hide();
}
}
});
//Components
var cboPageSizeUser = new Ext.form.ComboBox({
id: "cboPageSizeUser",
mode: "local",
triggerAction: "all",
store: storePageSize,
valueField: "size",
displayField: "size",
width: 50,
editable: false,
listeners: {
select: function (combo, record, index)
{
pageSizeU = parseInt(record.data["size"]);
pagingUser.pageSize = pageSizeU;
pagingUser.moveFirst();
}
}
});
pagingUser = new Ext.PagingToolbar({
id: "pagingUser",
pageSize: pageSizeU,
store: storeUser,
displayInfo: true,
displayMsg: _("ID_GRID_PAGE_DISPLAYING_ITEMS"),
emptyMsg: _("ID_NO_RECORDS_FOUND"),
items: ["-", _("ID_PAGE_SIZE") + "&nbsp;", cboPageSizeUser]
});
var cboPageSizeAvailableUser = new Ext.form.ComboBox({
id: "cboPageSizeAvailableUser",
mode: "local",
triggerAction: "all",
store: storePageSize,
valueField: "size",
displayField: "size",
width: 50,
editable: false,
listeners: {
select: function (combo, record, index)
{
pageSizeA = parseInt(record.data["size"]);
pagingAvailableUser.pageSize = pageSizeA;
pagingAvailableUser.moveFirst();
}
}
});
pagingAvailableUser = new Ext.PagingToolbar({
id: "pagingAvailableUser",
pageSize: pageSizeA,
store: storeAvailableUser,
displayInfo: true,
displayMsg: _("ID_GRID_PAGE_DISPLAYING_ITEMS"),
emptyMsg: _("ID_NO_RECORDS_FOUND"),
items: ["-", _("ID_PAGE_SIZE") + "&nbsp;", cboPageSizeAvailableUser]
}); });
cmodelP = new Ext.grid.ColumnModel({ cmodelP = new Ext.grid.ColumnModel({
@@ -214,7 +343,7 @@ Ext.onReady(function(){
title : _('ID_AVAILABLE_USERS'), title : _('ID_AVAILABLE_USERS'),
region : 'center', region : 'center',
ddGroup : 'assignedGridDDGroup', ddGroup : 'assignedGridDDGroup',
store : storeA, store: storeAvailableUser,
cm : cmodelP, cm : cmodelP,
sm : smodelA, sm : smodelA,
enableDragDrop : true, enableDragDrop : true,
@@ -232,7 +361,7 @@ Ext.onReady(function(){
columnLines : false, columnLines : false,
viewConfig : {forceFit:true}, viewConfig : {forceFit:true},
tbar: [cancelEditMembersButton,{xtype: 'tbfill'},'-',searchTextA,clearTextButtonA], tbar: [cancelEditMembersButton,{xtype: 'tbfill'},'-',searchTextA,clearTextButtonA],
//bbar: [{xtype: 'tbfill'}, cancelEditMembersButton], bbar: pagingAvailableUser,
listeners: {rowdblclick: AssignGroupsAction}, listeners: {rowdblclick: AssignGroupsAction},
hidden: true hidden: true
}); });
@@ -241,7 +370,7 @@ Ext.onReady(function(){
layout : 'fit', layout : 'fit',
title : _('ID_ASSIGNED_USERS'), title : _('ID_ASSIGNED_USERS'),
ddGroup : 'availableGridDDGroup', ddGroup : 'availableGridDDGroup',
store : storeP, store: storeUser,
cm : cmodelP, cm : cmodelP,
sm : smodelP, sm : smodelP,
enableDragDrop : true, enableDragDrop : true,
@@ -259,21 +388,21 @@ Ext.onReady(function(){
columnLines : false, columnLines : false,
viewConfig : {forceFit:true}, viewConfig : {forceFit:true},
tbar: [editMembersButton,'-',supervisorButton, NoSupervisorButton,{xtype: 'tbfill'},'-',searchTextP,clearTextButtonP], tbar: [editMembersButton,'-',supervisorButton, NoSupervisorButton,{xtype: 'tbfill'},'-',searchTextP,clearTextButtonP],
//bbar: [{xtype: 'tbfill'},editMembersButton], bbar: pagingUser,
listeners: {rowdblclick: function(){ listeners: {rowdblclick: function(){
(availableGrid.hidden)? DoNothing() : RemoveGroupsAction(); (availableGrid.hidden)? DoNothing() : RemoveGroupsAction();
} }
} }
}); });
assignedGrid.on('rowcontextmenu', assignedGrid.on('rowcontextmenu',
function (grid, rowIndex, evt) { function (grid, rowIndex, evt) {
var sm = grid.getSelectionModel(); var sm = grid.getSelectionModel();
sm.selectRow(rowIndex, sm.isSelected(rowIndex)); sm.selectRow(rowIndex, sm.isSelected(rowIndex));
}, },
this this
); );
assignedGrid.on('contextmenu', function(evt){evt.preventDefault();}, this); assignedGrid.on('contextmenu', function(evt){evt.preventDefault();}, this);
assignedGrid.addListener('rowcontextmenu',onMessageContextMenu, this); assignedGrid.addListener('rowcontextmenu',onMessageContextMenu, this);
@@ -315,12 +444,15 @@ Ext.onReady(function(){
tbar: ['<b>'+_('ID_DEPARTMENT') + ' : ' + DEPARTMENT.DEP_TITLE + '</b>',{xtype: 'tbfill'},backButton] tbar: ['<b>'+_('ID_DEPARTMENT') + ' : ' + DEPARTMENT.DEP_TITLE + '</b>',{xtype: 'tbfill'},backButton]
}); });
cboPageSizeUser.setValue(pageSizeU);
cboPageSizeAvailableUser.setValue(pageSizeA);
//LOAD ALL PANELS //LOAD ALL PANELS
viewport = new Ext.Viewport({ viewport = new Ext.Viewport({
layout: 'border', layout: 'border',
items: [northPanel, UsersPanel] items: [northPanel, UsersPanel]
}); });
RefreshUsers(); RefreshUsers();
DDLoadUsers(); DDLoadUsers();
@@ -477,12 +609,12 @@ RemoveAllGroupsAction = function(){
//Function DoSearch Available //Function DoSearch Available
DoSearchA = function(){ DoSearchA = function(){
availableGrid.store.load({params: {textFilter: searchTextA.getValue()}}); pagingAvailableUser.moveFirst();
}; };
//Function DoSearch Assigned //Function DoSearch Assigned
DoSearchP = function(){ DoSearchP = function(){
assignedGrid.store.load({params: {textFilter: searchTextP.getValue()}}); pagingUser.moveFirst();
}; };
//Load Grid By Default Available Members //Load Grid By Default Available Members
@@ -516,11 +648,11 @@ CancelEditMembersAction = function(){
if (rowsSelected.length == 1){ if (rowsSelected.length == 1){
supervisorButton.enable(); supervisorButton.enable();
NoSupervisorButton.enable(); NoSupervisorButton.enable();
} }
else{ else{
supervisorButton.disable(); supervisorButton.disable();
NoSupervisorButton.disable(); NoSupervisorButton.disable();
} }
UsersPanel.doLayout(); UsersPanel.doLayout();
}; };