Files
luos/workflow/engine/templates/cases/casesList.js
mcuiza f4be06d7f2 HOR-1101: Batch reassignment
.

validacion USR_UID

correccion observacion

soporte multiple plugins
2016-06-17 12:15:29 -04:00

2601 lines
88 KiB
JavaScript
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

new Ext.KeyMap(document, {
key: Ext.EventObject.F5,
fn: function(keycode, e) {
if (! e.ctrlKey) {
if (Ext.isIE) {
// IE6 doesn't allow cancellation of the F5 key, so trick it into
// thinking some other key was pressed (backspace in this case)
e.browserEvent.keyCode = 8;
}
e.stopEvent();
//document.location = document.location;
storeCases.reload();
}
else
Ext.Msg.alert(_('ID_REFRESH_LABEL'), _('ID_REFRESH_MESSAGE'));
}
});
/*** global variables **/
var storeCases;
var storeReassignCases;
var grid;
var textJump;
var ids = '';
var winReassignInCasesList;
var casesNewTab;
function formatAMPM(date, initVal, calendarDate) {
var currentDate = new Date();
var currentDay = currentDate.getDate();
var currentMonth = currentDate.getMonth()+1;
if (currentDay < 10) {
currentDay = '0' + currentDay;
}
if (currentMonth < 10) {
currentMonth = '0' + currentMonth;
}
currentDate = currentMonth + '-' + currentDay;
if (currentDate == calendarDate) {
var hours = date.getHours();
var minutes = (initVal === true)? ((date.getMinutes()<15)? 15: ((date.getMinutes()<30)? 30: ((date.getMinutes()<45)? 45: 45))): date.getMinutes();
var ampm = hours >= 12 ? 'PM' : 'AM';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0' + minutes : minutes;
var strTime = hours + ':' + minutes + ' ' + ampm;
} else {
var strTime = '12:00 AM';
}
return strTime;
}
Ext.Ajax.timeout = 4 * 60 * 1000;
var caseSummary = function() {
var rowModel = grid.getSelectionModel().getSelected();
if (rowModel) {
openSummaryWindow(rowModel.data.APP_UID, rowModel.data.DEL_INDEX, action);
}
else {
msgBox(_('ID_INFORMATION'), _('ID_SELECT_ONE_AT_LEAST'));
}
};
function caseNotes(){
var rowModel = grid.getSelectionModel().getSelected();
if(rowModel){
var appUid = rowModel.data.APP_UID;
var delIndex = rowModel.data.DEL_INDEX;
var caseTitle = (rowModel.data.APP_TITLE) ? rowModel.data.APP_TITLE : rowModel.data.APP_UID;
var task = (typeof(rowModel.json.TAS_UID) != 'undefined') ? rowModel.json.TAS_UID : '';
var proid = (typeof(rowModel.json.PRO_UID) != 'undefined') ? rowModel.json.PRO_UID : '';
openCaseNotesWindow(appUid, delIndex, true, caseTitle, proid, task);
}else{
msgBox(_('ID_INFORMATION'), _('ID_SELECT_ONE_AT_LEAST') );
}
}
function openCase(){
var rowModel = grid.getSelectionModel().getSelected(),
nameTab;
if(rowModel){
var appUid = rowModel.data.APP_UID;
var delIndex = rowModel.data.DEL_INDEX;
var caseTitle = (rowModel.data.APP_TITLE) ? rowModel.data.APP_TITLE : rowModel.data.APP_UID;
if(!isIE) {
Ext.Msg.show({
msg: _('ID_OPEN_CASE') + ' ' + caseTitle,
width:300,
wait:true,
waitConfig: {interval:200}
});
}
params = '';
switch(action){
case 'to_revise':
params += 'APP_UID=' + appUid;
params += '&DEL_INDEX=' + delIndex;
params += '&to_revise=true';
requestFile = 'open';
break;
case 'sent': // = participated
params += 'APP_UID=' + appUid;
params += '&DEL_INDEX=' + delIndex;
//requestFile = '../cases/cases_Open';
requestFile = 'open';
break;
case 'todo':
case 'draft':
case 'paused':
case 'unassigned':
default:
params += 'APP_UID=' + appUid;
params += '&DEL_INDEX=' + delIndex;
//requestFile = '../cases/cases_Open';
requestFile = 'open';
break;
}
try {
try {
parent._CASE_TITLE = caseTitle;
}
catch (e) {
// Nothing to do
}
}
catch (e) {
// Nothing to do
}
params += '&action=' + action;
if(isIE) {
if(casesNewTab) {
casesNewTab.close();
}
nameTab = PM.Sessions.getCookie('PM-TabPrimary') + '_openCase';
casesNewTab = window.open(requestFile + '?' + params, nameTab);
} else {
redirect(requestFile + '?' + params);
}
} else
msgBox(_('ID_INFORMATION'), _('ID_SELECT_ONE_AT_LEAST'));
}
function jumpToCase(appNumber){
// Code add by Brayan Pereyra - cochalo
// This ajax validate the appNumber exists
Ext.MessageBox.show({ msg: _('ID_PROCESSING'), wait:true,waitConfig: {interval:200} });
Ext.Ajax.request({
url: 'cases_Ajax',
success: function(response) {
var res = Ext.decode(response.responseText);
if (res.exists === true) {
params = 'APP_NUMBER=' + appNumber;
params += '&action=jump';
requestFile = '../cases/open';
redirect(requestFile + '?' + params);
} else {
Ext.MessageBox.hide();
var message = new Array();
message['CASE_NUMBER'] = appNumber;
msgBox(_('ID_INPUT_ERROR'), _('ID_CASE_DOES_NOT_EXIST_JS', appNumber), 'error');
}
},
params: {action:'previusJump', appNumber: appNumber}
});
}
function deleteCase() {
var rows = grid.getSelectionModel().getSelections();
Ext.Ajax.request({
url : 'casesList_Ajax' ,
params : {actionAjax : 'verifySession'},
success: function ( result, request ) {
var data = Ext.util.JSON.decode(result.responseText);
if( data.lostSession ) {
Ext.Msg.show({
title: _('ID_ERROR'),
msg: data.message,
animEl: 'elId',
icon: Ext.MessageBox.ERROR,
buttons: Ext.MessageBox.OK,
fn : function(btn) {
try
{
prnt = parent.parent;
top.location = top.location;
}
catch (err)
{
parent.location = parent.location;
}
}
});
} else {
if( rows.length > 0 ) {
ids = Array();
for(i=0; i<rows.length; i++)
ids[i] = rows[i].get('APP_UID');
APP_UIDS = ids.join(',');
Ext.Msg.confirm(
_('ID_CONFIRM'),
(rows.length == 1) ? _('ID_MSG_CONFIRM_DELETE_CASE') : _('ID_MSG_CONFIRM_DELETE_CASES'),
function(btn, text){
if ( btn == 'yes' ) {
Ext.MessageBox.show({ msg: _('ID_DELETING_ELEMENTS'), wait:true,waitConfig: {interval:200} });
Ext.Ajax.request({
url: 'cases_Delete',
success: function(response) {
try {
parent.updateCasesView(true);
}
catch (e) {
// Nothing to do
}
Ext.MessageBox.hide();
try {
parent.updateCasesTree();
}
catch (e) {
// Nothing to do
}
},
params: {APP_UIDS:APP_UIDS}
});
}
}
);
} else {
Ext.Msg.show({
title:'',
msg: _('ID_NO_SELECTION_WARNING'),
buttons: Ext.Msg.INFO,
fn: function(){},
animEl: 'elId',
icon: Ext.MessageBox.INFO,
buttons: Ext.MessageBox.OK
});
}
}
},
failure: function ( result, request) {
if (typeof(result.responseText) != 'undefined') {
Ext.MessageBox.alert( _('ID_FAILED'), result.responseText);
}
}
});
}
function pauseCase(date){
rowModel = grid.getSelectionModel().getSelected();
if(rowModel) {
unpauseDate = date.format('Y-m-d');
var msgPause = new Ext.Window({
//layout:'fit',
width:500,
plain: true,
modal: true,
title: _('ID_CONFIRM'),
items: [
new Ext.FormPanel({
labelAlign: 'top',
labelWidth: 75,
border: false,
frame: true,
items: [
{
html: '<div align="center" style="font: 14px tahoma,arial,helvetica,sans-serif">' + _('ID_PAUSE_CASE_TO_DATE') +' '+date.format('M j, Y')+'? </div> <br/>'
},
new Ext.form.TimeField({
id: 'unpauseTime',
fieldLabel: _('ID_UNPAUSE_TIME'),
name: 'unpauseTime',
value: formatAMPM(new Date(), false, date.format('m-d')),
minValue: formatAMPM(new Date(), true, date.format('m-d')),
format: 'h:i A'
}),
{
xtype: 'textarea',
id: 'noteReason',
fieldLabel: _('ID_CASE_PAUSE_REASON'),
name: 'noteReason',
width: 450,
height: 50
},
{
id: 'notifyReason',
xtype:'checkbox',
name: 'notifyReason',
hideLabel: true,
boxLabel: _('ID_NOTIFY_USERS_CASE')
}
],
buttonAlign: 'center',
buttons: [{
text: _('ID_OK'),
handler: function(){
if (Ext.getCmp('noteReason').getValue() != '') {
var noteReasonTxt = _('ID_CASE_PAUSE_LABEL_NOTE') + ' ' + Ext.getCmp('noteReason').getValue();
} else {
var noteReasonTxt = '';
}
var notifyReasonVal = Ext.getCmp('notifyReason').getValue() == true ? 1 : 0;
Ext.MessageBox.show({ msg: _('ID_PROCESSING'), wait:true,waitConfig: {interval:200} });
Ext.Ajax.request({
url: 'cases_Ajax',
success: function(response) {
try {
parent.updateCasesView(true);
}
catch (e) {
// Nothing to do
}
Ext.MessageBox.hide();
try {
parent.updateCasesTree();
}
catch (e) {
// Nothing to do
}
Ext.MessageBox.hide();
msgPause.close();
},
params: {
action: 'pauseCase',
unpausedate: unpauseDate,
unpauseTime: Ext.getCmp('unpauseTime').getValue(),
APP_UID: rowModel.data.APP_UID,
DEL_INDEX: rowModel.data.DEL_INDEX,
NOTE_REASON: noteReasonTxt,
NOTIFY_PAUSE: notifyReasonVal
}
});
}
},{
text: _('ID_CANCEL'), //COCHATRA
handler: function(){
msgPause.close();
}
}]
})
]
});
msgPause.show(this);
} else {
Ext.Msg.show({
title:'',
msg: _('ID_NO_SELECTION_WARNING'),
buttons: Ext.Msg.INFO,
fn: function(){},
animEl: 'elId',
icon: Ext.MessageBox.INFO,
buttons: Ext.MessageBox.OK
});
}
}
function cancelCase(){
var rows = grid.getSelectionModel().getSelections();
if( rows.length > 0 ) {
app_uid = Array();
del_index = Array();
for(i=0; i<rows.length; i++){
app_uid[i] = rows[i].get('APP_UID');
del_index[i] = rows[i].get('DEL_INDEX');
}
APP_UIDS = app_uid.join(',');
DEL_INDEXES = del_index.join(',');
Ext.Msg.confirm(
_('ID_CONFIRM'),
(rows.length == 1) ? _('ID_MSG_CONFIRM_CANCEL_CASE') : _('ID_MSG_CONFIRM_CANCEL_CASES'),
function(btn, text){
if ( btn == 'yes' ) {
Ext.MessageBox.show({ msg: _('ID_PROCESSING'), wait:true,waitConfig: {interval:200} });
Ext.Ajax.request({
url: 'cases_Ajax',
success: function(response) {
try {
parent.updateCasesView(true);
}
catch (e) {
// Nothing to do
}
Ext.MessageBox.hide();
try {
parent.updateCasesTree();
}
catch (e) {
// Nothing to do
}
},
params: {action:'cancelCase', APP_UID:APP_UIDS, DEL_INDEX:DEL_INDEXES}
});
}
}
);
} else {
Ext.Msg.show({
title:'',
msg: _('ID_NO_SELECTION_WARNING'),
buttons: Ext.Msg.INFO,
fn: function(){},
animEl: 'elId',
icon: Ext.MessageBox.INFO,
buttons: Ext.MessageBox.OK
});
}
}
function callbackUnpauseCase (btn, text) {
if ( btn == 'yes' ) {
Ext.MessageBox.show({ msg: _('ID_PROCESSING'), wait:true,waitConfig: {interval:200} });
Ext.Ajax.request({
url: 'cases_Ajax',
success: function(response) {
try {
parent.updateCasesView(true);
}
catch (e) {
// Nothing to do
}
Ext.MessageBox.hide();
try {
parent.updateCasesTree();
}
catch (e) {
// Nothing to do
}
},
params: {action:'unpauseCase', sApplicationUID: caseIdToUnpause, iIndex: caseIndexToUnpause}
});
}
}
function unpauseCase() {
rowModel = grid.getSelectionModel().getSelected();
caseIdToUnpause = rowModel.data.APP_UID;
caseIndexToUnpause = rowModel.data.DEL_INDEX;
Ext.Msg.confirm( _('ID_CONFIRM'), _('ID_CONFIRM_UNPAUSE_CASE') , function (btn, text) {
if ( btn == 'yes' ) {
Ext.MessageBox.show({ msg: _('ID_PROCESSING'), wait:true,waitConfig: {interval:200} });
Ext.Ajax.request({
url: 'cases_Ajax',
success: function(response) {
try {
parent.updateCasesView(true);
}
catch (e) {
// Nothing to do
}
Ext.MessageBox.hide();
try {
parent.updateCasesTree();
}
catch (e) {
// Nothing to do
}
},
params: {action:'unpauseCase', sApplicationUID: caseIdToUnpause, iIndex: caseIndexToUnpause}
});
}
});
}
function redirect(href){
window.location.href = href;
}
Ext.onReady ( function() {
setExtStateManagerSetProvider('casesGrid', action);
var ids = '';
var filterProcess = '';
var filterCategory = '';
var filterUser = '';
var caseIdToDelete = '';
var caseIdToUnpause = '';
var caseIndexToUnpause = '';
try {
parent._action = action;
}
catch (e) {
// Nothing to do
}
var columnRenderer = function(data, metadata, record, rowIndex,columnIndex, store) {
var new_text = metadata.style.split(';');
var style = '';
if ( !record.data['DEL_INIT_DATE'] ){
style = style + "font-weight: bold; ";
}
for (var i = 0; i < new_text.length -1 ; i++) {
var chain = new_text[i] +";";
if (chain.indexOf('width') == -1) {
style = style + chain;
}
}
data = Ext.util.Format.htmlEncode(data);
metadata.attr = 'ext:qtip="' + data + '" style="'+ style +' white-space: normal; "';
return data;
};
function openLink(value, p, r){
return String.format("<a class='button_pm' href='../cases/cases_Open?APP_UID={0}&DEL_INDEX={1}&content=inner'>" + _('ID_VIEW') + "</a>", r.data['APP_UID'], r.data['DEL_INDEX'], r.data['APP_TITLE']);
}
function deleteLink(value, p, r){
return String.format("<a class='button_pm ss_sprite ss_bullet_red' href='#' onclick='deleteCase(\"{0}\")'>" + _('ID_DELETE') + "</a>", r.data['APP_UID'] );
}
function viewLink(value, p, r){
return String.format("<a href='../cases/cases_Open?APP_UID={0}&DEL_INDEX={1}&content=inner'>" + _('ID_VIEW') + "</a>", r.data['APP_UID'], r.data['DEL_INDEX'], r.data['APP_TITLE']);
}
function unpauseLink(value, p, r){
return String.format("<a href='#' onclick='unpauseCaseFunction(\"{0}\",\"{1}\")'>" + _('ID_UNPAUSE') + "</a>", r.data['APP_UID'], r.data['DEL_INDEX'] );
}
function convertDate ( value ) {
myDate = new Date( 1900,0,1,0,0,0);
try{
if(!Ext.isDate( value )){
var myArray = value.split(' ');
var myArrayDate = myArray[0].split('-');
if ( myArray.length > 1 )
var myArrayHour = myArray[1].split(':');
else
var myArrayHour = new Array('0','0','0');
var myDate = new Date( myArrayDate[0], myArrayDate[1]-1, myArrayDate[2], myArrayHour[0], myArrayHour[1], myArrayHour[2] );
}
}
catch(e){};
return myDate;
}
function showDate (value,p,r) {
var myDate = convertDate( value );
return String.format("{0}", myDate.dateFormat( FORMATS.casesListDateFormat ));
}
function dueDate(value, p, r){
if (value) {
var myDate = convertDate( value );
var myColor = (myDate < new Date()) ? " color:red;" : 'color:green;';
return String.format("<span style='{1}'>{0}</span>", myDate.dateFormat(FORMATS.casesListDateFormat), myColor );
}
else {
return '';
}
}
var renderSummary = function (val, p, r) {
var summaryIcon = '<img src="/images/ext/default/s.gif" class="x-tree-node-icon ss_layout_header" unselectable="off" id="extdd-17" ';
summaryIcon += 'onclick="openSummaryWindow(' + "'" + r.data['APP_UID'] + "'" + ', ' + r.data['DEL_INDEX'] + ', action)" title="' + _('ID_SUMMARY') + '" />';
return summaryIcon;
};
function renderNote(val,p,r) {
var pro = r.json.PRO_UID;
var tas = r.json.TAS_UID;
var appUid = r.data.APP_UID;
var delIndex = r.data.DEL_INDEX;
var title = Ext.util.Format.htmlEncode(r.data.APP_TITLE);
return "<img src=\"/images/ext/default/s.gif\" class=\"x-tree-node-icon ICON_CASES_NOTES\" unselectable=\"off\" id=\"extdd-17\" onClick=\"openCaseNotesWindow(\'" + appUid + "\', " + delIndex + ", true, \'" + title + "\', \'" + pro + "\', \'" + tas + "\');\" />";
}
//Render Full Name
full_name = function(v, x, s) {
if (s.data.USR_UID && s.data.USR_USERNAME) {
return _FNF(s.data.USR_USERNAME, s.data.USR_FIRSTNAME, s.data.USR_LASTNAME);
}
else {
return '[' + _('ID_UNASSIGNED').toUpperCase() + ']';
}
};
previous_full_name = function(v, x, s) {
if (s.data.PREVIOUS_USR_UID) {
switch (s.data.PREVIOUS_USR_UID) {
case "SCRIPT-TASK":
return _("ID_SCRIPT_TASK");
break;
default:
return _FNF(s.data.PREVIOUS_USR_USERNAME, s.data.PREVIOUS_USR_FIRSTNAME, s.data.PREVIOUS_USR_LASTNAME);
break;
}
} else {
return '';
}
};
for(var i = 0, len = columns.length; i < len; i++){
var c = columns[i];
c.renderer = columnRenderer;
if( c.dataIndex == 'DEL_TASK_DUE_DATE') c.renderer = dueDate;
if( c.dataIndex == 'APP_UPDATE_DATE') c.renderer = showDate;
if( c.id == 'deleteLink') c.renderer = deleteLink;
if( c.id == 'viewLink') c.renderer = viewLink;
if( c.id == 'unpauseLink') c.renderer = unpauseLink;
if( c.dataIndex == 'CASE_SUMMARY') c.renderer = renderSummary;
if( c.dataIndex == 'CASE_NOTES_COUNT') c.renderer = renderNote;
if( c.dataIndex == 'CASE_SUMMARY') c.sortable = false;
if( c.dataIndex == 'CASE_NOTES_COUNT') c.sortable = false;
//Format the name if is disabled solr, otherwise show without format
if (solrEnabled == 0) {
if( c.dataIndex == 'APP_DEL_PREVIOUS_USER') c.renderer = previous_full_name;
if( c.dataIndex == 'APP_CURRENT_USER') c.renderer = full_name;
}
c.header = _(c.header);
}
//adding the hidden field DEL_INIT_DATE
readerFields.push ( {name: "DEL_INIT_DATE"});
readerFields.push ( {name: "APP_UID"});
readerFields.push ( {name: "DEL_INDEX"});
readerFields.push ( {name: "USR_FIRSTNAME"});
readerFields.push ( {name: "USR_LASTNAME"});
readerFields.push ( {name: "USR_USERNAME"});
for (i=0; i<columns.length; i++) {
if (columns[i].dataIndex == 'USR_UID') {
columns[i].hideable = false;
}
if(columns[i].dataIndex == 'PREVIOUS_USR_UID') {
columns[i].hideable=false;
}
}
var cm = new Ext.grid.ColumnModel({
defaults: {
sortable: true // columns are sortable by default
},
columns: columns
});
var reassignCm = new Ext.grid.ColumnModel({
defaults: {
sortable: true // columns are sortable by default
},
columns: reassignColumns
});
var newPopUp = new Ext.Window({
id : Ext.id(),
el : 'reassign-panel',
title : _('ID_REASSIGN_ALL_CASES_BY_TASK'),
width : 750,
height : 350,
frame : true,
closable: false
});
var btnCloseReassign = new Ext.Button ({
text: _('ID_CLOSE'),
// text: TRANSLATIONS.LABEL_SELECT_ALL,
handler: function(){
newPopUp.hide();
}
});
var btnExecReassign = new Ext.Button ({
text: _('ID_REASSIGN_ALL'),
// text: 'Reassign All',
// text: TRANSLATIONS.LABEL_SELECT_ALL,
handler: function(){
var rs = storeReassignCases.getModifiedRecords();
var sv = [];
for(var i = 0; i <= rs.length-1; i++){
//sv[i]= rs[i].data['name'];
sv[i]= rs[i].data;
}
var gridData = storeReassignCases.getModifiedRecords();
Ext.Ajax.request({
url: 'proxySaveReassignCasesList',
success: function(response) {
newPopUp.hide();
storeCases.reload();
},
params: { APP_UIDS:ids, data:Ext.util.JSON.encode(sv), selected:false }
});
/*
storeReassignCases.setBaseParam('selected', false);
var result = storeReassignCases.save();
newPopUp.hide();
storeCases.reload();
*/
//storeReassignCases.reload();
}
});
var ExecReassign = function () {
newPopUp.hide();
var rs = storeReassignCases.getModifiedRecords();
var sv = [];
for(var i = 0; i <= rs.length-1; i++){
sv[i]= rs[i].data;
}
var gridData = storeReassignCases.getModifiedRecords();
Ext.MessageBox.show({ msg: _('ID_PROCESSING'), wait:true,waitConfig: {interval:200} });
Ext.Ajax.request({
url: 'proxySaveReassignCasesList',
success: function(response) {
Ext.MessageBox.hide();
storeCases.reload();
var ajaxServerResponse = Ext.util.JSON.decode(response.responseText);
var count;
var message = '';
for (count in ajaxServerResponse) {
if ( ajaxServerResponse[count]['TAS_TITLE'] != undefined ){
message = message + _('ID_CASE') + ": " + ajaxServerResponse[count]['APP_TITLE'] + " - " + _('ID_REASSIGNED_TO') + ": " + ajaxServerResponse[count]['APP_REASSIGN_USER'] + "<br>" ;
};
}
if (ajaxServerResponse['TOTAL']!=undefined&&ajaxServerResponse['TOTAL']!=-1){
message = message + "<br> " + _('ID_TOTAL_CASES_REASSIGNED') + ": " + ajaxServerResponse['TOTAL'];
} else {
message = "";
};
if (message!=""){
Ext.MessageBox.alert( _('ID_STATUS_REASSIGNMENT'), message, '' );
}
},
params: { APP_UIDS:ids, data:Ext.util.JSON.encode(sv), selected:true }
});
}
// Create HttpProxy instance, all CRUD requests will be directed to single proxy url.
var proxyCasesList = new Ext.data.HttpProxy({
api: {
read : urlProxy
}
});
// Typical JsonReader with additional meta-data params for defining the core attributes of your json-response
// the readerFields is defined in PHP server side
var readerCasesList = new Ext.data.JsonReader({
totalProperty: 'totalCount',
successProperty: 'success',
idProperty: 'index',
root: 'data',
messageProperty: 'message'
},
readerFields
);
// The new DataWriter component.
//currently we are not using this in casesList, but it is here just for complete definition
var writerCasesList = new Ext.data.JsonWriter({
encode: true,
writeAllFields: true
});
var proxyReassignCasesList = new Ext.data.HttpProxy({
api: {
read : 'proxyReassignCasesList'
//destroy : 'proxyReassignCasesList'
}
});
var readerReassignCasesList = new Ext.data.JsonReader({
totalProperty: 'totalCount',
successProperty: 'success',
idProperty: 'index',
root: 'data',
messageProperty: 'message'
},
reassignReaderFields
);
// The new DataWriter component.
//currently we are not using this in casesList, but it is here just for complete definition
var writerReassignCasesList = new Ext.data.JsonWriter({
encode: true,
writeAllFields: true
});
// Typical Store collecting the Proxy, Reader and Writer together.
// This is the store for Cases List
storeCases = new Ext.data.Store({
remoteSort: true,
proxy: proxyCasesList,
reader: readerCasesList,
writer: writerCasesList, // <-- plug a DataWriter into the store just as you would a Reader
autoSave: true, // <-- false would delay executing create, update, destroy requests until specifically told to do so with some [save] buton.
sortInfo:{field: 'APP_CACHE_VIEW.APP_NUMBER', direction: "DESC"},
listeners: {
beforeload: function (store, options)
{
this.setBaseParam(
"openApplicationUid", (__OPEN_APPLICATION_UID__ !== null)? __OPEN_APPLICATION_UID__ : ""
);
},
load: function(response){
if (response.reader.jsonData.result === false) {
PMExt.notify('ERROR', response.reader.jsonData.message);
//PMExt.error
}
},
exception: function(dp, type, action, options, response, arg) {
responseObject = Ext.util.JSON.decode(response.responseText);
if (typeof(responseObject.error) != 'undefined') {
Ext.Msg.show({
title: _('ID_ERROR'),
msg: responseObject.error,
fn: function(){parent.parent.location = '../login/login';},
animEl: 'elId',
icon: Ext.MessageBox.ERROR,
buttons: Ext.MessageBox.OK
});
}
}
}
});
storeReassignCases = new Ext.data.Store({
remoteSort: false,
proxy : proxyReassignCasesList,
reader: readerReassignCasesList
//writer: writerReassignCasesList, // <-- plug a DataWriter into the store just as you would a Reader
//autoSave: false // <-- false would delay executing create, update, destroy requests until specifically told to do so with some [save] buton.
});
//Layout Resizing
/*----------------------------------********---------------------------------*/
if (typeof valueFilterStatus != 'undefined') {
if (valueFilterStatus != '') {
storeCases.setBaseParam('filterStatus', valueFilterStatus);
}
}
/*----------------------------------********---------------------------------*/
storeCases.on('load',function(){var viewport = Ext.getCmp("viewportcases");viewport.doLayout();})
// create the Data Store for processes
var storeProcesses = new Ext.data.JsonStore({
root: 'data',
totalProperty: 'totalCount',
idProperty: 'index',
remoteSort: true,
fields: [
'PRO_UID', 'APP_PRO_TITLE'
],
proxy: new Ext.data.HttpProxy({
url: 'proxyProcessList?t=new'
})
});
storeProcesses.setDefaultSort('APP_PRO_TITLE', 'asc');
// creating the button for filters
var btnRead = new Ext.Button ({
id: 'read',
text: _('ID_OPT_READ'),
enableToggle: true,
toggleHandler: onItemToggle,
allowDepress: false,
pressed: false
});
var btnUnread = new Ext.Button ({
id: 'unread',
text: _('ID_OPT_UNREAD'),
enableToggle: true,
toggleHandler: onItemToggle,
allowDepress: false,
pressed: false
});
var btnAll = new Ext.Button ({
id: 'all',
text: _('ID_OPT_ALL'),
enableToggle: true,
toggleHandler: onItemToggle,
allowDepress: false,
pressed: true
});
var btnStarted = new Ext.Button ({
id: 'started',
// text: 'started by me',
text: _('ID_OPT_STARTED'),
enableToggle: true,
toggleHandler: onItemToggle,
allowDepress: true,
pressed: false
});
var btnCompleted = new Ext.Button ({
id: 'completed',
// text: 'Completed by me',
text: _('ID_OPT_COMPLETED'),
enableToggle: true,
toggleHandler: onItemToggle,
allowDepress: true,
pressed: false
});
// ComboBox creation processValues
var resultTpl = new Ext.XTemplate(
'<tpl for="."><div class="x-combo-list-item" style="white-space:normal !important;word-wrap: break-word;">',
'<span> {APP_PRO_TITLE}</span>',
'</div></tpl>'
);
Ext.Ajax.request({
url : 'casesList_Ajax',
params : {
actionAjax : 'processListExtJs',
action: action,
CATEGORY_UID: filterCategory
},
success: function ( result, request ) {
processValues = Ext.util.JSON.decode(result.responseText);
suggestProcess.getStore().removeAll();
suggestProcess.getStore().loadData(processValues);
},
failure: function ( result, request) {
if (typeof(result.responseText) != 'undefined') {
Ext.MessageBox.alert(_('ID_FAILED'), result.responseText);
}
}
});
var processStore = new Ext.data.Store( {
proxy : new Ext.data.HttpProxy( {
url : 'casesList_Ajax?actionAjax=processListExtJs',
method : 'POST'
}),
reader : new Ext.data.JsonReader( {
fields : [ {
name : 'PRO_UID'
}, {
name : 'PRO_TITLE'
} ]
})
});
var suggestProcess = new Ext.form.ComboBox({
store: processStore,
valueField : 'PRO_UID',
displayField:'PRO_TITLE',
typeAhead: false,
triggerAction: 'all',
emptyText : _('ID_EMPTY_PROCESSES'),
selectOnFocus : true,
editable : true,
width: 150,
allowBlank : true,
autocomplete: true,
minChars: 1,
hideTrigger:true,
listeners:{
scope: this,
'select': function() {
filterProcess = suggestProcess.value;
if ( action == 'search' ){
storeCases.setBaseParam('dateFrom', dateFrom.getValue());
storeCases.setBaseParam('dateTo', dateTo.getValue());
}
storeCases.setBaseParam('process', filterProcess);
}
}
});
var resetProcessButton = {
text:'X',
ctCls:"pm_search_x_button_des",
handler: function(){
storeCases.setBaseParam('process', '');
suggestProcess.setValue('');
doSearch();
}
};
var comboAllUsers = new Ext.form.ComboBox({
width : 180,
boxMaxWidth : 180,
editable : false,
displayField : 'USR_FULLNAME',
valueField : 'USR_UID',
//typeAhead : true,
mode : 'local',
forceSelection: true,
triggerAction: 'all',
emptyText: _('ID_EMPTY_USERS'),
selectOnFocus: true,
//getListParent: function() {
// return this.el.up('.x-menu');
//},
store : new Ext.data.ArrayStore({
fields: ['USR_UID','USR_FULLNAME'],
data : allUsersValues
}),
listeners:{
scope: this,
'select': function() {
filterProcess = comboAllUsers.value;
/*if (filterProcess==''){
btnSelectAll.hide();
btnUnSelectAll.hide();
btnReassign.hide();
}
else {
btnSelectAll.show();
btnUnSelectAll.show();
btnReassign.show();
}*/
storeCases.setBaseParam( 'user', filterProcess);
//storeCases.load({params:{user: filterProcess, start : 0 , limit : pageSize}});
}},
iconCls: 'no-icon' //use iconCls if placing within menu to shift to right side of menu
});
var comboCategory = new Ext.form.ComboBox({
width : 180,
boxMaxWidth : 200,
editable : false,
displayField : 'CATEGORY_NAME',
valueField : 'CATEGORY_UID',
forceSelection : false,
emptyText : _('ID_PROCESS_NO_CATEGORY'),
selectOnFocus : true,
typeAhead : true,
mode : 'local',
autocomplete : true,
triggerAction : 'all',
store : new Ext.data.ArrayStore({
fields : ['CATEGORY_UID','CATEGORY_NAME'],
data : categoryValues
}),
listeners:{
scope: this,
'select': function() {
filterCategory = comboCategory.value;
storeCases.setBaseParam('category', filterCategory);
storeCases.setBaseParam('process', '');
//storeCases.load({params:{category: filterCategory, start : 0 , limit : pageSize}});
Ext.Ajax.request({
url : 'casesList_Ajax' ,
params : {actionAjax : 'processListExtJs',
action: action,
CATEGORY_UID: filterCategory},
success: function ( result, request ) {
var data = Ext.util.JSON.decode(result.responseText);
suggestProcess.getStore().removeAll();
suggestProcess.getStore().loadData( data );
suggestProcess.setValue('');
},
failure: function ( result, request) {
if (typeof(result.responseText) != 'undefined') {
Ext.MessageBox.alert(_('ID_FAILED'), result.responseText);
}
}
});
}},
iconCls: 'no-icon'
});
if (typeof filterStatus == 'undefined') {
filterStatus = [];
}
/*----------------------------------********---------------------------------*/
var comboFilterStatus = new Ext.form.ComboBox({
width : 180,
boxMaxWidth : 200,
editable : false,
displayField : 'NAME',
valueField : 'UID',
forceSelection : false,
emptyText : _('ID_SELECT_STATUS'),
selectOnFocus : true,
typeAhead : true,
mode : 'local',
autocomplete : true,
triggerAction : 'all',
hidden : filterStatus.length == 0 ? true : false,
store : new Ext.data.ArrayStore({
fields : ['UID','NAME'],
data : filterStatus
}),
listeners:{
scope: this,
'select': function() {
var filter = comboFilterStatus.value;
if ( action == 'search' ){
storeCases.setBaseParam('dateFrom', dateFrom.getValue());
storeCases.setBaseParam('dateTo', dateTo.getValue());
}
storeCases.setBaseParam('filterStatus', filter);
storeCases.load({params:{ start : 0 , limit : pageSize }});
}
},
iconCls: 'no-icon'
});
/*----------------------------------********---------------------------------*/
var btnSelectAll = new Ext.Button ({
text: _('CHECK_ALL'),
// text: 'Check All',
// text: TRANSLATIONS.LABEL_SELECT_ALL,
handler: function(){
grid.getSelectionModel().selectAll();
}
});
var btnUnSelectAll = new Ext.Button ({
text: _('UNCHECK_ALL'),
// text: 'Un-Check All',
// text: TRANSLATIONS.LABEL_UNSELECT_ALL,
handler: function(){
grid.getSelectionModel().clearSelections();
}
});
var btnReassign = new Ext.Button ({
text: _('ID_REASSIGN'),
// text: 'Reassign',
// text: TRANSLATIONS.LABEL_UNSELECT_ALL,
handler: function(){
if(openReassignCallback) {
for(var key in openReassignCallback){
var callbackFunction = new Function(openReassignCallback[key]);
callbackFunction.call();
}
return;
}
reassign();
}
});
// var conn = new Ext.data.Connection();
var nav = new Ext.FormPanel({
labelWidth:100,
frame:true,
width:300,
collapsible:true,
defaultType:'textfield',
items:[{
fieldLabel: _('ID_REASSIGN_TO'),
name:'txt_stock_in',
allowBlank:true
}]
});
var reassignPopup = new Ext.Window({
el:'reassign-panel',
modal:true,
layout:'fit',
width:300,
height:300,
closable:false,
resizable:false,
plain:true,
items:[nav],
buttons:[{
text: _('ID_SUBMIT'),
handler:function(){
Ext.Msg.alert('OK','save ?');
Ext.Msg.prompt(_('ID_NAME'),'please enter your name: ',function(btn,text){
if(btn=='ok') {
alert('ok');
}
});
}
}, {
text: _('ID_CLOSE'),
handler:function() {
reassignPopup.hide();
}
}]
});
// ComboBox creation
var comboStatus = new Ext.form.ComboBox({
width : 80,
boxMaxWidth : 90,
editable : false,
mode : 'local',
store : new Ext.data.ArrayStore({
fields: ['id', 'value'],
data : statusValues
}),
valueField : 'id',
displayField : 'value',
triggerAction : 'all',
//typeAhead: true,
//forceSelection: true,
//emptyText: 'Select a status...',
//selectOnFocus: true,
//getListParent: function() {
// return this.el.up('.x-menu');
//},
listeners:{
scope: this,
'select': function() {
filterStatus = comboStatus.value;
storeCases.setBaseParam( 'filterStatus', filterStatus);
storeCases.setBaseParam( 'start', 0);
storeCases.setBaseParam( 'limit', pageSize);
//storeCases.load();
}},
iconCls: 'no-icon' //use iconCls if placing within menu to shift to right side of menu
});
// ComboBox creation processValues
var userStore = new Ext.data.Store( {
proxy : new Ext.data.HttpProxy( {
url : 'casesList_Ajax?actionAjax=userValues&action='+action,
method : 'POST'
}),
reader : new Ext.data.JsonReader( {
fields : [ {
name : 'USR_UID'
}, {
name : 'USR_FULLNAME'
} ]
})
});
var suggestUser = new Ext.form.ComboBox({
store: userStore,
valueField : 'USR_UID',
displayField:'USR_FULLNAME',
typeAhead: false,
triggerAction: 'all',
emptyText : _('ID_ALL_USERS'),
selectOnFocus : true,
editable : true,
width: 180,
allowBlank : true,
autocomplete: true,
minChars: 1,
hideTrigger:true,
listeners:{
scope: this,
'select': function() {
//storeCases.setBaseParam( 'user', comboUser.store.getAt(0).get(comboUser.valueField));
filterUser = suggestUser.value;
storeCases.setBaseParam( 'user', filterUser);
storeCases.setBaseParam( 'start', 0);
storeCases.setBaseParam( 'limit', pageSize);
}
}
});
var textSearch = new Ext.form.TextField ({
allowBlank: true,
ctCls:'pm_search_text_field',
width: 140,
emptyText: _('ID_EMPTY_SEARCH'),
listeners: {
specialkey: function(f,e){
if (e.getKey() == e.ENTER) {
doSearch();
}
}
}
});
var btnSearch = new Ext.Button ({
text: _('ID_SEARCH'),
iconCls: 'button_menu_ext ss_sprite ss_page_find',
//cls: 'x-form-toolbar-standardButton',
handler: doSearch
});
function doSearch(){
//var viewText = Ext.getCmp('casesGrid').getView();
viewText.emptyText = _('ID_NO_RECORDS_FOUND');
//Ext.getCmp('casesGrid').getView().refresh();
searchText = textSearch.getValue();
storeCases.setBaseParam('dateFrom', dateFrom.getValue());
storeCases.setBaseParam('dateTo', dateTo.getValue());
storeCases.setBaseParam( 'search', searchText);
storeCases.load({params:{ start : 0 , limit : pageSize }});
}
var resetSearchButton = {
text:'X',
ctCls:"pm_search_x_button_des",
handler: function(){
textSearch.setValue('');
doSearch();
}
}
var resetSuggestButton = {
text:'X',
ctCls:"pm_search_x_button_des",
handler: function(){
suggestUser.setValue('');
doSearch();
}
}
textJump = {
xtype: 'numberfield',
id : 'textJump',
allowBlank: true,
width: 50,
emptyText: _('ID_CASESLIST_APP_UID'),
listeners: {
specialkey: function(f,e){
if (e.getKey() == e.ENTER) {
// defining an id and using the Ext.getCmp method improves the accesibility of Ext components
caseNumber = parseFloat(Ext.util.Format.trim(Ext.getCmp('textJump').getValue()));
if( caseNumber )
jumpToCase(caseNumber);
else
msgBox(_('ID_INPUT_ERROR'), _('ID_INVALID_APPLICATION_NUMBER'), 'error');
}
}
}
};
var btnJump = new Ext.Button ({
text: _('ID_OPT_JUMP'),
handler: function(){
var caseNumber = parseFloat(Ext.util.Format.trim(Ext.getCmp('textJump').getValue()));
if (caseNumber){
jumpToCase(caseNumber);
} else {
msgBox(_('ID_INPUT_ERROR'), _('ID_INVALID_APPLICATION_NUMBER'), 'error');
}
}
});
/*** menu and toolbars **/
function onMessageContextMenu(grid, rowIndex, e) {
e.stopEvent();
var coords = e.getXY();
messageContextMenu.showAt([coords[0], coords[1]]);
enableDisableMenuOption();
}
function enableDisableMenuOption(){
var rows = grid.getSelectionModel().getSelections();
switch(action){
case 'todo':
if( rows.length == 0 ) {
optionMenuOpen.setDisabled(true);
optionMenuPause.setDisabled(true);
optionMenuReassign.setDisabled(true);
optionMenuCancel.setDisabled(true);
} else if( rows.length == 1 ) {
optionMenuOpen.setDisabled(false);
optionMenuPause.setDisabled(false);
optionMenuReassign.setDisabled(false);
optionMenuCancel.setDisabled(false);
} else {
optionMenuOpen.setDisabled(true);
optionMenuPause.setDisabled(true);
optionMenuReassign.setDisabled(true);
optionMenuCancel.setDisabled(false);
}
break;
case 'draft':
if( rows.length == 0 ) {
optionMenuOpen.setDisabled(true);
optionMenuPause.setDisabled(true);
optionMenuReassign.setDisabled(true);
optionMenuDelete.setDisabled(true);
} else if( rows.length == 1 ) {
optionMenuOpen.setDisabled(false);
optionMenuPause.setDisabled(false);
optionMenuReassign.setDisabled(false);
optionMenuDelete.setDisabled(false);
} else {
optionMenuOpen.setDisabled(true);
optionMenuPause.setDisabled(true);
optionMenuReassign.setDisabled(true);
optionMenuDelete.setDisabled(false);
}
break;
default:
if( rows.length == 0 ) {
optionMenuOpen.setDisabled(true);
}
else {
optionMenuOpen.setDisabled(false);
}
}
}
var menuItems;
//alert(action);
optionMenuOpen = new Ext.Action({
text: _('ID_OPEN'),
handler: openCase,
disabled: true
});
optionMenuUnpause = new Ext.Action({
text: _('ID_UNPAUSE_CASE'),
iconCls: 'ICON_CASES_UNPAUSE',
handler: unpauseCase
});
optionMenuPause = new Ext.Action({
text: _('ID_PAUSE_CASE'),
iconCls: 'ICON_CASES_PAUSED',
menu: new Ext.menu.DateMenu({
//vtype: 'daterange',
handler: function(dp, date){
Ext.Ajax.request({
url : 'casesList_Ajax' ,
params : {actionAjax : 'verifySession'},
success: function ( result, request ) {
var data = Ext.util.JSON.decode(result.responseText);
if( data.lostSession ) {
Ext.Msg.show({
title: _('ID_ERROR'),
msg: data.message,
animEl: 'elId',
icon: Ext.MessageBox.ERROR,
buttons: Ext.MessageBox.OK,
fn : function(btn) {
try
{
prnt = parent.parent;
top.location = top.location;
}
catch (err)
{
parent.location = parent.location;
}
}
});
} else {
pauseCase(date);
}
},
failure: function ( result, request) {
if (typeof(result.responseText) != 'undefined') {
Ext.MessageBox.alert( _('ID_FAILED'), result.responseText);
}
}
});
}
})
});
var optionMenuSummary = new Ext.Action({
text: _('ID_SUMMARY'),
iconCls: 'x-tree-node-icon ss_application_form',
handler: caseSummary
});
optionMenuNotes = new Ext.Action({
text: _('ID_CASES_NOTES'),
iconCls: 'ICON_CASES_NOTES',
handler: caseNotes
});
reassingCaseToUser = function()
{
var APP_UID = optionMenuReassignGlobal.APP_UID;
var DEL_INDEX = optionMenuReassignGlobal.DEL_INDEX;
var rowSelected = Ext.getCmp("grdpnlUsersToReassign").getSelectionModel().getSelected();
if( rowSelected ) {
PMExt.confirm(_('ID_CONFIRM'), _('ID_REASSIGN_CONFIRM'), function(){
var loadMask = new Ext.LoadMask(winReassignInCasesList.getEl(), {msg: _('ID_PROCESSING')});
loadMask.show();
Ext.Ajax.request({
url : 'casesList_Ajax' ,
params : {actionAjax : 'reassignCase', USR_UID: rowSelected.data.USR_UID, APP_UID: APP_UID, DEL_INDEX:DEL_INDEX},
success: function ( result, request ) {
var data = Ext.util.JSON.decode(result.responseText);
if( data.status == 0 ) {
try {
parent.notify('', data.msg);
}
catch (e) {
// Nothing to do
}
location.href = 'casesListExtJs';
} else {
var loadMask = new Ext.LoadMask(winReassignInCasesList.getEl(), {msg: _('ID_PROCESSING')});
loadMask.hide();
winReassignInCasesList.hide();
alert(data.msg);
}
},
failure: function ( result, request) {
var loadMask = new Ext.LoadMask(winReassignInCasesList.getEl(), {msg: _('ID_PROCESSING')});
loadMask.hide();
winReassignInCasesList.hide();
if (typeof(result.responseText) != 'undefined') {
Ext.MessageBox.alert( _('ID_FAILED'), result.responseText);
}
}
});
});
}
}
//optionMenuPause.setMinValue('2010-11-04');
var loadMaskUsersToReassign = new Ext.LoadMask(Ext.getBody(), {msg: _("ID_LOADING_GRID")});
var optionMenuReassignGlobal = {};
optionMenuReassignGlobal.APP_UID = "";
optionMenuReassignGlobal.DEL_INDEX = "";
optionMenuReassign = new Ext.Action({
text: _('ID_REASSIGN'),
iconCls: 'ICON_CASES_TO_REASSIGN',
handler: function() {
Ext.Ajax.request({
url : 'casesList_Ajax' ,
params : {actionAjax : 'verifySession'},
success: function ( result, request ) {
var data = Ext.util.JSON.decode(result.responseText);
if( data.lostSession ) {
Ext.Msg.show({
title: _('ID_ERROR'),
msg: data.message,
animEl: 'elId',
icon: Ext.MessageBox.ERROR,
buttons: Ext.MessageBox.OK,
fn : function(btn) {
try
{
prnt = parent.parent;
top.location = top.location;
}
catch (err)
{
parent.location = parent.location;
}
}
});
} else {
var casesGrid_ = Ext.getCmp('casesGrid');
var rowSelected = casesGrid_.getSelectionModel().getSelected();
var rowAllJsonArray = casesGrid_.store.reader.jsonData.data;
var rowSelectedIndex = casesGrid_.getSelectionModel().lastActive;
var rowSelectedJsonArray = rowAllJsonArray[rowSelectedIndex];
var TAS_UID = rowSelectedJsonArray.TAS_UID;
var USR_UID = rowSelectedJsonArray.USR_UID;
var APP_UID = rowSelectedJsonArray.APP_UID;
var DEL_INDEX = rowSelectedJsonArray.DEL_INDEX;
optionMenuReassignGlobal.APP_UID = APP_UID;
optionMenuReassignGlobal.DEL_INDEX = DEL_INDEX;
if( rowSelected ){
//Variables
var pageSizeUsersToReassign = 10;
//Stores
var storeUsersToReassign = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: "casesList_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"}
]
}),
remoteSort: true,
listeners: {
beforeload: function (store)
{
winReassignInCasesList.setDisabled(true);
loadMaskUsersToReassign.show();
this.baseParams = {
actionAjax: "getUsersToReassign",
taskUid: TAS_UID,
search: Ext.getCmp("txtSearchUsersToReassign").getValue(),
pageSize: pageSizeUsersToReassign
};
},
load: function (store, record, opt)
{
winReassignInCasesList.setDisabled(false);
loadMaskUsersToReassign.hide();
}
}
});
//Components
var pagingUsersToReassign = new Ext.PagingToolbar({
id: "pagingUsersToReassign",
pageSize: pageSizeUsersToReassign,
store: storeUsersToReassign,
displayInfo: true,
displayMsg: _("ID_DISPLAY_ITEMS"),
emptyMsg: _("ID_NO_RECORDS_FOUND")
});
var cmodelUsersToReassign = new Ext.grid.ColumnModel({
defaults: {
width: 200,
sortable: true
},
columns: [
{id: "USR_UID", dataIndex: "USR_UID", hidden: true, hideable: false},
{id: "USR_FIRSTNAME", dataIndex: "USR_FIRSTNAME", header: _("ID_FIRSTNAME"), width: 300},
{id: "USR_LASTNAME", dataIndex: "USR_LASTNAME", header: _("ID_LASTNAME"), width: 300}
]
});
var smodelUsersToReassign = new Ext.grid.RowSelectionModel({
singleSelect: true
});
var grdpnlUsersToReassign = new Ext.grid.GridPanel({
id: "grdpnlUsersToReassign",
store: storeUsersToReassign,
colModel: cmodelUsersToReassign,
selModel: smodelUsersToReassign,
columnLines: true,
viewConfig: {forceFit: true},
enableColumnResize: true,
enableHdMenu: true,
tbar: [
{
text: _("ID_REASSIGN"),
iconCls: "ICON_CASES_TO_REASSIGN",
handler: function ()
{
reassingCaseToUser();
}
},
"->",
{
xtype: "textfield",
id: "txtSearchUsersToReassign",
emptyText: _("ID_EMPTY_SEARCH"),
width: 150,
allowBlank: true,
listeners: {
specialkey: function (f, e)
{
if (e.getKey() == e.ENTER) {
pagingUsersToReassign.moveFirst();
}
}
}
},
{
text: "X",
ctCls: "pm_search_x_button",
handler: function ()
{
Ext.getCmp("txtSearchUsersToReassign").reset();
}
},
{
text: _("ID_SEARCH"),
handler: function ()
{
pagingUsersToReassign.moveFirst();
}
}
],
bbar: pagingUsersToReassign,
title: ""
});
winReassignInCasesList = new Ext.Window({
title: '',
width: 450,
height: 350,
layout:'fit',
autoScroll:true,
modal: true,
maximizable: false,
items: [grdpnlUsersToReassign]
});
winReassignInCasesList.show();
grdpnlUsersToReassign.store.load();
}
}
},
failure: function ( result, request) {
if (typeof(result.responseText) != 'undefined') {
Ext.MessageBox.alert( _('ID_FAILED'), result.responseText);
}
}
});
}
});
optionMenuDelete = new Ext.Action({
text: _('ID_DELETE'),
iconCls: 'ICON_CASES_DELETE',
handler: deleteCase
});
optionMenuCancel = new Ext.Action({
text: _('ID_CANCEL'),
iconCls: 'ICON_CASES_CANCEL',
handler: cancelCase
});
switch(action){
case 'todo':
menuItems = [optionMenuPause, optionMenuSummary, optionMenuNotes];
if( ___p34315105.search('R') != -1 )
menuItems.push(optionMenuReassign);
break;
case 'draft':
menuItems = [optionMenuPause, optionMenuSummary, optionMenuNotes];
if( ___p34315105.search('R') != -1 )
menuItems.push(optionMenuReassign);
menuItems.push(optionMenuDelete);
break;
case 'paused':
menuItems = [optionMenuUnpause, optionMenuSummary, optionMenuNotes];
break;
default:
menuItems = [optionMenuSummary, optionMenuNotes]
}
contextMenuItems = new Array();
contextMenuItems.push(optionMenuOpen);
for (i=0; i<menuItems.length; i++) {
contextMenuItems.push(menuItems[i]);
}
var messageContextMenu = new Ext.menu.Menu({
id: 'messageContextMenu',
items: contextMenuItems
});
//
var dateFrom = new Ext.form.DateField({
id:'dateFrom',
format: 'Y-m-d',
width: 120,
editable: false,
value: ''
});
var dateTo = new Ext.form.DateField({
id:'dateTo',
format: 'Y-m-d',
width: 120,
editable: false,
value: ''
});
var toolbarTodo = [
optionMenuOpen,
{
xtype: 'tbbutton',
text: _('ID_ACTIONS'),
menu: menuItems
},
'-',
btnRead,
'-',
btnUnread,
'-',
btnAll,
'->', // begin using the right-justified button container
filterStatus.length != 0 ?[
_('ID_OVERDUE'),
comboFilterStatus
] : [
],
_("ID_CATEGORY"),
comboCategory,
"-",
_('ID_PROCESS'),
suggestProcess,
resetProcessButton,
'-',
textSearch,
resetSearchButton,
btnSearch,
'-',
textJump,
btnJump,
' ',
' '
];
var toolbarGeneral = [
optionMenuOpen,
btnRead,
'-',
btnUnread,
'-',
btnAll,
'->', // begin using the right-justified button container
_("ID_CATEGORY"),
comboCategory,
"-",
_('ID_PROCESS'),
suggestProcess,
resetProcessButton,
'-',
textSearch,
resetSearchButton,
btnSearch,
'-',
textJump,
btnJump,
' ',
' '
];
var toolbarUnassigned = [
optionMenuOpen,
btnRead,
'-',
btnUnread,
'-',
btnAll,
'->', // begin using the right-justified button container
_("ID_CATEGORY"),
comboCategory,
"-",
_('ID_PROCESS'),
suggestProcess,
resetProcessButton,
'-',
textSearch,
resetSearchButton,
btnSearch,
'-',
textJump,
btnJump,
' ',
' '
];
var toolbarDraft = [
optionMenuOpen,
{
xtype: 'tbbutton',
text: _('ID_ACTIONS'),
menu: menuItems
},
'->',
_("ID_CATEGORY"),
comboCategory,
"-",
_('ID_PROCESS'),
suggestProcess,
resetProcessButton,
'-',
textSearch,
resetSearchButton,
btnSearch,
'-',
textJump,
btnJump,
' ',
' '
];
var toolbarToRevise = [
optionMenuOpen,
'->', // begin using the right-justified button container
_("ID_CATEGORY"),
comboCategory,
"-",
_('ID_PROCESS'),
suggestProcess,
resetProcessButton,
'-',
textSearch,
resetSearchButton,
btnSearch,
'-',
textJump,
btnJump,
' ',
' '
];
var toolbarToReassign = [
optionMenuOpen,
"-",
btnSelectAll,
btnUnSelectAll,
"-",
btnReassign,
"->",
_("ID_USER"),
comboAllUsers,
"-",
_("ID_CATEGORY"),
comboCategory,
"-",
_("ID_PROCESS"),
suggestProcess,
resetProcessButton,
textSearch,
resetSearchButton,
btnSearch,
" ",
" "
];
var toolbarSent = [
optionMenuOpen,
btnStarted,
'-',
btnCompleted,
'-',
btnAll,
'->', // begin using the right-justified button container
_("ID_CATEGORY"),
comboCategory,
"-",
_('ID_PROCESS'),
suggestProcess,
resetProcessButton,
'-',
_('ID_STATUS'),
comboStatus,
'-',
textSearch,
resetSearchButton,
btnSearch,
'-',
textJump,
btnJump,
' ',
' '
];
var clearDateFrom = new Ext.Action({
text: "X",
ctCls: "pm_search_x_button_des",
handler: function(){
Ext.getCmp("dateFrom").setValue("");
}
});
var clearDateTo = new Ext.Action({
text: "X",
ctCls: "pm_search_x_button_des",
handler: function(){
Ext.getCmp("dateTo").setValue("");
}
});
var toolbarSearch = [
' ',
_('ID_DELEGATE_DATE_FROM'),
dateFrom,
clearDateFrom,
' ',
_('ID_TO'),
dateTo,
clearDateTo,
"->",
'-',
textSearch,
resetSearchButton,
btnSearch ,
'&nbsp;&nbsp;&nbsp;'
];
var firstToolbarSearch = new Ext.Toolbar({
region: 'north',
width: '100%',
autoHeight: true,
items: [
optionMenuOpen,
'->',
_("ID_CATEGORY"),
comboCategory,
"-",
_('ID_PROCESS'),
suggestProcess,
resetProcessButton,
'-',
_('ID_STATUS'),
comboStatus,
"-",
_("ID_USER"),
//comboUser,
suggestUser,
resetSuggestButton,
'&nbsp;&nbsp;&nbsp;'
//'-',
//textSearch,
//resetSearchButton,
//btnSearch
]
});
//alert(action);
switch (action) {
case 'draft' : itemToolbar = toolbarDraft; break;
case 'sent' : itemToolbar = toolbarSent; break;
case 'to_revise' : itemToolbar = toolbarToRevise; break;
case 'to_reassign': itemToolbar = toolbarToReassign; break;
case 'search' : itemToolbar = toolbarSearch; break;
case 'unassigned' : itemToolbar = toolbarUnassigned; break;
case 'gral' : itemToolbar = toolbarGeneral; break;
default : itemToolbar = toolbarTodo; break;
}
var tb = new Ext.Toolbar({
height: 33,
items: itemToolbar
});
var mask = new Ext.LoadMask(Ext.getBody(), {msg: _('ID_LOADING')});
// create the editor grid
grid = new Ext.grid.GridPanel({
region: 'center',
id: 'casesGrid',
store: storeCases,
cm: cm,
loadMask: mask,
sm: new Ext.grid.RowSelectionModel({
selectSingle: false,
listeners:{
selectionchange: function(sm){
enableDisableMenuOption();
// switch(sm.getCount()){
// case 0: Ext.getCmp('assignButton').disable(); break;
// default: Ext.getCmp('assignButton').enable(); break;
// }
}
}
}),
//autoHeight: true,
layout: 'fit',
viewConfig: {
forceFit:true,
cls:"x-grid-empty",
emptyText: ( _('ID_NO_RECORDS_FOUND') )
},
listeners: {
rowdblclick: openCase,
render: function(){
//this.loadMask = new Ext.LoadMask(this.body, {msg:TRANSLATIONS.LABEL_GRID_LOADING});
//this.ownerCt.doLayout();
}
},
tbar: tb,
// paging bar on the bottom
bbar: new Ext.PagingToolbar({
pageSize: pageSize,
store: storeCases,
displayInfo: true,
//displayMsg: 'Displaying items {0} - {1} of {2} ' + ' &nbsp; ' ,
displayMsg: _('ID_DISPLAY_ITEMS') + ' &nbsp; ',
emptyMsg: _('ID_DISPLAY_EMPTY')
})
});
grid.on('rowcontextmenu', function (grid, rowIndex, evt) {
var sm = grid.getSelectionModel();
sm.selectRow(rowIndex, sm.isSelected(rowIndex));
}, this);
grid.on('contextmenu', function (evt) {
evt.preventDefault();
}, this);
grid.addListener('rowcontextmenu', onMessageContextMenu,this);
// patch in order to hide the USR_UIR and PREVIOUS_USR_UID columns
var userIndex = grid.getColumnModel().findColumnIndex('USR_UID');
if ( userIndex >= 0 ) grid.getColumnModel().setHidden(userIndex, true);
var prevUserIndex = grid.getColumnModel().findColumnIndex('PREVIOUS_USR_UID');
if ( prevUserIndex >= 0 ) grid.getColumnModel().setHidden(prevUserIndex, true);
if (action=='to_reassign'){
//grid.getColumnModel().setHidden(0, true);
grid.getColumnModel().setHidden(1, true);
}
// create reusable renderer
// create the editor grid
var reassignGrid = new Ext.grid.EditorGridPanel({
id : Ext.id(),
region: 'center',
store: storeReassignCases,
cm: reassignCm,
autoHeight: true,
viewConfig: {
forceFit:true
}
});
var btnExecReassignSelected = new Ext.Button ({
text: _('ID_REASSIGN'),
handler: function(){
var rs = storeReassignCases.getModifiedRecords();
if (rs.length < storeReassignCases.totalLength) {
Ext.Msg.confirm( _('ID_CONFIRM'), _('ID_CONFIRM_TO_REASSIGN'), function (btn, text) {
if ( btn == 'yes' ) {
ExecReassign();
}
})
} else {
ExecReassign();
}
}
});
var gridForm = new Ext.FormPanel({
id: 'reassign-form',
frame: true,
labelAlign: 'left',
//title: 'Company data',
bodyStyle:'padding:5px',
width: 750,
layout: 'column', // Specifies that the items will now be arranged in columns
items: [{
id : 'tasksGrid',
columnWidth: 0.60,
layout: 'fit',
items: {
id: 'TasksToReassign',
xtype: 'grid',
ds: storeReassignCases,
cm: reassignCm,
sm: new Ext.grid.RowSelectionModel({
singleSelect: true
/*listeners: {
rowselect: function(sm, row, rec) {
Ext.getCmp("reassign-form").getForm().loadRecord(rec);
}
}*/
}),
//autoExpandColumn: 'company',
height: 265,
title : _('ID_CASES_TO_REASSIGN_TASK_LIST'),
border : true,
listeners: {
click: function() {
rows = this.getSelectionModel().getSelections();
var application = '';
var task = '';
var currentUser = '';
comboUsersToReassign.disable();
if( rows.length > 0 ) {
comboUsersToReassign.enable();
var ids = '';
for(i=0; i<rows.length; i++) {
// filtering duplicate tasks
application = rows[i].get('APP_UID');
task = rows[i].get('TAS_UID');
currentUser = rows[i].get('USR_UID');
}
} else {
}
comboUsersToReassign.clearValue();
storeUsersToReassign.removeAll();
storeUsersToReassign.setBaseParam('application', application);
storeUsersToReassign.setBaseParam('task', task);
storeUsersToReassign.setBaseParam('currentUser', currentUser);
storeUsersToReassign.load();
//alert(record.USERS);
} // Allow rows to be rendered.
}
}
},{
columnWidth: 0.4,
xtype: 'fieldset',
labelWidth: 50,
title: _('ID_USER_LIST'),
defaults: {width: 200, border:false}, // Default config options for child items
defaultType: 'textfield',
autoHeight: true,
bodyStyle: Ext.isIE ? 'text-align: left;padding:0 0 5px 15px;' : 'text-align: left; padding:10px 5px;',
border: false,
//style: {
// "margin-left": "10px", // when you add custom margin in IE 6...
// "margin-right": Ext.isIE6 ? (Ext.isStrict ? "-10px" : "-13px") : "0" // you have to adjust for it somewhere else
//},
items:
[
comboUsersToReassign,
{
xtype: 'fieldset',
border : true,
defaultType: 'textfield',
title: _('ID_INSTRUCTIONS'),
autoHeight:true,
html: _('ID_INSTRUCTIONS_TEXT')
}
]
}]
//renderTo: bd
});
//Manually trigger the data store load
switch (action) {
case "draft":
storeCases.setBaseParam("category", "");
storeCases.setBaseParam("process", "");
storeCases.setBaseParam("search", textSearch.getValue());
break;
case "sent":
storeCases.setBaseParam("category", "");
storeCases.setBaseParam("process", "");
storeCases.setBaseParam("status", comboStatus.store.getAt(0).get(comboStatus.valueField));
storeCases.setBaseParam("search", textSearch.getValue());
break;
case "to_revise":
storeCases.setBaseParam("category", "");
storeCases.setBaseParam("process", "");
storeCases.setBaseParam("search", textSearch.getValue());
break;
case "to_reassign":
storeCases.setBaseParam("user", comboAllUsers.store.getAt(0).get(comboAllUsers.valueField));
storeCases.setBaseParam("category", "");
storeCases.setBaseParam("process", "");
storeCases.setBaseParam("search", textSearch.getValue());
break;
case "search":
storeCases.setBaseParam("category", "");
storeCases.setBaseParam("process", "");
storeCases.setBaseParam("status", comboStatus.store.getAt(0).get(comboStatus.valueField));
//storeCases.setBaseParam("user", comboUser.store.getAt(0).get(comboUser.valueField));
storeCases.setBaseParam("search", textSearch.getValue());
storeCases.setBaseParam("dateFrom", dateFrom.getValue());
storeCases.setBaseParam("dateTo", dateTo.getValue());
break;
case "unassigned":
storeCases.setBaseParam("category", "");
storeCases.setBaseParam("process", "");
storeCases.setBaseParam("search", textSearch.getValue());
break;
case "gral":
storeCases.setBaseParam("process", "");
storeCases.setBaseParam("search", textSearch.getValue());
break;
default:
//todo
//paused
storeCases.setBaseParam("category", "");
storeCases.setBaseParam("process", "");
storeCases.setBaseParam("search", textSearch.getValue());
break;
}
storeCases.setBaseParam("action", action);
storeCases.setBaseParam("start", 0);
storeCases.setBaseParam("limit", pageSize);
var viewText = Ext.getCmp('casesGrid').getView();
storeCases.removeAll();
if (action != "search" || __OPEN_APPLICATION_UID__ !== null) {
storeCases.load();
} else {
viewText.emptyText = _('ID_ENTER_SEARCH_CRITERIA');
storeCases.load( {params: { first: true}} );
}
__OPEN_APPLICATION_UID__ = null;
//newPopUp.add(reassignGrid);
newPopUp.add(gridForm);
newPopUp.addButton(btnExecReassignSelected);
//newPopUp.addButton(btnExecReassign);
newPopUp.addButton(btnCloseReassign);
//storeProcesses.load();
function onItemToggle(item, pressed){
switch ( item.id ) {
case 'read' :
btnUnread.toggle( false, true);
btnAll.toggle( false, true);
break;
case 'unread' :
btnRead.toggle( false, true);
btnAll.toggle( false, true);
break;
case 'started' :
btnAll.toggle( false, true);
btnCompleted.toggle( false, true);
break;
case 'completed' :
btnAll.toggle( false, true);
btnStarted.toggle( false, true);
break;
case 'all' :
btnRead.toggle( false, true);
btnUnread.toggle( false, true);
btnStarted.toggle( false, true);
btnCompleted.toggle( false, true);
break;
}
if(pressed){
storeCases.setBaseParam( 'filter', item.id );
} else {
storeCases.setBaseParam( 'filter', '' );
}
storeCases.setBaseParam( 'start', 0 );
storeCases.setBaseParam( 'limit', pageSize );
storeCases.load();
//storeProcesses.load();
}
$configViewport = {
layout: 'border',
autoScroll: true,
id:'viewportcases',
items: [grid]
}
if ( action == 'search' )
$configViewport.items.push(firstToolbarSearch);
var viewport = new Ext.Viewport($configViewport);
//routine to hide the debug panel if it is open
if( typeof parent != 'undefined' ){
if( parent.PANEL_EAST_OPEN ){
parent.PANEL_EAST_OPEN = false;
parent.Ext.getCmp('debugPanel').hide();
parent.Ext.getCmp('debugPanel').ownerCt.doLayout();
}
}
_nodeId = '';
switch(action){
case 'draft':
_nodeId = "CASES_DRAFT";
break;
case 'sent':
_nodeId = "CASES_SENT";
break;
case 'unassigned':
_nodeId = "CASES_SELFSERVICE";
break;
case 'paused':
_nodeId = "CASES_PAUSED";
break;
case 'todo':
_nodeId = "CASES_INBOX";
break;
}
try {
if ( _nodeId != '' ){
treePanel1 = parent.Ext.getCmp('tree-panel')
if(treePanel1)
node = treePanel1.getNodeById(_nodeId);
if(node)
node.select();
}
}
catch (e) {
// Nothing to do
}
try {
parent.updateCasesTree();
}
catch (e) {
// Nothing to do
}
comboCategory.setValue("");
suggestProcess.setValue("");
comboStatus.setValue("");
/*----------------------------------********---------------------------------*/
if (typeof valueFilterStatus != 'undefined') {
comboFilterStatus.setValue(valueFilterStatus);
}
/*----------------------------------********---------------------------------*/
if(typeof(comboUser) != 'undefined'){
comboUser.setValue("");
}
comboAllUsers.setValue("CURRENT_USER");
function reassign(){
storeReassignCases.removeAll();
var rows = grid.getSelectionModel().getSelections();
storeReassignCases.rejectChanges();
var tasks = [];
var sw = 0;
Ext.Ajax.request({
url : 'proxyReassignCasesList' ,
params : {actionAjax : 'verifySession'},
success: function ( result, request ) {
var data = Ext.util.JSON.decode(result.responseText);
if( data.lostSession ) {
Ext.Msg.show({
title: _('ID_ERROR'),
msg: data.message,
animEl: 'elId',
icon: Ext.MessageBox.ERROR,
buttons: Ext.MessageBox.OK,
fn : function(btn) {
try
{
prnt = parent.parent;
top.location = top.location;
}
catch (err)
{
parent.location = parent.location;
}
}
});
} else {
if( rows.length > 0 ) {
ids = '';
for(i=0; i<rows.length; i++) {
// filtering duplicate tasks
if( i != 0 ) ids += ',';
ids += rows[i].get('APP_UID') + "|" + rows[i].get('TAS_UID')+ "|" + rows[i].get('DEL_INDEX');
}
storeReassignCases.setBaseParam( 'APP_UIDS', ids);
//storeReassignCases.setBaseParam( 'action', 'to_reassign');
storeReassignCases.load();
newPopUp.show();
comboUsersToReassign.disable();
//grid = reassignGrid.store.data;
//Ext.Msg.alert ( grid );
/*
for( var i =0; i < grid.length; i++) {
grid[i].data.APP_UID = grid[i].data.USERS[0];
}
*/
}
else {
Ext.Msg.show({
title:'',
msg: _('ID_NO_SELECTION_WARNING'),
buttons: Ext.Msg.INFO,
fn: function(){},
animEl: 'elId',
icon: Ext.MessageBox.INFO,
buttons: Ext.MessageBox.OK
});
}
}
},
failure: function ( result, request) {
if (typeof(result.responseText) != 'undefined') {
Ext.MessageBox.alert( _('ID_FAILED'), result.responseText);
}
}
});
}
function inArray(arr, obj) {
for(var i=0; i<arr.length; i++) {
if (arr[i] == obj) return true;
}
return false;
}
// Add the additional 'advanced' VTypes -- [Begin]
Ext.apply(Ext.form.VTypes, {
daterange : function(val, field) {
var date = field.parseDate(val);
if(!date){
return;
}
if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {
var start = Ext.getCmp(field.startDateField);
start.setMaxValue(date);
start.validate();
this.dateRangeMax = date;
}
else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {
var end = Ext.getCmp(field.endDateField);
end.setMinValue(date);
end.validate();
this.dateRangeMin = date;
}
/*
* Always return true since we're only using this vtype to set the
* min/max allowed values (these are tested for after the vtype test)
*/
return true;
}
});
// Add the additional 'advanced' VTypes -- [End]
});
function msgBox(title, msg, type){
if( typeof('type') == 'undefined' )
type = 'info';
switch(type){
case 'error':
icon = Ext.MessageBox.ERROR;
break;
case 'info':
default:
icon = Ext.MessageBox.INFO;
break;
}
Ext.Msg.show({
title: title,
msg: msg,
fn: function(){},
animEl: 'elId',
icon: icon,
buttons: Ext.MessageBox.OK
});
}
Ext.EventManager.on(window, 'beforeunload', function () {
if(casesNewTab) {
casesNewTab.close();
}
});