TaskContext=function(id){ Workflow.call(this,id); }; TaskContext.prototype=new Workflow; TaskContext.prototype.type="TaskContext"; TaskContext.prototype.editTaskSteps = function(_3252){ var taskExtObj = new TaskContext(); var ProcMapObj= new ProcessMapContext(); var taskId = _3252.scope.workflow.currentSelection.id; var stepsFields = Ext.data.Record.create([ { name: 'STEP_TITLE', type: 'string' }, { name: 'STEP_UID', type: 'string' }, { name: 'STEP_TYPE_OBJ', type: 'string' }, { name: 'STEP_CONDITION', type: 'string' }, { name: 'STEP_POSITION', type: 'string' }, { name: 'STEP_MODE', type: 'string' }, { name: 'STEP_UID_OBJ', type: 'string' } ]); var editor = new Ext.ux.grid.RowEditor({ saveText: _('ID_UPDATE') }); var btnAdd = new Ext.Button({ id: 'btnAdd', text: _('ID_ASSIGN'), iconCls: 'button_menu_ext ss_sprite ss_add', handler: function(){ var User = grid.getStore(); var e = new stepsFields({ //STEP_TITLE: User.data.items[0].data.STEP_TITLE, STEP_UID : '', STEP_TYPE_OBJ : '', STEP_CONDITION : '', STEP_POSITION : '', STEP_MODE : '', STEP_UID_OBJ : '' }); if(availableSteps.data.items.length == 0) PMExt.notify( _('ID_STATUS') , _('ID_STEPS_UNAVAILABLE') ); else { editor.stopEditing(); taskSteps.insert(0, e); grid.getView().refresh(); //grid.getSelectionModel().selectRow(0); editor.startEditing(0, 0); } } }); var btnRemove = new Ext.Button({ id: 'btnRemove', text: _('ID_REMOVE'), iconCls: 'button_menu_ext ss_sprite ss_pencil', handler: function (s) { editor.stopEditing(); var s = grid.getSelectionModel().getSelections(); for(var i = 0, r; r = s[i]; i++){ //First Deleting step from Database using Ajax var stepUID = r.data.STEP_UID; var stepPosition = r.data.STEP_POSITION; //if STEP_UID is properly defined (i.e. set to valid value) then only delete the row //else its a BLANK ROW for which Ajax should not be called. if(r.data.STEP_UID != "") { Ext.Ajax.request({ url : '../steps/steps_Delete.php', method: 'POST', params: { TASK : taskId, STEP_UID : stepUID, STEP_POSITION : stepPosition }, success: function(response) { PMExt.notify( _('ID_STATUS') , _('ID_STEP_REMOVED') ); //Secondly deleting from Grid taskSteps.remove(r); //Reloading store after removing steps taskSteps.reload(); } }); } else taskSteps.remove(r); } } }); var tb = new Ext.Toolbar({ items: [btnAdd, btnRemove] }); // create the Data Store of all Steps that are already been assigned to a task var taskSteps = new Ext.data.JsonStore({ root : 'data', totalProperty: 'totalCount', idProperty : 'gridIndex', remoteSort : true, fields : stepsFields, proxy : new Ext.data.HttpProxy({ url : 'proxyExtjs?tid='+taskId+'&action=getAssignedSteps' }) }); taskSteps.load({params:{start : 0 , limit : 10 }}); // create the Data Store of all Steps that are not been assigned to a task i.e available steps var availableSteps = new Ext.data.JsonStore({ root : 'data', url : 'proxyExtjs?pid='+pro_uid+'&tid='+taskId+'&action=getAvailableSteps', totalProperty : 'totalCount', idProperty : 'gridIndex', remoteSort : false, autoLoad : true, fields : stepsFields }); availableSteps.load(); var btnStepsCondition = new Ext.Button({ id: 'btnCondition', text: _('ID_CONDITION'), handler: function (s) { workflow.taskUID = taskId workflow.variablesAction = 'grid'; workflow.variable = '@@', workflow.gridField = 'STEP_CONDITION'; var rowSelected = conditionGrid.getSelectionModel().getSelections(); if(rowSelected == '') workflow.gridObjectRowSelected = conditionGrid; else workflow.gridObjectRowSelected = rowSelected; var rowData = ProcMapObj.ExtVariables(); console.log(rowData); } }) var toolbar = new Ext.Toolbar({ items: [btnStepsCondition] }); //availableSteps.load(); var conditionGrid = new Ext.grid.GridPanel({ store : taskSteps, id : 'conditiongrid', loadMask : true, loadingText : 'Loading...', frame : false, autoHeight : false, //enableDragDrop : true, layout : 'form', tbar : toolbar, //ddGroup : 'firstGridDDGroup', clicksToEdit : 1, minHeight :400, height :400, plugins : [editor], columns : [{ id: 'STEP_TITLE', header: _('ID_STEPS'), dataIndex: 'STEP_TITLE', width: 280, editor: new Ext.form.TextField({ }) }, { id: 'STEP_CONDITION', header: _('ID_CONDITION'), dataIndex: 'STEP_CONDITION', width: 250, //editable: true, editor: new Ext.form.TextField({ editable : true }) } ] }); var grid = new Ext.grid.GridPanel({ store : taskSteps, id : 'mygrid', loadMask : true, loadingText : 'Loading...', //renderTo : 'cases-grid', frame : false, autoHeight : false, //enableDragDrop : true, //ddGroup : 'firstGridDDGroup', clicksToEdit: 1, minHeight :400, height :340, layout : 'form', plugins : [editor], columns : [{ id: 'STEP_TITLE', header: _('ID_STEPS'), dataIndex: 'STEP_TITLE', width: 200, sortable: true, editor: new Ext.form.ComboBox({ xtype : 'combo', fieldLabel : 'Users_groups', store : availableSteps, displayField : 'STEP_TITLE' , valueField : 'STEP_TITLE', scope : this, triggerAction: 'all', emptyText : 'Select Step', allowBlank : false, onSelect: function(record, index){ var User = grid.getStore(); if(typeof _3252.scope.workflow.currentrowIndex == 'undefined') var selectedrowIndex = '0'; else selectedrowIndex = _3252.scope.workflow.currentrowIndex; //getting Index of the row that has been edited //User.data.items[0].data.STEP_TITLE= record.data.STEP_TITLE; User.data.items[selectedrowIndex].data.STEP_UID = record.data.STEP_UID; User.data.items[selectedrowIndex].data.STEP_TYPE_OBJ =record.data.STEP_TYPE_OBJ; User.data.items[selectedrowIndex].data.STEP_CONDITION =record.data.STEP_CONDITION; User.data.items[selectedrowIndex].data.STEP_POSITION =record.data.STEP_POSITION; User.data.items[selectedrowIndex].data.STEP_UID_OBJ =record.data.STEP_UID_OBJ; User.data.items[selectedrowIndex].data.STEP_MODE =record.data.STEP_MODE; this.setValue(record.data[this.valueField || this.displayField]); this.collapse(); } }) }, { id: 'STEP_MODE', header: _('STEP_MODE'), dataIndex: 'STEP_MODE', width: 100, sortable: true, editor: new Ext.form.ComboBox ({ editable : false, triggerAction: 'all', lazyRender:true, allowBlank : false, emptyText : 'Select Mode', mode: 'local', scope: this, store: new Ext.data.ArrayStore({ id: 0, fields: [ 'STEP_MODE', 'STEP_MODE' ], data: [['EDIT', 'Edit'], ['VIEW', 'View']] }), valueField: 'STEP_MODE', defaultValue: 'EDIT', displayField: 'STEP_MODE', onSelect: function(record, index){ var User = grid.getStore(); User.data.items[0].data.STEP_MODE=record.data.STEP_MODE; this.setValue(record.data[this.valueField || this.displayField]); this.collapse(); } }) }, { sortable: false, renderer: function() { return String.format("Edit",pro_uid,taskId); } } ], sm: new Ext.grid.RowSelectionModel({ singleSelect: true, listeners: { rowselect: function(smObj, rowIndex, record) { _3252.scope.workflow.currentrowIndex = rowIndex; } } }), stripeRows: true, viewConfig: {forceFit: true}, tbar: tb, bbar: new Ext.PagingToolbar({ pageSize: 10, store: taskSteps, displayInfo: true, displayMsg: 'Displaying Steps {0} - {1} of {2}', emptyMsg: "No Steps to display", items:[] }) }); editor.on({ scope: this, afteredit: function(roweditor, changes, record, rowIndex) { var stepUIDObj = record.data.STEP_UID_OBJ; var stepTypeObj = record.data.STEP_TYPE_OBJ; var stepMode = record.data.STEP_MODE; Ext.Ajax.request({ url : '../steps/steps_Save.php', method: 'POST', params: { sProcess : pro_uid, sTask : taskId, sType : stepTypeObj, sUID : stepUIDObj, sMode : stepMode }, success: function(response) { PMExt.notify( _('ID_STATUS') , _('ID_STEP_ASSIGNED') ); } }); //availableSteps.reload(); //Deleting previously assigned step on updating/replacing with new step. if(changes != '' && typeof record.json != 'undefined') { var stepUID = record.json.STEP_UID; var stepPosition = record.json.STEP_POSITION; Ext.Ajax.request({ url : '../steps/steps_Delete.php', method: 'POST', params: { TASK : taskId, STEP_UID : stepUID, STEP_POSITION : stepPosition }, success: function(response) { //Ext.MessageBox.alert ('Status','Step has been updated successfully.'); } }); } } }); //Getting triggers data using stepTriggers function var treeGrid = taskExtObj.stepTriggers(_3252); treeGrid.render(document.body); var taskStepsTabs = new Ext.FormPanel({ labelWidth: 100, monitorValid : true, width : 850, height : 400, items: { xtype:'tabpanel', activeTab: 0, defaults:{ autoHeight:true }, items:[{ title:_('ID_STEPS'), layout:'fit', defaults: { width: 400 }, listeners: { tabchange: function(tabPanel,newTab){ taskSteps.reload(); } }, items:[grid] },{ title:_('ID_CONDITION'), layout:'fit', defaults: { width: 400 }, listeners: { tabchange: function(tabPanel,newTab){ taskSteps.reload(); } }, items:[conditionGrid] },{ title:_('ID_TRIGGERS'), layout:'form', defaults: { width: 400 }, items:[treeGrid] }] } }); taskStepsTabs.render(document.body); _3252.scope.workflow.taskStepsTabs = taskStepsTabs; var window = new Ext.Window({ title: _('ID_STEPS_OF'), collapsible: false, maximizable: false, width: 770, height: 380, minWidth: 200, minHeight: 150, layout: 'fit', plain: true, buttonAlign: 'center', items: taskStepsTabs }); window.show(); } TaskContext.prototype.editUsers= function() { var taskExtObj = new TaskContext(); var taskId = workflow.currentSelection.id; var userFields = Ext.data.Record.create([ { name: 'LABEL', type: 'string' }, { name: 'TU_TYPE', type: 'string' }, { name: 'TU_RELATION', type: 'string' }, { name: 'TAS_UID', type: 'string' }, { name: 'USR_UID', type: 'string' } ]); var editor = new Ext.ux.grid.RowEditor({ saveText: _('ID_UPDATE') }); var btnAdd = new Ext.Button({ id: 'btnAdd', text: _('ID_ASSIGN'), iconCls: 'button_menu_ext ss_sprite ss_add', handler: function(){ var User = grid.getStore(); var e = new userFields({ TAS_UID : '', TU_TYPE : '', USR_UID : '', TU_RELATION: '' }); //storeUsers.reload(); if(storeUsers.data.items.length == 0) PMExt.notify( _('ID_STATUS') , _('ID_USERS_UNAVAILABLE') ); else { editor.stopEditing(); taskUsers.insert(0, e); grid.getView().refresh(); editor.startEditing(0, 0); } } }); var btnRemove = new Ext.Button({ id: 'btnRemove', text: _('ID_REMOVE'), iconCls: 'application_delete', handler: function (s) { editor.stopEditing(); var s = grid.getSelectionModel().getSelections(); for(var i = 0, r; r = s[i]; i++){ //First Deleting assigned users from Database var user_TURel = r.data.TU_RELATION; var userUID = r.data.USR_UID; var user_TUtype = r.data.TU_TYPE; var urlparams = '?action=ofToAssign&data={"TAS_UID":"'+taskId+'","TU_RELATION":"'+user_TURel+'","USR_UID":"'+userUID+'","TU_TYPE":"'+user_TUtype+'"}'; //if USR_UID is properly defined (i.e. set to valid value) then only delete the row //else its a BLANK ROW for which Ajax should not be called. if(r.data.USR_UID != "") { Ext.Ajax.request({ url : 'processes_Ajax.php' +urlparams , success: function(response) { PMExt.notify( _('ID_STATUS') , _('ID_USERS_REMOVED') ); //Secondly deleting from Grid taskUsers.remove(r); //Reloading available user store taskUsers.reload(); } }); } else taskUsers.remove(r); } } }); var tb = new Ext.Toolbar({ items: [btnAdd, btnRemove] }); // create the Data Store of users that are already assigned to a task var taskUsers = new Ext.data.JsonStore({ root : 'data', totalProperty: 'totalCount', idProperty : 'gridIndex', remoteSort : true, fields : userFields, proxy: new Ext.data.HttpProxy({ url: 'proxyExtjs?pid='+pro_uid+'&tid='+taskId+'&action=getAssignedUsersList' }) }); taskUsers.setDefaultSort('LABEL', 'asc'); // create the Data Store of users that are not assigned to a task var storeUsers = new Ext.data.JsonStore({ root : 'data', url : 'proxyExtjs?tid='+taskId+'&action=getAvailableUsersList', totalProperty : 'totalCount', idProperty : 'gridIndex', remoteSort : false, //true, autoLoad : true, fields : userFields }); storeUsers.load(); var grid = new Ext.grid.GridPanel({ store: taskUsers, id : 'mygrid', loadMask: true, loadingText: 'Loading...', //renderTo: 'cases-grid', frame: false, autoHeight:false, clicksToEdit: 1, minHeight:400, height :320, layout: 'fit', plugins: [editor], cm: new Ext.grid.ColumnModel({ defaults: { width: 200, sortable: true }, columns: [ new Ext.grid.RowNumberer(), { id: 'LABEL', header:_('ID_GROUP_USER'), dataIndex: 'LABEL', width: 100, editor: new Ext.form.ComboBox({ xtype: 'combo', fieldLabel: 'Users_groups', hiddenName: 'number', store : storeUsers, displayField : 'LABEL' , valueField : 'LABEL', name : 'LABEL', triggerAction: 'all', emptyText: 'Select User or Group', allowBlank: false, onSelect: function(record, index){ var User = grid.getStore(); if(typeof workflow.currentrowIndex == 'undefined') var selectedrowIndex = '0'; else selectedrowIndex = workflow.currentrowIndex; //getting Index of the row that has been edited //User.data.items[0].data.LABEL= record.data.LABEL; User.data.items[selectedrowIndex].data.TAS_UID = record.data.TAS_UID; User.data.items[selectedrowIndex].data.TU_TYPE = record.data.TU_TYPE; User.data.items[selectedrowIndex].data.USR_UID = record.data.USR_UID; User.data.items[selectedrowIndex].data.TU_RELATION = record.data.TU_RELATION; this.setValue(record.data[this.valueField || this.displayField]); this.collapse(); } }) }, ] }), sm: new Ext.grid.RowSelectionModel({ singleSelect: true, listeners: { rowselect: function(smObj, rowIndex, record) { workflow.currentrowIndex = rowIndex; } } }), stripeRows: true, viewConfig: {forceFit: true}, bbar: new Ext.PagingToolbar({ pageSize: 10, store: taskUsers, displayInfo: true, displayMsg: 'Displaying Users {0} - {1} of {2}', emptyMsg: "No Users to display", items:[] }), tbar: tb }); taskUsers.load({params:{start : 0 , limit : 10 }}); editor.on({ scope: this, afteredit: function(roweditor, changes, record, rowIndex) { var taskId = record.data.TAS_UID; var userId = record.data.USR_UID; var tu_Type = record.data.TU_TYPE; var tu_Relation = record.data.TU_RELATION; var urlparams = '?action=assign&data={"TAS_UID":"'+taskId+'","USR_UID":"'+userId+'","TU_TYPE":"'+tu_Type+'","TU_RELATION":"'+tu_Relation+'"}'; Ext.Ajax.request({ url: 'processes_Ajax.php' +urlparams , success: function (response) { // When saving data success PMExt.notify( _('ID_STATUS') , _('ID_USER_ASSIGNED') ); }, failure: function () { // when saving data failed PMExt.notify( _('ID_STATUS') , _('ID_USER_SAVE_FAIL') ); } }); //Updating the user incase if already assigned user has been replaced by other user if(changes != '' && typeof record.json != 'undefined') { var user_TURel = record.json.TU_RELATION; var userUID = record.json.USR_UID; var user_TUtype = record.json.TU_TYPE; urlparams = '?action=ofToAssign&data={"TAS_UID":"'+taskId+'","TU_RELATION":"'+user_TURel+'","USR_UID":"'+userUID+'","TU_TYPE":"'+user_TUtype+'"}'; Ext.Ajax.request({ url : 'processes_Ajax.php' +urlparams , success: function(response) { //Ext.MessageBox.alert ('Status','User has been updated successfully.'); } }); } storeUsers.reload(); } }); var panel = new Ext.Panel({ id: 'panel', //renderTo: Ext.getBody(), items: [grid] }); var window = new Ext.Window({ title: _('ID_USERS_GROUPS'), collapsible: false, maximizable: false, width: 400, height: 350, minWidth: 200, minHeight: 150, //layout: 'fit', plain: true, buttonAlign: 'center', items: panel }); window.show(); } TaskContext.prototype.editTaskProperties= function() { var ProcMapObj = new ProcessMapContext(); var taskExtObj = new TaskContext(); var taskId = workflow.currentSelection.id; var oPmosExt = new pmosExt(); var fieldsToToggle = new Array(); var taskPropertiesTabs = new Ext.FormPanel({ labelWidth : 140, //border : false, monitorValid : true, // store : taskDetails, //url : 'proxyTaskPropertiesDetails.php', width : 600, items: [{ xtype:'tabpanel', activeTab: 0, bodyStyle : 'padding:5px 0 0 5px;', defaults:{ labelWidth : 140, height : 300 }, items:[ { title:_('ID_DEFINITION'), layout:'form', defaults: { width: 230 }, defaultType: 'textfield', items: [{ fieldLabel: _('ID_TITLE'), name: 'TAS_TITLE', width: 350 },{ xtype: 'textarea', fieldLabel: _('ID_DESCRIPTION'), name: 'TAS_DESCRIPTION', allowBlank: true, width: 350, height : 150 },{ xtype: 'fieldset', layout:'column', border : false, width: 550, items:[{ columnWidth:.7, layout: 'form', border : false, items: [{ xtype: 'textfield', labelWidth : 130, fieldLabel: _('ID_VARIABLES_CASE_PRIORITY'), name: 'TAS_PRIORITY_VARIABLE', anchor:'100%' }] },{ columnWidth:.2, layout: 'form', border:false, items: [{ xtype:'button', title: ' ', text: '@@', name: 'selectorigin', handler: function (s) { workflow.variablesAction = 'form'; workflow.fieldName = 'TAS_PRIORITY_VARIABLE' ; workflow.formSelected = taskPropertiesTabs; var rowData = ProcMapObj.ExtVariables(); console.log(rowData); } }] }] },{ xtype: 'checkbox', fieldLabel: _('ID_START_TASK'), name: 'TAS_START', checked:workflow.checkStartingTask }] },{ title:_('ID_ASSIGNMENT_RULES'), layout : 'form', defaults: { width: 260 }, items: [{ xtype: 'radiogroup', //id: 'assignType', fieldLabel: _('ID_CASES_ASSIGNED_BY'), itemCls: 'x-check-group-alt', columns: 1, items: [{ boxLabel: _('ID_CYCLIC_ASSIGNMENT'), //id: 'BALANCED', name: 'TAS_ASSIGN_TYPE', inputValue: 'BALANCED', checked: false // listeners: { // 'check':{ // fn: function(){ // Ext.getCmp("staticMI").hide(); // Ext.getCmp("cancelMI").hide(); // Ext.getCmp("evaluate").hide(); // } // } // } },{ boxLabel: _('ID_MANUAL_ASSIGNMENT'), // id: 'MANUAL', name: 'TAS_ASSIGN_TYPE', inputValue: 'MANUAL', checked:false // listeners: { // 'check':{ // fn: function(){ // Ext.getCmp("staticMI").hide(); // Ext.getCmp("cancelMI").hide(); // Ext.getCmp("evaluate").hide(); // } // } // } },{ boxLabel: _('ID_VALUE_BASED'), //id:'EVALUATE', name: 'TAS_ASSIGN_TYPE', inputValue: 'EVALUATE', checked:false // listeners: { // 'check':{ // fn: function(){ // var fields = workflow.taskPropertiesTabs.items.items[0].items.items[1].items.items; // var fieldsToToggle = new Array(); // fieldsToToggle = [fields[1].items.items[0].items.items[0]]; // oPmosExt.toggleFields(fieldsToToggle,true); // } // } // } },{ boxLabel: _('ID_REPORTS_TO'), //id:'REPORT_TO', name: 'TAS_ASSIGN_TYPE', inputValue: 'REPORT_TO', checked:false // listeners: { // 'check':{ // fn: function(){ // Ext.getCmp("staticMI").hide(); // Ext.getCmp("cancelMI").hide(); // Ext.getCmp("evaluate").hide(); // } // } // } },{ boxLabel: _('ID_SELF_SERVICE'), //id:'SELF_SERVICE', name: 'TAS_ASSIGN_TYPE', inputValue: 'SELF_SERVICE', checked:false // listeners: { // 'check': // {fn: function(){ // //fieldsToToggle = [fields[0],fields[1],fields[2],fields[3],fields[4],fields[5],fields[6],fields[7],fields[8]] // Ext.getCmp("staticMI").hide(); // Ext.getCmp("cancelMI").hide(); // Ext.getCmp("evaluate").hide(); // } // } // } },{ boxLabel: _('ID_STATIC_PARTIAL_JOIN_MULTIPLE_INSTANCES'), //id:'STATIC_MI', name: 'TAS_ASSIGN_TYPE', inputValue: 'STATIC_MI', checked:false // listeners: { // 'check':{ // fn: function(){ // Ext.getCmp("staticMI").show(); // Ext.getCmp("cancelMI").show(); // Ext.getCmp("evaluate").hide(); // } // } // } },{ boxLabel: _('ID_CANCEL_PARTIAL_JOIN_MULTIPLE_INSTANCE'), //id : 'CANCEL_MI', name : 'TAS_ASSIGN_TYPE', inputValue: 'CANCEL_MI', checked:false // listeners: { // 'check':{ // fn: function(){ // Ext.getCmp("staticMI").show(); // Ext.getCmp("cancelMI").show(); // Ext.getCmp("evaluate").hide(); // } // } // } }] },{ xtype: 'fieldset', layout:'column', border:false, width: 550, hidden: true, id: 'evaluate', items:[{ columnWidth:.8, layout: 'form', border:false, items: [{ xtype: 'textfield', fieldLabel: _('ID_VARIABLES_VALUE_ASSIGNMENT'), name: 'TAS_ASSIGN_VARIABLE', anchor:'100%' }] },{ columnWidth:.2, layout: 'form', border:false, items: [{ xtype:'button', title: ' ', text: '@@', name: 'selectorigin' }] } ] },{ xtype: 'fieldset', layout:'column', border:false, width: 550, hidden: true, id: 'staticMI', items:[{ columnWidth:.8, layout: 'form', border:false, items: [{ xtype: 'textfield', fieldLabel: _('ID_VARIABLES_NO_INSTANCES'), name: 'TAS_MI_INSTANCE_VARIABLE', anchor:'100%' }] },{ columnWidth:.2, layout: 'form', border:false, items: [{ xtype:'button', title: ' ', text: '@@', name: 'selectorigin' }] }] },{ xtype: 'fieldset', layout:'column', border:false, width: 550, hidden: true, id: 'cancelMI', items:[{ columnWidth:.8, layout: 'form', border:false, items: [{ xtype: 'textfield', fieldLabel: _('ID_VARIABLES_INSTANCES_TO _COMPLETE'), name: 'TAS_MI_COMPLETE_VARIABLE', anchor:'100%' }] },{ columnWidth:.2, layout: 'form', border:false, items: [{ xtype:'button', title: ' ', text: '@@', name: 'selectorigin' }] }] }] },{ title:'Timing Control Rules', layout:'form', defaults: { width: 260 }, defaultType: 'textfield', items: [{ xtype: 'checkbox', boxLabel: _('ID_USER_DEFINED_TIMING_CONTROL'), name: 'TAS_TRANSFER_FLY', checked: 'TAS_TRANSFER_FLY', labelWidth: 100, listeners: { /**Listeners for hiding all the fields * under "Timing Control Rules" tabs * when user clicks on 'Allow user defined timing control' checkbox **/ check : function(a,checked,c) { if(checked == true) Ext.getCmp("userDefinedTiming").hide(); else Ext.getCmp("userDefinedTiming").show(); } } },{ xtype: 'fieldset', layout:'form', border:false, width: 550, hidden: false, id: 'userDefinedTiming', items:[{ xtype: 'textfield', fieldLabel: _('ID_TASK_DURATION'), name: 'TAS_DURATION', width : 100, allowBlank:false },{ width: 100, xtype: 'combo', mode: 'local', triggerAction: 'all', forceSelection: true, editable: false, fieldLabel: _('ID_TIME_UNIT'), name: 'TAS_TIMEUNIT', hiddenName: 'TAS_TIMEUNIT', displayField: 'name', valueField: 'value', store: new Ext.data.JsonStore({ fields : ['name', 'value'], data : [ { name : 'Days', value: 'Days' },{ name : 'Hours', value: 'Hours' }] }) },{ width: 120, xtype: 'combo', mode: 'local', //value: '- None -', triggerAction: 'all', forceSelection: true, editable: false, fieldLabel: _('ID_COUNT_DAYS'), name: 'TAS_TYPE_DAY', hiddenName: 'TAS_TYPE_DAY', displayField: 'name', //value: 'TAS_TYPE_DAY', valueField: 'value', store: new Ext.data.JsonStore({ fields : ['name', 'value'], data : [ { name : 'Work Days', value: '1' }, { name : 'Calendar Days', value: '2' }, ] }) },{ width: 100, xtype: 'combo', mode: 'local', value: 'Default', forceSelection: true, triggerAction: 'all', editable: false, fieldLabel: _('ID_CALENDAR'), name: 'TAS_CALENDAR', hiddenName: 'TAS_CALENDAR', displayField: 'name', valueField: 'value', store: new Ext.data.JsonStore({ fields : ['name', 'value'], data : [ { name : '- None-', value: '- None-' }, { name : 'Default', value: 'Default' }, ] }) }] }] },{ title:_('ID_PERMISSION'), layout:'form', defaults: { width: 260 }, defaultType: 'textfield', labelWidth: 200, items: [{ xtype: 'checkbox', //id: 'ADHOC', fieldLabel: _('ID_ALLOW_ARBITARY_TRANSFER'), inputValue:'ADHOC', checked: false, name: 'TAS_TYPE' }] },{ title:_('ID_CASE_LABELS'), layout:'form', defaults: { width: 600 }, defaultType: 'textfield', labelWidth: 70, items: [{ xtype: 'fieldset', layout:'column', border:false, width: 600, items:[{ columnWidth:.8, layout: 'form', border:false, items: [{ xtype: 'textarea', fieldLabel: _('ID_CASE_TITLE'), //id: 'caseTitle', name: 'TAS_DEF_TITLE', height : 120, //value: _5625.scope.workflow.taskDetails.TAS_ASSIGN_VARIABLE anchor:'100%' }] },{ columnWidth:.2, layout: 'form', border:false, items: [{ xtype:'button', title: ' ', text: '@#', name: 'selectCaseTitle', handler: function (s) { workflow.variablesAction = 'form'; workflow.variable = '@%23', workflow.fieldName = 'TAS_DEF_TITLE' ; workflow.formSelected = taskPropertiesTabs; var rowData = ProcMapObj.ExtVariables(); console.log(rowData); } }] }] },{ xtype: 'fieldset', layout:'column', border:false, width: 600, items:[{ columnWidth:.8, layout: 'form', border:false, items: [{ xtype: 'textarea', //id: 'caseDescription', fieldLabel: _('ID_CASE_DESCRIPTION'), name: 'TAS_DEF_DESCRIPTION', height : 120, anchor:'100%' }] },{ columnWidth:.2, layout: 'form', border:false, items: [{ xtype:'button', title: ' ', text: '@#', name: 'selectCaseDesc', handler: function (s) { workflow.variablesAction = 'form'; workflow.variable = '@%23', workflow.fieldName= 'TAS_DEF_DESCRIPTION' ; workflow.formSelected = taskPropertiesTabs; var rowData = ProcMapObj.ExtVariables(); console.log(rowData); } }] }] }] },{ title:_('ID_NOTIFICATION'), layout:'form', defaultType: 'textfield', labelWidth: 170, items: [{ xtype: 'checkbox', boxLabel: _('ID_NOTIFY_USERS_AFTER_ASSIGN'), labelWidth: 100, name: 'SEND_EMAIL', checked: 'TAS_DEF_MESSAGE_CHECKBOX', listeners: { /**Listeners for showing "TAS_DEF_MESSAGE" textarea field * under "Notification" tab * when user clicks on 'After routing notify the next assigned user(s).' checkbox **/ check : function(a,checked,c) { if(checked == true) Ext.getCmp("notifyUser").show(); else Ext.getCmp("notifyUser").hide(); } } },{ xtype: 'fieldset', id: 'notifyUser', border: false, defaults: { width: 400 }, labelWidth: 50, hidden: true, items :[{ xtype: 'textarea', name: 'TAS_DEF_MESSAGE', width: 400, height : 180 }] }] } ] }] }); workflow.taskPropertiesTabs = taskPropertiesTabs; //Loading Task Details into the form taskPropertiesTabs.form.load({ url:'proxyExtjs.php?tid='+taskId+'&action=getTaskPropertiesList', method:'GET', waitMsg:'Loading', success:function(form, action) { alert(action.result.data.TAS_START); if(action.result.data.TAS_START== true) workflow.checkStartingTask = 'on'; else workflow.checkStartingTask = 'off'; //To load the values of the selecte radio button in Assignment Rules if(action.result.data.TAS_ASSIGN_TYPE=='BALANCED') form.items.items[4].items[0].checked=true; else if(action.result.data.TAS_ASSIGN_TYPE=='MANUAL') { form.items.items[4].items[1].checked=true; //Ext.getCmp(ID).setValue(true); //taskPropertiesTabs.getForm().findField('TAS_ASSIGN_TYPE').setValue(true); } else if(action.result.data.TAS_ASSIGN_TYPE=='EVALUATE') { form.items.items[4].items[2].checked=true; taskPropertiesTabs.getForm().findField('TAS_ASSIGN_VARIABLE').show(); } else if(action.result.data.TAS_ASSIGN_TYPE=='REPORT_TO') form.items.items[4].items[3].checked=true; else if(action.result.data.TAS_ASSIGN_TYPE=='SELF_SERVICE') {form.items.items[4].items[4].checked=true; Ext.getCmp("staticMI").hide(); Ext.getCmp("cancelMI").hide();} else if(action.result.data.TAS_ASSIGN_TYPE=='STATIC_MI') { form.items.items[4].items[5].checked=true; Ext.getCmp("staticMI").show(); Ext.getCmp("cancelMI").show(); Ext.getCmp("evaluate").hide(); } else if(action.result.data.TAS_ASSIGN_TYPE=='CANCEL_MI') { form.items.items[4].items[6].checked=true; Ext.getCmp("staticMI").show(); Ext.getCmp("cancelMI").show(); Ext.getCmp("evaluate").hide(); } if(action.result.data.TAS_TYPE == 'ADHOC') form.items.items[13].checked=false; else form.items.items[13].checked=true; if(action.result.data.TAS_ASSIGN_TYPE == 'EVALUATE') form.findField('TAS_ASSIGN_VARIABLE').show(); }, failure:function(form, action) { PMExt.notify( _('ID_STATUS') , _('ID_FAILURE') ); } }); taskPropertiesTabs.render(document.body); workflow.taskPropertiesTabs = taskPropertiesTabs; var window = new Ext.Window({ title: _('ID_TASK'), collapsible: false, maximizable: false, width: 600, height: 370, minWidth: 300, minHeight: 150, layout: 'fit', plain: true, buttonAlign: 'center', items: taskPropertiesTabs, buttons: [{ text: _('ID_SAVE'), formBind :true, handler: function(){ //var getstore = taskPropertiesTabs.getStore(); //var getData = getstore.data.items; taskExtObj.saveTaskProperties(); //window.hide(); } },{ text: _('ID_CANCEL'), handler: function(){ // when this button clicked, window.hide(); } }] }); window.show(); } TaskContext.prototype.saveTaskProperties= function() { var saveTaskform = workflow.taskPropertiesTabs.getForm().getValues(); var taskId = workflow.currentSelection.id; var tas_start = saveTaskform['TAS_START']; var tas_type = saveTaskform['TAS_TYPE']; var tas_transfer_fly = saveTaskform['TAS_TRANSFER_FLY']; var send_email = saveTaskform['SEND_EMAIL']; saveTaskform['TAS_UID'] = taskId; alert(tas_start); //Checking checkbox fields // if(typeof tas_start != 'undefined' && tas_start != ''){ // if(tas_start == 'on') // saveTaskform['TAS_START'] = 'TRUE'; // else // saveTaskform['TAS_START'] = 'FALSE'; // } if(tas_start == 'on') tas_start = true; else if(typeof tas_start == 'undefined') tas_start = false; if(typeof tas_transfer_fly != 'undefined' && tas_transfer_fly != ''){ if(tas_transfer_fly == 'on') saveTaskform['TAS_TRANSFER_FLY'] = 'TRUE'; else saveTaskform['TAS_TRANSFER_FLY'] = 'FALSE'; } if(typeof send_email != 'undefined' && send_email != ''){ if(send_email == 'on') saveTaskform['SEND_EMAIL'] = 'TRUE'; else send_email['SEND_EMAIL'] = 'FALSE'; } if(typeof tas_type != 'undefined' && tas_type != ''){ if(tas_type == 'on') saveTaskform['TAS_TYPE'] = 'ADHOC'; else saveTaskform['TAS_TYPE'] = 'NORMAL'; } var object_data = Ext.util.JSON.encode(saveTaskform); Ext.Ajax.request({ url: '../tasks/tasks_Ajax.php' , success: function (response) { // When saving data success PMExt.notify( _('ID_STATUS') , _('ID_TASK_PROPERTIES_SAVE') ); }, failure: function () { // when saving data failed PMExt.notify( _('ID_STATUS') , _('ID_ERROR_TASK_SAVE') ); }, params: { functions:'saveTaskData', oData:object_data } }); } TaskContext.prototype.stepTriggers = function() { var taskId = workflow.currentSelection.id; var ProcMapObj= new ProcessMapContext(); var triggersFields = Ext.data.Record.create([ { name: 'CON_VALUE', type: 'string' }, { name: 'ST_TYPE', type: 'string' }, { name: 'STEP_UID', type: 'string' }, { name: 'TRI_UID', type: 'string' }, { name: 'ST_POSITION', type: 'string' }, { name: 'TRI_TITLE', type: 'string' }, { name: 'ST_CONDITION', type: 'string' } ]); var triggerEditor = new Ext.ux.grid.RowEditor({ saveText: _('ID_UPDATE') }); var root = new Ext.tree.AsyncTreeNode({text: 'treeRoot',id:'0'}); var tree = new Ext.tree.TreePanel({ //renderTo : 'cases-grid', dataUrl : 'get-triggers-tree.php?tid='+taskId, border : false, rootVisible : false, height : 320, width : 230, useArrows : false, autoScroll : true, animate : true }); tree.setRootNode(root); root.expand(true); tree.on('click', function (node){ if(node.isLeaf()){ var sStepUID = node.attributes.id; workflow.selectedStepUID = sStepUID; stepsTriggers.on({ beforeload: { fn: function (store, options) { // use {@link Ext.data.HttpProxy#setUrl setUrl} to change the URL for *just* this request. var link = 'proxyExtjs?tid='+taskId+'&stepid='+sStepUID+'&action=getAssignedStepTriggers'; store.proxy.setUrl(link, true); } } }); availableTriggers.on({ beforeload: { fn: function (store, options) { // use {@link Ext.data.HttpProxy#setUrl setUrl} to change the URL for *just* this request. var link = 'proxyExtjs?pid='+pro_uid+'&tid='+taskId+'&stepid='+sStepUID+'&action=getAvailableStepTriggers'; store.proxy.setUrl(link, true); } } }); triggerGrid.store.load(); availableTriggers.load(); //availableTriggers.reload(); triggerGrid.show(); } else triggerGrid.hide(); }); var addBtn = new Ext.Button({ id: 'addBtn', text: _('ID_ADD'), iconCls: 'button_menu_ext ss_sprite ss_add', handler: function(){ //var User = triggerGrid.getStore(); var e1 = new triggersFields({ //STEP_TITLE: User.data.items[0].data.STEP_TITLE, CON_VALUE : '', ST_TYPE : '', STEP_UID : '', TRI_UID : '', ST_POSITION : '', ST_CONDITION : '', TRI_TITLE : '' }); if(availableTriggers.data.items.length == 0) PMExt.notify( _('ID_STATUS') , _('ID_TRIGGERS_UNAVAILABLE') ); else { triggerEditor.stopEditing(); stepsTriggers.insert(0, e1); triggerGrid.getView().refresh(); //triggerGrid.getSelectionModel().selectRow(0); triggerEditor.startEditing(0, 0); } } }); var removeBtn = new Ext.Button({ id: 'removeBtn', text: _('ID_REMOVE'), iconCls: 'button_menu_ext ss_sprite ss_delete', handler: function (s) { triggerEditor.stopEditing(); var s = triggerGrid.getSelectionModel().getSelections(); for(var i = 0, r; r = s[i]; i++){ //First Deleting step from Database using Ajax var stepUID = r.data.STEP_UID; var sTrigger = r.data.TRI_UID; var sType = r.data.ST_TYPE; var iPosition = r.data.ST_POSITION; var urlparams = '?action=ofToAssignTrigger&sStep=' + stepUID + '&sTrigger=' + sTrigger + '&sType=' + sType + '&iPosition=' + iPosition //if STEP_UID is properly defined (i.e. set to valid value) then only delete the row //else its a BLANK ROW for which Ajax should not be called. if(r.data.STEP_UID != "") { Ext.Ajax.request({ url : '../steps/steps_Ajax.php' + urlparams, success: function(response) { PMExt.notify( _('ID_STATUS') , _('ID_TRIGGER_REMOVE') ); //Secondly deleting from Grid stepsTriggers.remove(r); availableTriggers.reload(); } }); } else stepsTriggers.remove(r); } } }); var btnTriggerCondition = new Ext.Button({ //id: 'btnCondition', text: _('ID_CONDITION'), handler: function (s) { workflow.variablesAction = 'grid'; workflow.variable = '@@', workflow.gridField = 'ST_CONDITION'; var rowSelected = triggerGrid.getSelectionModel().getSelections(); if(rowSelected == '') workflow.gridObjectRowSelected = triggerGrid; else workflow.gridObjectRowSelected = rowSelected; //var rowSelected = Objectsgrid; //workflow.gridObject = Objectsgrid; var rowData = ProcMapObj.ExtVariables(); } }); var toolBar = new Ext.Toolbar({ items: [addBtn, removeBtn, btnTriggerCondition] }); // create the Data Store of users that are already assigned to a task var stepsTriggers = new Ext.data.JsonStore({ root : 'data', url : 'proxyExtjs?tid='+taskId+'&action=',//+'&stepid='+workflow.selectedStepUID, totalProperty : 'totalCount', idProperty : 'gridIndex', remoteSort : true, fields : triggersFields }); //taskUsers.setDefaultSort('LABEL', 'asc'); stepsTriggers.load({params:{start : 0 , limit : 5 }}); var availableTriggers = new Ext.data.JsonStore({ root : 'data', url : 'proxyExtjs?pid='+pro_uid+'&tid='+taskId+'&action=',//+'&stepid='+workflow.selectedStepUID, totalProperty : 'totalCount', idProperty : 'gridIndex', remoteSort : false, //true, autoLoad : true, fields : triggersFields }); //availableTriggers.load(); var triggerGrid = new Ext.grid.GridPanel({ store: stepsTriggers, id : 'triggerGrid', //cm: cm, loadMask: true, loadingText: 'Loading...', //renderTo: 'cases-grid', frame: false, autoHeight:false, hidden :true, clicksToEdit: 1, width : 450, minHeight:400, height :320, layout: 'fit', plugins: [triggerEditor], columns: [ new Ext.grid.RowNumberer(), { id: 'blank', hidden : true, //width:0, editable: true, editor: new Ext.form.TextField({ allowBlank: true }) }, { id: 'CON_VALUE', header: _('ID_TRIGGERS'), dataIndex: 'CON_VALUE', //width: 200, sortable: true, editor: new Ext.form.ComboBox({ id : 'available', xtype : 'combo', fieldLabel : 'Users_groups', hiddenName : 'number', store : availableTriggers, displayField : 'CON_VALUE', valueField : 'CON_VALUE', name : 'CON_VALUE', scope : this, triggerAction: 'all', emptyText : 'Select Triggers', allowBlank : false, onSelect : function(record, index){ var triggerStore = triggerGrid.getStore(); if(typeof workflow.currentRowTrigger == 'undefined') var selectedrowIndex = '0'; else selectedrowIndex = workflow.currentRowTrigger; //getting Index of the row that has been edited //User.data.items[0].data.CON_VALUE = record.data.CON_VALUE; triggerStore.data.items[selectedrowIndex].data.ST_TYPE = record.data.ST_TYPE; triggerStore.data.items[selectedrowIndex].data.STEP_UID = record.data.STEP_UID; triggerStore.data.items[selectedrowIndex].data.TRI_UID = record.data.TRI_UID; triggerStore.data.items[selectedrowIndex].data.ST_POSITION = record.data.ST_POSITION; triggerStore.data.items[selectedrowIndex].data.TRI_TITLE = record.data.TRI_TITLE; workflow.currentrowIndex = '0'; this.setValue(record.data[this.valueField || this.displayField]); this.collapse(); } }) }, { //id: 'STEP_TITLE', header: _('ID_CONDITION'), dataIndex: 'ST_CONDITION', //width: 200, editable: true, editor: new Ext.form.TextField({ allowBlank: true }) } ], sm: new Ext.grid.RowSelectionModel({ singleSelect: true, listeners: { rowselect: function(smObj, rowIndex, record) { workflow.currentRowTrigger = rowIndex; } } }), stripeRows: true, viewConfig: {forceFit: true}, bbar: new Ext.PagingToolbar({ pageSize: 5, store: stepsTriggers, displayInfo: true, displayMsg: 'Displaying Step Tiggers {0} - {1} of {2}', emptyMsg: "No Step Tiggers to display", items:[] }), tbar: toolBar }); triggerEditor.on({ scope: this, afteredit: function(roweditor, changes, record, rowIndex) { var stepUID = record.data.STEP_UID; var triUID = record.data.TRI_UID; var sType = record.data.ST_TYPE; var sCondition = record.data.ST_CONDITION; //var urlparams = '?action=assignTrigger&data={"STEP_UID":"'+stepUID+'","TRI_UID":"'+triUID+'","ST_TYPE":"'+sType+'","ST_CONDITION":""}'; Ext.Ajax.request({ url : '../steps/steps_Ajax.php', method: 'POST', params:{ action : 'assignTrigger', STEP_UID : stepUID, TRI_UID : triUID, ST_TYPE : sType, ST_CONDITION : sCondition }, success: function(response) { PMExt.notify( _('ID_STATUS') , _('ID_TRIGGER_ASSIGN') ); tree.getLoader().dataUrl = 'get-triggers-tree.php?tid='+taskId; tree.getLoader().load(tree.root); } }); //Deleting previously assigned trigger on updating/replacing with new trigger. if(changes != '' && typeof record.json != 'undefined' ) { stepUID = record.json.STEP_UID; var sTrigger = record.json.TRI_UID; sType = record.json.ST_TYPE; var iPosition = record.json.ST_POSITION; var condition = record.json.ST_CONDITION; var urlparams = '?action=ofToAssignTrigger&sStep=' + stepUID + '&sTrigger=' + sTrigger + '&sType=' + sType + '&iPosition=' + iPosition Ext.Ajax.request({ url : '../steps/steps_Ajax.php' + urlparams, success: function(response) { //Ext.MessageBox.alert ('Status','Trigger has been updated successfully.'); } }); } availableTriggers.reload(); } }); var treeGrid = new Ext.FormPanel({ frame: false, monitorValid : true, labelAlign: 'left', width: 750, height: 500, layout: 'column', items: [{ columnWidth: 0.4, layout: 'fit', items: [tree] },{ columnWidth: 0.6, xtype: 'fieldset', //labelWidth: 120, title:_('ID_ASSIGN_TRIGGERS'), //defaults: {width: 140, border:false}, autoHeight: true, border: false, items: [triggerGrid] }] }); return treeGrid; } TaskContext.prototype.editUsersAdHoc= function() { var taskExtObj = new TaskContext(); var taskId = workflow.currentSelection.id; var userFields = Ext.data.Record.create([ { name: 'LABEL', type: 'string' },{ name: 'TU_TYPE', type: 'string' },{ name: 'TU_RELATION', type: 'string' },{ name: 'TAS_UID', type: 'string' },{ name: 'USR_UID', type: 'string' } ]); var editor = new Ext.ux.grid.RowEditor({ saveText: _('ID_UPDATE') }); var taskUsers = new Ext.data.JsonStore({ root : 'data', totalProperty: 'totalCount', idProperty : 'gridIndex', remoteSort : true, fields : userFields, proxy: new Ext.data.HttpProxy({ url: 'proxyExtjs?pid='+pro_uid+'&tid='+taskId+'&action=assignedUsers' }) }); //taskUsers.setDefaultSort('LABEL', 'asc'); taskUsers.load({params:{start : 0 , limit : 10 }}); // create the Data Store of users that are not assigned to a task var storeUsers = new Ext.data.JsonStore({ root : 'data', url : 'proxyExtjs?tid='+taskId+'&action=availableUsers', totalProperty : 'totalCount', idProperty : 'gridIndex', remoteSort : false, //true, autoLoad : true, fields : userFields }); var btnAdd = new Ext.Button({ id: 'btnAdd', text: _('ID_ASSIGN'), iconCls: 'button_menu_ext ss_sprite ss_add', handler: function(){ var User = grid.getStore(); var e = new userFields({ //LABEL: 'Select User or Group', //LABEL: User.data.items[0].data.LABEL, TAS_UID: '', TU_TYPE: '', USR_UID: '', TU_RELATION: '' }); //storeUsers.reload(); if(storeUsers.data.items.length == 0) PMExt.notify( _('ID_STATUS') , _('ID_USERS_UNAVAILABLE') ); else { editor.stopEditing(); taskUsers.insert(0, e); grid.getView().refresh(); //grid.getSelectionModel().selectRow(0); editor.startEditing(0, 0); } } }); var btnRemove = new Ext.Button({ id: 'btnRemove', text: _('ID_REMOVE'), iconCls: 'button_menu_ext ss_sprite ss_delete', handler: function (s) { editor.stopEditing(); var s = grid.getSelectionModel().getSelections(); for(var i = 0, r; r = s[i]; i++){ //First Deleting assigned users from Database var user_TURel = r.data.TU_RELATION; var userUID = r.data.USR_UID; var user_TUtype = r.data.TU_TYPE; var urlparams = '?action=ofToAssign&data={"TAS_UID":"'+taskId+'","TU_RELATION":"'+user_TURel+'","USR_UID":"'+userUID+'","TU_TYPE":"'+user_TUtype+'"}'; //if USR_UID is properly defined (i.e. set to valid value) then only delete the row //else its a BLANK ROW for which Ajax should not be called. if(r.data.USR_UID != "") { Ext.Ajax.request({ url : 'processes_Ajax.php' +urlparams , /*method: 'POST', params: { functions : 'ofToAssign', TAS_UID : taskId, TU_RELATION : user_TURel, USR_UID : userUID, TU_TYPE : user_TUtype },*/ success: function(response) { PMExt.notify( _('ID_STATUS') , _('ID_USERS_REMOVED') ); //Secondly deleting from Grid taskUsers.remove(r); //Reloading available user store taskUsers.reload(); } }); } else taskUsers.remove(r); } } }); var tb = new Ext.Toolbar({ items: [btnAdd, btnRemove] }); // create the Data Store of users that are already assigned to a task var grid = new Ext.grid.GridPanel({ store: taskUsers, id : 'mygrid', //cm: cm, loadMask: true, loadingText: 'Loading...', //renderTo: 'cases-grid', frame: false, autoHeight:false, clicksToEdit: 1, minHeight:400, height :330, layout: 'fit', plugins: [editor], columns: [ new Ext.grid.RowNumberer(), { id: 'LABEL', header: _('ID_GROUP_USER'), dataIndex: 'LABEL', width: 100, sortable: true, editor: new Ext.form.ComboBox({ xtype: 'combo', fieldLabel: 'Users_groups', hiddenName: 'number', store : storeUsers, displayField : 'LABEL', valueField : 'LABEL', name : 'LABEL', triggerAction: 'all', emptyText: 'Select User or Group', allowBlank: false, onSelect: function(record, index){ var User = grid.getStore(); if(typeof workflow.currentrowIndex == 'undefined') var selectedrowIndex = '0'; else selectedrowIndex = workflow.currentrowIndex; //getting Index of the row that has been edited //User.data.items[0].data.LABEL= record.data.LABEL; User.data.items[selectedrowIndex].data.TAS_UID = record.data.TAS_UID; User.data.items[selectedrowIndex].data.TU_TYPE = record.data.TU_TYPE; User.data.items[selectedrowIndex].data.USR_UID = record.data.USR_UID; User.data.items[selectedrowIndex].data.TU_RELATION = record.data.TU_RELATION; this.setValue(record.data[this.valueField || this.displayField]); this.collapse(); } }) } ], sm: new Ext.grid.RowSelectionModel({ singleSelect: true, listeners: { rowselect: function(smObj, rowIndex, record) { workflow.currentrowIndex = rowIndex; } } }), stripeRows: true, viewConfig: {forceFit: true}, bbar: new Ext.PagingToolbar({ pageSize: 10, store: taskUsers, displayInfo: true, displayMsg: 'Displaying Users {0} - {1} of {2}', emptyMsg: "No Users to display", items:[] }), tbar: tb }); storeUsers.load(); editor.on({ scope: this, afteredit: function(roweditor, changes, record, rowIndex) { var taskId = record.data.TAS_UID; var userId = record.data.USR_UID; var tu_Type = record.data.TU_TYPE; var tu_Relation = record.data.TU_RELATION; ///var urlparams = '?action=assign&data={"TAS_UID":"'+taskId+'","USR_UID":"'+userId+'","TU_TYPE":"'+tu_Type+'","TU_RELATION":"'+tu_Relation+'"}'; Ext.Ajax.request({ url: '../users/users_Ajax.php', METHOD:'post', success: function (response) { // When saving data success PMExt.notify( _('ID_STATUS') , _('ID_USER_ASSIGNED') ); }, params:{ functions : 'assign', TAS_UID : taskId, USR_UID : userId, TU_TYPE : tu_Type, TU_RELATION:tu_Relation }, failure: function () { // when saving data failed PMExt.notify( _('ID_STATUS') , _('ID_USER_SAVE_FAIL') ); } }); //Updating the user incase if already assigned user has been replaced by other user if(changes != '' && typeof record.json != 'undefined') { var user_TURel = record.json.TU_RELATION; var userUID = record.json.USR_UID; var user_TUtype = record.json.TU_TYPE; //urlparams = '?action=ofToAssign&data={"TAS_UID":"'+taskId+'","TU_RELATION":"'+user_TURel+'","USR_UID":"'+userUID+'","TU_TYPE":"'+user_TUtype+'"}'; Ext.Ajax.request({ url : '../users/users_Ajax.php', method: 'POST', success: function(response) { PMExt.notify( _('ID_STATUS') , _('ID_USER_ASSIGNED') ); //Ext.MessageBox.alert ('Status','User has been updated successfully.'); }, params:{ functions : 'ofToAssign', TAS_UID : taskId, USR_UID : userId, TU_TYPE : tu_Type, TU_RELATION:tu_Relation } }); } //storeUsers.reload(); } }); var panel = new Ext.Panel({ id: 'panel', //renderTo: Ext.getBody(), items: [grid] }); var window = new Ext.Window({ title: _('ID_USER_GROUPS_ADHOC'), collapsible: false, maximizable: false, width: 400, height: 360, minWidth: 200, minHeight: 150, layout: 'fit', plain: true, buttonAlign: 'center', items: panel }); window.show(); } /** * ExtJs Form of SubProcess Properties * @Param Shape Object * @Author Safan Maredia */ TaskContext.prototype.editSubProcessProperties= function(_3525) { var taskId = workflow.currentSelection.id; //Variables Out Grid var subProcessFields = Ext.data.Record.create([ {name: 'SP_UID',type: 'string'}, {name: 'TAS_UID',type: 'string'}, {name: 'PRO_PARENT',type: 'string'}, {name: 'PRO_UID',type: 'string'}, {name: 'PRO_TITLE',type: 'string'}, {name: 'TAS_PARENT',type: 'string'}, {name: 'SP_SYNCHRONOUS',type: 'string'}, {name: 'SPROCESS_NAME',type: 'string'}, {name: 'TASKS',type: 'string'}, {name: 'TAS_TITLE',type: 'string'}, {name: 'CON_VALUE',type: 'string'}, {name: 'VAR_OUT1',type: 'string'}, {name: 'VAR_OUT2',type: 'string'}, {name: 'VAR_IN1',type: 'string'}, {name: 'VAR_IN2',type: 'string'} ]); var editorOut = new Ext.ux.grid.RowEditor({ saveText: _('ID_UPDATE') }); var editorIn = new Ext.ux.grid.RowEditor({ saveText: _('ID_UPDATE') }); //Variable out grid configuration starts here var btnAddOut = new Ext.Button({ id: 'btnAddOut', text: _('ID_ASSIGN_VARIABLES_OUT'), iconCls: 'button_menu_ext ss_sprite ss_add', handler: function(){ var storeData = variableOutGrid.getStore(); //STEP_TITLE: storeData.data.items[0].data.STEP_TITLE, var e = new subProcessFields({ SP_UID : '', PRO_PARENT : '', SP_SYNCHRONOUS : '', TAS_PARENT : '', TASKS : '', VAR_OUT1 : '', VAR_OUT2 : '' }); editorOut.stopEditing(); variablesOutStore.insert(0, e); variableOutGrid.getView().refresh(); //grid.getSelectionModel().selectRow(0); editorOut.startEditing(0, 0); } }); var btnRemoveOut = new Ext.Button({ id: 'btnRemoveOut', text: _('ID_REMOVE_VARIABLES_OUT'), iconCls: 'button_menu_ext ss_sprite ss_delete', handler: function (s) { editorOut.stopEditing(); var s = variableOutGrid.getSelectionModel().getSelections(); for(var i = 0, r; r = s[i]; i++){ variablesOutStore.remove(r); } } }); var tbOut = new Ext.Toolbar({ items: [btnAddOut, btnRemoveOut] }); //Variable out grid configuration starts here var btnAddIn = new Ext.Button({ id: 'btnAddIn', text: 'ID_ASSIGN_VARIABLES_IN', iconCls: 'button_menu_ext ss_sprite ss_add', handler: function(){ var e = new subProcessFields({ SP_UID : '', PRO_PARENT : '', SP_SYNCHRONOUS : '', TAS_PARENT : '', VAR_IN1 : '', VAR_IN2 : '' }); editorIn.stopEditing(); variablesInStore.insert(0, e); variableInGrid.getView().refresh(); editorIn.startEditing(0, 0); } }); var btnRemoveIn = new Ext.Button({ id: 'btnRemoveIn', text: 'ID_REMOVE_VARIABLES_IN', iconCls: 'button_menu_ext ss_sprite ss_delete', handler: function (s) { editorIn.stopEditing(); var s = variableInGrid.getSelectionModel().getSelections(); for(var i = 0, r; r = s[i]; i++){ //Secondly deleting from Grid variablesInStore.remove(r); } } }); var tbIn = new Ext.Toolbar({ items: [btnAddIn, btnRemoveIn] }); // create the Data Store of all Variables Out var variablesOutStore = new Ext.data.JsonStore({ root : 'data', totalProperty: 'totalCount', idProperty : 'gridIndex', remoteSort : true, fields : subProcessFields, proxy : new Ext.data.HttpProxy({ url : 'proxyExtjs?pid='+pro_uid+'&action=getSubProcessProperties&tid='+taskId+'&type=0' //type=0 specifies Variables Out (Asynchronous) }) }); variablesOutStore.load(); // create the Data Store of all Variables In var variablesInStore = new Ext.data.JsonStore({ root : 'data', totalProperty: 'totalCount', idProperty : 'gridIndex', remoteSort : true, fields : subProcessFields, proxy : new Ext.data.HttpProxy({ url : 'proxyExtjs?pid='+pro_uid+'&action=getSubProcessProperties&tid='+taskId+'&type=1' //type=1 specifies Variables In (Synchronous) }) }); //taskUsers.setDefaultSort('LABEL', 'asc'); variablesInStore.load(); var processListStore = new Ext.data.JsonStore({ root : 'data', totalProperty: 'totalCount', idProperty : 'gridIndex', remoteSort : true, fields : subProcessFields, proxy : new Ext.data.HttpProxy({ url : '../processes/processesList' }) }); processListStore.load(); var variableOutGrid = new Ext.grid.GridPanel({ store : variablesOutStore, id : 'mygrid', loadMask : true, loadingText : 'Loading...', //renderTo : 'cases-grid', frame : false, autoHeight : true, autoScroll : true, clicksToEdit: 1, layout : 'form', plugins : [editorOut], columns : [{ id : 'VAR_OUT1', name : 'VAR_OUT1', header : _('ID_ORIGIN'), dataIndex: 'VAR_OUT1', width : 200, sortable : true, editor : new Ext.form.TextField({ allowBlank: true }) }, { sortable: false, renderer: function() { return ''; } }, { id : 'VAR_OUT2', name : 'VAR_OUT2', header : _('ID_TARGET'), dataIndex : 'VAR_OUT2', width : 200, sortable : true, editor : new Ext.form.TextField({ allowBlank: true }) }, { sortable: false, renderer: function() { return ''; } } ], viewConfig: {forceFit: true}, stripeRows: true, tbar: tbOut }); var variableInGrid = new Ext.grid.GridPanel({ store : variablesInStore, id : 'mygrid1', loadMask : true, loadingText : 'Loading...', //renderTo : 'cases-grid', frame : false, autoHeight : true, autoScroll : true, clicksToEdit: 1, layout : 'form', plugins : [editorIn], columns : [{ id : 'VAR_IN1', name : 'VAR_IN1', header : _('ID_ORIGIN'), dataIndex: 'VAR_IN1', width : 200, sortable : true, editor : new Ext.form.TextField({ allowBlank: true }) }, { sortable: false, renderer: function() { return ''; } }, { id : 'VAR_IN2', name : 'VAR_IN2', header : _('ID_TARGET'), dataIndex : 'VAR_IN2', width : 200, sortable : true, editor : new Ext.form.TextField({ allowBlank: true }) }, { sortable: false, renderer: function() { return ''; } } ], viewConfig: {forceFit: true}, stripeRows: true, tbar: tbIn }); var subProcessProperties = new Ext.FormPanel({ labelWidth : 110, // label settings here cascade unless overridden //frame:true, width: 500, bodyStyle: 'padding:5px 0 0 5px;', autoScroll: true, items: [ { xtype:'fieldset', title: _('ID_SUBPROCESS'), collapsible: false, autoHeight:true, //width: 600, defaultType: 'textfield', items:[ { id: 'subProcessName', xtype: 'textfield', width: 350, fieldLabel: _('ID_SUBPROCESS_NAME'), name : 'SPROCESS_NAME', allowBlank: false }, { width: 300, xtype: 'combo', mode: 'local', triggerAction: 'all', forceSelection: true, editable: false, fieldLabel: _('ID_PROCESS'), name: 'PRO_TITLE', emptyText : 'Select Process', displayField: 'PRO_TITLE', valueField: 'PRO_TITLE', store: processListStore, onSelect: function(record, index){ //processListStore.data.items[0].data.PRO_UID = record.data.PRO_UID; Ext.getCmp("SEL_PROCESS").setValue(record.data.PRO_UID); this.setValue(record.data[this.valueField || this.displayField]); this.collapse(); } },{ xtype :'hidden', name :'SEL_PROCESS', id :'SEL_PROCESS' }, { width: 150, id : 'spType', xtype: 'combo', mode: 'local', triggerAction: 'all', forceSelection: true, editable: false, fieldLabel: _('ID_TYPE'), name: 'SP_SYNCHRONOUS', hiddenName: 'SP_SYNCHRONOUS', displayField: 'name', valueField: 'value', emptyText : 'Select Type', store: new Ext.data.JsonStore({ fields : ['name', 'value'], data : [ {name : 'Asynchronous', value: '0'}, {name : 'Synchronous', value: '1'}, ] }), onSelect: function(record, index){ if(record.data.name == 'Synchronous') Ext.getCmp("variablein").show(); else Ext.getCmp("variablein").hide(); this.setValue(record.data[this.valueField || this.displayField]); this.collapse(); } }] }, { id :'variableout', name :'VAR_OUT1', xtype:'fieldset', title: _('ID_VARIABLES_OUT'), collapsible: false, labelAlign: 'top', items:[variableOutGrid] }, { id :'variablein', name :'VAR_IN1', xtype:'fieldset', title: _('ID_VARIABLES_IN'), //hidden: true, collapsible: false, labelAlign: 'top', items:[variableInGrid] }] }); //Loading Task Details into the form subProcessProperties.form.load({ url:'proxyExtjs?pid='+pro_uid+'&action=getSubProcessProperties&tid='+taskId+'&type=2', method:'GET', waitMsg:'Loading....', success:function(form, action) { var response = action.response.responseText; var aData = Ext.util.JSON.decode(response); spUID = aData.data[0].SP_UID; proUID = aData.data[0].PRO_UID; proParent = aData.data[0].PRO_PARENT; spSync = aData.data[0].SP_SYNCHRONOUS; tasParent = aData.data[0].TAS_PARENT; tasks = aData.data[0].TASKS; var processName = aData.data[0].SPROCESS_NAME; if(action.result.data[0].SP_SYNCHRONOUS == 0) { Ext.getCmp("variablein").hide(); form.findField('SP_SYNCHRONOUS').setValue('Asynchronous'); } else { Ext.getCmp("variablein").show(); form.findField('SP_SYNCHRONOUS').setValue('Synchronous'); } form.findField('PRO_TITLE').setValue(action.result.data[0].PRO_TITLE); form.findField('SPROCESS_NAME').setValue(processName); }, failure:function(form, action) { PMExt.notify( _('ID_STATUS') , _('ID_LOAD_FAILED') ); } }); //subProcessProperties.render(document.body); var window = new Ext.Window({ title: _('ID_PROPERTIES'), collapsible: false, maximizable: false, width: 800, height: 400, layout: 'fit', plain: true, buttonAlign: 'center', items: subProcessProperties, buttons: [{ text: _('ID_SAVE'), handler: function(){ var getForm = subProcessProperties.getForm().getValues(); //Getting data from Grid (Variables In and Out) var storeOutData = variableOutGrid.getStore(); var storeInData = variableInGrid.getStore(); var storeOutLength = storeOutData.data.items.length; var storeInLength = storeInData.data.items.length; var varOut1 = new Array(); var varOut2 = new Array(); for(var i=0;i