UNPKG

processmaker-builder

Version:

The gulp task runner for ProcessMaker building

1,270 lines (1,204 loc) 52.3 kB
new Ext.KeyMap(document, [ { key: Ext.EventObject.F5, fn: function(k, e) { if (!e.ctrlKey) { if (Ext.isIE) { e.browserEvent.keyCode = 8; } e.stopEvent(); document.location = document.location; } else { Ext.Msg.alert(_('ID_REFRESH_LABEL'), _('ID_REFRESH_MESSAGE')); } } }, { key: Ext.EventObject.DELETE, fn: function(k, e) { iGrid = Ext.getCmp('ownerInfoGrid'); rowSelected = iGrid.getSelectionModel().getSelected(); if (rowSelected) { deleteDashboard(); } } }, { key: Ext.EventObject.F2, fn: function(k, e) { iGrid = Ext.getCmp('ownerInfoGrid'); rowSelected = iGrid.getSelectionModel().getSelected(); if (rowSelected){ editDashboard(); } } } ]); var viewport; var dashboardFields; var frmDashboard; var addTabButton; var tabPanel; var dashboardIndicatorFields; var store; var indexTab = 0; var comboPageSize = 10; var resultTpl; var storeIndicatorType; var storeGraphic; var storeFrequency; var storeProject; var storeGroup; var storeUsers; var dataUserGroup; var flag = true; var myMask; var dataIndicator = ''; var tabActivate = []; Ext.onReady( function() { myMask = new Ext.LoadMask(Ext.getBody(), {msg:_('ID_LOADING')}); Ext.QuickTips.init(); 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>' ); //FieldSets dashboardFields = new Ext.form.FieldSet({ title : _('ID_GENERATE_INFO'), items : [ { id : 'DAS_TITLE', fieldLabel : '<span style=\"color:red;\" ext:qtip="'+ _('ID_FIELD_REQUIRED', _('ID_DASHBOARD_TITLE')) +'"> * </span>' + _('ID_DASHBOARD_TITLE'), xtype : 'textfield', anchor : '85%', maxLength : 250, maskRe : /^([a-zA-Z0-9_'\s]+)$/i, regex : /^([a-zA-Z0-9_'\s]+)$/i, regexText : _('ID_INVALID_VALUE', _('ID_DASHBOARD_TITLE')), allowBlank : false }, { xtype : 'textarea', id : 'DAS_DESCRIPTION', fieldLabel : _('ID_DESCRIPTION'), anchor : '85%', maskRe : /([a-zA-Z0-9_'\s]+)$/, height : 50 } ] }); //grid owner deleteButton = new Ext.Action({ text : _('ID_DELETE'), iconCls : 'button_menu_ext ss_sprite ss_delete', handler : deleteOwner, disabled: true }); actionButtons = [deleteButton , '->']; var owner = Ext.data.Record.create ([ { name : 'DAS_UID', type: 'string' }, { name : "OWNER_UID", type: 'string' }, { name : "OWNER_LABEL", type: 'string' }, { name : 'OWNER_TYPE', type: 'string' } ]); store = new Ext.data.GroupingStore( { proxy : new Ext.data.HttpProxy({ api: { read : urlProxy + 'dashboard/'+ DAS_UID +'/owners' } ,method: 'GET' ,headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + credentials.access_token } }), reader : new Ext.data.JsonReader( { root: 'owner', totalProperty: 'totalCount', fields : owner }), sortInfo: { field: 'OWNER_TYPE', direction: 'ASC' }, autoLoad: true }); storeGroup = new Ext.data.GroupingStore( { proxy : new Ext.data.HttpProxy({ api: { read : urlProxy + 'group' } ,method: 'GET' ,headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + credentials.access_token } }), reader : new Ext.data.JsonReader( { fields : [ {name : 'grp_uid'}, {name : "grp_title"}, {name : "grp_status"}, {name : "grp_users"}, {name : 'grp_tasks'} ] }), sortInfo: { field: 'grp_title', direction: 'ASC' } }); storeGroup.load(); storeUsers = new Ext.data.GroupingStore( { proxy : new Ext.data.HttpProxy({ api: { read : urlProxy + 'users' } ,method: 'GET' ,headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + credentials.access_token } }), reader : new Ext.data.JsonReader( { fields : [ {name : 'usr_uid'}, {name : "usr_firstname"}, {name : "usr_lastname"}, {name : 'usr_status'} ] }), sortInfo: { field: 'usr_lastname', direction: 'ASC' } }); storeUsers.load(); bbarpaging = new Ext.PagingToolbar({ pageSize: 10, store: store, displayInfo: true, //displayMsg: _('ID_GRID_PAGE_DISPLAYING_0WNER_MESSAGE') + '&nbsp; &nbsp; ', displayMsg : '', //emptyMsg: _('ID_GRID_PAGE_NO_OWNER_MESSAGE') emptyMsg: '' }); cmodel = new Ext.grid.ColumnModel({ defaults: { width: 50, sortable: false }, columns: [ { id:'DAS_UID', dataIndex: 'DAS_UID', hidden:true, hideable:false}, { header: _("ID_OWNER"), dataIndex: "OWNER_LABEL", width: 150, hidden: false, align: "left"}, { header: _("ID_OWNER_TYPE"), dataIndex: "OWNER_TYPE", width: 80, hidden: false, align: "left"} ] }); smodel = new Ext.grid.RowSelectionModel({ singleSelect: true, listeners:{ rowselect: function(sm, index, record) { deleteButton.enable(); }, rowdeselect: function(sm, index, record){ deleteButton.disable(); } } }); storeIndicatorType = new Ext.data.GroupingStore( { proxy : new Ext.data.HttpProxy({ api: { read : urlProxy + 'catalog/indicator' } ,method: 'GET' ,headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + credentials.access_token } }), reader : new Ext.data.JsonReader( { fields : [ {name : 'CAT_UID'}, {name : 'CAT_LABEL_ID'}, {name : 'CAT_TYPE'}, {name : 'CAT_FLAG'}, {name : 'CAT_OBSERVATION'}, {name : 'CAT_CREATE_DATE'}, {name : 'CAT_UPDATE_DATE'} ] }), sortInfo: { field: 'CAT_LABEL_ID', direction: 'ASC' } }); storeGraphic = new Ext.data.GroupingStore( { proxy : new Ext.data.HttpProxy({ api: { read : urlProxy + 'catalog/graphic' } ,method: 'GET' ,headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + credentials.access_token } }), reader : new Ext.data.JsonReader( { fields : [ {name : 'CAT_UID'}, {name : 'CAT_LABEL_ID'}, {name : 'CAT_TYPE'}, {name : 'CAT_FLAG'}, {name : 'CAT_OBSERVATION'}, {name : 'CAT_CREATE_DATE'}, {name : 'CAT_UPDATE_DATE'} ] }), sortInfo: { field: 'CAT_LABEL_ID', direction: 'ASC' } }); storeFrequency = new Ext.data.GroupingStore( { proxy : new Ext.data.HttpProxy({ api: { read : urlProxy + 'catalog/periodicity' } ,method: 'GET' ,headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + credentials.access_token } }), reader : new Ext.data.JsonReader( { fields : [ {name : 'CAT_UID'}, {name : 'CAT_LABEL_ID'}, {name : 'CAT_TYPE'}, {name : 'CAT_FLAG'}, {name : 'CAT_OBSERVATION'}, {name : 'CAT_CREATE_DATE'}, {name : 'CAT_UPDATE_DATE'} ] }), sortInfo: { field: 'CAT_LABEL_ID', direction: 'ASC' } }); var project = Ext.data.Record.create ([ { name : 'prj_uid', type: 'string' }, { name : 'prj_name', type: 'string' }, { name : 'prj_description', type: 'string' }, { name : 'prj_category', type: 'string' }, { name : 'prj_type', type: 'string' }, { name : 'prj_create_date', type: 'string' }, { name : 'prj_update_date', type: 'string' } ]); storeProject = new Ext.data.GroupingStore( { proxy : new Ext.data.HttpProxy({ api: { read : urlProxy + 'project' } ,method: 'GET' ,headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + credentials.access_token } }), reader : new Ext.data.JsonReader( { fields :project }), sortInfo: { field: 'prj_name', direction: 'ASC' }, listeners: { load: function( store ) { var p = new project({ prj_name: _('ID_ALL_PROCESS'), prj_uid: '0', prj_description: '0', prj_category: '0', prj_type: '0', prj_create_date: '0', prj_update_date: '0' }); store.insert(0, p); } } }); ownerInfoGrid = new Ext.grid.GridPanel({ region : 'center', id : 'ownerInfoGrid', height : 200, width : '100%', stateId : 'gridDashboardList', enableHdMenu: true, frame : false, columnLines : false, sortable : false, store: store, cm: cmodel, sm: smodel, tbar: actionButtons, bbar: bbarpaging, listeners: { render: function(){ this.loadMask = new Ext.LoadMask(this.body, {msg:_('ID_LOADING_GRID')}); } }, view: new Ext.grid.GroupingView({ forceFit:true, groupTextTpl: '{text}', cls:"x-grid-empty", emptyText: _('ID_NO_RECORDS_FOUND') }) }); dashboardOwnerFields = new Ext.form.FieldSet({ title : _('ID_OWNER_INFORMATION'), collapsible : true, width : '100%', //collapsed : true, items : [ { xtype : 'combo', id : 'searchIem', anchor : '60%', typeAhead : false, hideLabel : true, hideTrigger : true, editable : true, fieldLabel : _('ID_SELECT'), displayField : 'field1', emptyText : _('ID_ENTER_SEARCH_TERM'), mode : 'local', autocomplete : true, triggerAction : 'all', maskRe : /([a-zA-Z0-9\s]+)$/, store : new Ext.data.ArrayStore({ fields : ['owner_uid','owner_label','owner_type'], data : dataUserGroup }), listConfig : { loadingText: _('ID_SEARCH'), emptyText: _('ID_NO_FIELD_FOUND'), getInnerTpl: function() { return '<div class="search-item">' + '<h3><span>{owner_uid}</span>{owner_label}</h3>' + '{excerpt}' + '</div>'; } }, //pageSize : 10, listeners :{ scope : this, select : function(combo, selection) { var sw = false; var data = store.data.items; for (var i=0; i<data.length; i++) { if (selection.data.field2 == data[i].data.OWNER_UID) { sw = true; break; } } if (!sw) { label = selection.data.field1.split('('); var ow = new owner({ DAS_UID : '', OWNER_UID : selection.data.field2, OWNER_LABEL : label[0], OWNER_TYPE : selection.data.field3 }); ownerInfoGrid.store.insert(store.getCount(), ow); ownerInfoGrid.store.totalCount = data.length +1; ownerInfoGrid.store.sort('OWNER_LABEL', 'ASC'); ownerInfoGrid.getView().refresh(); Ext.getCmp('searchIem').clearValue(); } else { label = selection.data.field3 == 'USER' ? 'ID_USER_REGISTERED' : 'ID_MSG_GROUP_NAME_EXISTS' PMExt.warning(_('ID_DASHBOARD'), _(label)); } } } }, { title: _('ID_PRO_USER') }, ownerInfoGrid ] }); addTabButton = new Ext.Button ({ text: _('ID_NEW_TAB_INDICATOR'), iconCls: 'button_menu_ext ss_sprite ss_add', handler: addTab }); tabPanel = new Ext.TabPanel({ resizeTabs : true, minTabWidth : 115, tabWidth : 135, enableTabScroll : true, //anchor : '98%', width : '100%', height : 160, defaults : { autoScroll :true }, listeners: { scope: this, beforeremove : function ( that, component ) { if (flag) { if (tabPanel.items.items.length == 1 ) { PMExt.warning(_('ID_DASHBOARD'), _('ID_MIN_INDICATOR_DASHBOARD')); return false; } tabPanel.getItem(component.id).show(); Ext.MessageBox.show({ title: _('ID_CONFIRM'), msg: _('ID_DELETE_INDICATOR_SURE'), buttons: Ext.MessageBox.YESNO, fn: function(buttonId) { switch(buttonId) { case 'no': flag = true; break; case 'yes': tabPanel.getItem(component.id).show(); flag = false; var dasIndUid = Ext.getCmp('DAS_IND_UID_'+component.id).getValue(); if (typeof dasIndUid != 'undefined' && dasIndUid != '') { removeIndicator(dasIndUid); } tabActivate.remove(component.id); tabPanel.remove(component, true); break; } }, scope: that }); return false; } else { flag = true; } }, tabchange : function ( that, tab ) { var id = tabPanel.getActiveTab().id; if (dataIndicator == [] || dataIndicator == '' || Ext.getCmp('IND_TITLE_'+id).getValue() != '' || typeof dataIndicator[id-1] == 'undefined') { return false; } Ext.getCmp('DAS_IND_UID_'+id).setValue(dataIndicator[id-1]['DAS_IND_UID']); var idType = dataIndicator[id-1]['DAS_IND_TYPE']; if (typeof dataIndicator[id-1]['DAS_IND_TYPE'] != 'undefined') { Ext.getCmp('IND_TYPE_'+id).store.on('load', function (store) { Ext.getCmp('IND_TYPE_'+id).setValue(idType); }); Ext.getCmp('IND_TYPE_'+id).store.load(); } Ext.getCmp('IND_TITLE_'+id).setValue(dataIndicator[id-1]['DAS_IND_TITLE']); Ext.getCmp('IND_TYPE_'+id).setValue(dataIndicator[id-1]['DAS_IND_TYPE']); Ext.getCmp('IND_GOAL_'+id).setValue(dataIndicator[id-1]['DAS_IND_GOAL']); var idProcess = dataIndicator[id-1]['DAS_UID_PROCESS']; if (typeof dataIndicator[id-1]['DAS_UID_PROCESS'] != 'undefined') { Ext.getCmp('IND_PROCESS_'+id).store.on('load', function (store) { Ext.getCmp('IND_PROCESS_'+id).setValue(idProcess); }); Ext.getCmp('IND_PROCESS_'+id).store.load(); } var idDirection = dataIndicator[id-1]['DAS_IND_DIRECTION']; if (typeof dataIndicator[id-1]['DAS_IND_DIRECTION'] != 'undefined') { Ext.getCmp('DAS_IND_DIRECTION_'+id).setValue(idDirection); } var field = ''; if (dataIndicator[id-1]['DAS_IND_TYPE'] != '1050') { field = Ext.getCmp('IND_PROCESS_'+id); field.enable(); field.show(); } if (dataIndicator[id-1]['DAS_IND_TYPE'] != '1010' && dataIndicator[id-1]['DAS_IND_TYPE'] != '1030' && dataIndicator[id-1]['DAS_IND_TYPE'] != '1050') { var fields = ['DAS_IND_FIRST_FIGURE_'+id,'DAS_IND_FIRST_FREQUENCY_'+ id,'DAS_IND_SECOND_FIGURE_'+id, 'DAS_IND_SECOND_FREQUENCY_'+ id]; for (var k=0; k<fields.length; k++) { field = Ext.getCmp(fields[k]); field.enable(); field.show(); } var indFrist = dataIndicator[id-1]['DAS_IND_FIRST_FIGURE'] var indFristF = dataIndicator[id-1]['DAS_IND_FIRST_FREQUENCY'] var indSecond = dataIndicator[id-1]['DAS_IND_SECOND_FIGURE'] var indSecondF = dataIndicator[id-1]['DAS_IND_SECOND_FREQUENCY'] if (typeof dataIndicator[id-1]['DAS_IND_FIRST_FIGURE'] != 'undefined') { Ext.getCmp('DAS_IND_FIRST_FIGURE_'+id).store.on('load', function (store) { Ext.getCmp('DAS_IND_FIRST_FIGURE_'+id).setValue(indFrist); }); Ext.getCmp('DAS_IND_FIRST_FIGURE_'+id).store.load(); } if (typeof dataIndicator[id-1]['DAS_IND_FIRST_FREQUENCY'] != 'undefined') { Ext.getCmp('DAS_IND_FIRST_FREQUENCY_'+id).store.on('load', function (store) { Ext.getCmp('DAS_IND_FIRST_FREQUENCY_'+id).setValue(indFristF); }); Ext.getCmp('DAS_IND_FIRST_FREQUENCY_'+id).store.load(); } if (typeof dataIndicator[id-1]['DAS_IND_SECOND_FIGURE'] != 'undefined') { Ext.getCmp('DAS_IND_SECOND_FIGURE_'+id).store.on('load', function (store) { Ext.getCmp('DAS_IND_SECOND_FIGURE_'+id).setValue(indSecond); }); Ext.getCmp('DAS_IND_SECOND_FIGURE_'+id).store.load(); } if (typeof dataIndicator[id-1]['DAS_IND_SECOND_FREQUENCY'] != 'undefined') { Ext.getCmp('DAS_IND_SECOND_FREQUENCY_'+id).store.on('load', function (store) { Ext.getCmp('DAS_IND_SECOND_FREQUENCY_'+id).setValue(indSecondF); }); Ext.getCmp('DAS_IND_SECOND_FREQUENCY_'+id).store.load(); } } } } }); dashboardIndicatorFields = new Ext.form.FieldSet({ title : _('ID_DASHBOARD_INDICATOR_INFORMATION'), items : [ addTabButton, tabPanel ] }); //form frmDashboard = new Ext.FormPanel({ id : 'frmDashboard', labelWidth : 250, labelAlign :'right', autoScroll : true, fileUpload : true, width : '100%', bodyStyle : 'padding:10px', waitMsgTarget : true, frame : true, defaults : { anchor : '100%', allowBlank : false, resizable : true, msgTarget : 'side', align : 'center' }, items : [ dashboardFields, dashboardOwnerFields, dashboardIndicatorFields ], buttons : [ { text : _('ID_SAVE'), id : 'save', handler: validateNameDashboard }, { text : _('ID_CANCEL'), id : 'cancel', handler : function() { window.location = 'dashboardList'; } } ] }); ownerInfoGrid.on("afterrender", function(component) { component.getBottomToolbar().refresh.hideParent = true; component.getBottomToolbar().refresh.hide(); }); viewport = new Ext.Viewport({ layout: 'fit', autoScroll: false, items: [ frmDashboard ] }); dataUserGroup = []; storeGroup.on( 'load', function( store, records, options ) { for (var i=0; i< store.data.length; i++) { row = []; if (store.data.items[i].data.grp_status == 'ACTIVE') { row.push(store.data.items[i].data.grp_title + ' (' + _('ID_GROUP') + ')' ); row.push(store.data.items[i].data.grp_uid); row.push('GROUP'); dataUserGroup.push(row); } } dashboardOwnerFields.items.items[0].bindStore(dataUserGroup); } ); storeUsers.on( 'load', function( store, records, options ) { for (var i=0; i< store.data.length; i++) { row = []; if (store.data.items[i].data.usr_status == 'ACTIVE') { row.push(storeUsers.data.items[i].data.usr_firstname + ' ' + storeUsers.data.items[i].data.usr_lastname + ' (' + _('ID_USER') + ')' ); row.push(storeUsers.data.items[i].data.usr_uid); row.push('USER'); dataUserGroup.push(row); } } dashboardOwnerFields.items.items[0].bindStore(dataUserGroup); } ); if (DAS_UID != '') { loadInfoDashboard(DAS_UID); loadIndicators(DAS_UID); } else { addTab(); } if (typeof(__DASHBOARD_ERROR__) !== 'undefined') { PMExt.notify(_('ID_DASHBOARD'), __DASHBOARD_ERROR__); } }); //==============================================================// var addTab = function (flag) { if (tabPanel.items.items.length > 3 ) { PMExt.warning(_('ID_DASHBOARD'), _('ID_MAX_INDICATOR_DASHBOARD')); return false; } var tab = { title : _('ID_INDICATOR')+ ' '+ (++indexTab), id : indexTab, iconCls : 'tabs', width : "100%", items : [ new Ext.Panel({ height : 130, width : "100%", border : true, bodyStyle : 'padding:10px', items : [ new Ext.form.FieldSet({ labelWidth : 150, labelAlign :'right', items : [ { id : 'DAS_IND_UID_' + indexTab, xtype : 'textfield', hidden : true }, { fieldLabel : '<span style=\"color:red;\" ext:qtip="'+ _('ID_FIELD_REQUIRED', _('ID_INDICATOR_TITLE')) +'"> * </span>' + _('ID_INDICATOR_TITLE'), id : 'IND_TITLE_'+ indexTab, xtype : 'textfield', anchor : '85%', maskRe : /^([a-zA-Z0-9_'\s]+)$/, regex : /^([a-zA-Z0-9_'\s]+)$/, regexText : _('ID_INVALID_VALUE', _('ID_INDICATOR_TITLE')), maxLength : 250, allowBlank : false }, new Ext.form.ComboBox({ anchor : '85%', editable : false, id : 'IND_TYPE_'+ indexTab, fieldLabel : '<span style=\"color:red;\" ext:qtip="'+ _('ID_FIELD_REQUIRED', _('ID_INDICATOR_TYPE')) +'"> * </span>' + _('ID_INDICATOR_TYPE'), displayField : 'CAT_LABEL_ID', valueField : 'CAT_UID', forceSelection : false, emptyText : _('ID_SELECT'), selectOnFocus : true, typeAhead : true, autocomplete : true, triggerAction : 'all', store : storeIndicatorType, listeners:{ scope: this, select: function(combo, record, index) { var value = combo.getValue(); var field = ''; var index = tabPanel.getActiveTab().id; var fields = ['DAS_IND_FIRST_FIGURE_'+index,'DAS_IND_FIRST_FREQUENCY_'+index,'DAS_IND_SECOND_FIGURE_'+index, 'DAS_IND_SECOND_FREQUENCY_'+index]; if (value == '1050') { field = Ext.getCmp('IND_PROCESS_'+index); field.setValue('0'); field.disable(); field.hide(); } else { field = Ext.getCmp('IND_PROCESS_'+index); field.enable(); field.show(); } if (value == '1010' || value == '1030' || value == '1050') { for (var i=0; i<fields.length; i++) { field = Ext.getCmp(fields[i]); field.disable(); field.hide(); } } else { for (var i=0; i<fields.length; i++) { field = Ext.getCmp(fields[i]); field.enable(); field.show(); } } } } }), new Ext.form.FieldSet({ title : _('ID_INDICATOR_GOAL'), width : "90%", id : 'fieldSet_'+ indexTab, bodyStyle: 'paddingLeft: 75px;', paddingLeft: "30px", marginLeft : "60px", layout : 'hbox', hidden : true, items : [ new Ext.form.ComboBox({ editable : false, id : 'DAS_IND_DIRECTION_'+ indexTab, displayField : 'label', valueField : 'id', value : '2', forceSelection : false, selectOnFocus : true, typeAhead : true, autocomplete : true, width : 90, triggerAction : 'all', mode : 'local', allowBlank : false, store : new Ext.data.ArrayStore({ id: 2, fields: [ 'id', 'label' ], data: [['1', _('ID_LESS_THAN')], ['2', _('ID_MORE_THAN')]] }) }), { fieldLabel : _('ID_INDICATOR_GOAL'), id : 'IND_GOAL_'+ indexTab, xtype : 'textfield', anchor : '40%', maskRe : /([0-9\.]+)$/, maxLength : 9, value : 1, width : 80, allowBlank : false, listeners : { focus : function(tb, e) { Ext.QuickTips.register({ target: tb, title: _('ID_HELP'), text: _('ID_GOAL_HELP') }); } } } ], listeners: { render: function() { var index = tabPanel.getActiveTab().id; var myfieldset = document.getElementById('fieldSet_'+index); myfieldset.style.marginLeft = "70px"; myfieldset.style.marginRight = "70px"; } } }), new Ext.form.ComboBox({ anchor : '85%', editable : false, fieldLabel : '<span style=\"color:red;\" ext:qtip="'+ _('ID_FIELD_REQUIRED', _('ID_PROCESS')) +'"> * </span>' + _('ID_PROCESS'), id : 'IND_PROCESS_'+ indexTab, displayField : 'prj_name', valueField : 'prj_uid', forceSelection : true, emptyText : _('ID_EMPTY_PROCESSES'), selectOnFocus : true, hidden : true, typeAhead : true, autocomplete : true, triggerAction : 'all', store : storeProject }), new Ext.form.ComboBox({ anchor : '85%', editable : false, fieldLabel : _('ID_FIRST_FIGURE'), displayField : 'CAT_LABEL_ID', id : 'DAS_IND_FIRST_FIGURE_'+ indexTab, valueField : 'CAT_UID', forceSelection : false, emptyText : _('ID_SELECT'), selectOnFocus : true, hidden : true, typeAhead : true, autocomplete : true, triggerAction : 'all', store : storeGraphic }), new Ext.form.ComboBox({ anchor : '85%', editable : false, fieldLabel : _('ID_PERIODICITY'), displayField : 'CAT_LABEL_ID', id : 'DAS_IND_FIRST_FREQUENCY_'+ indexTab, valueField : 'CAT_UID', forceSelection : false, emptyText : _('ID_SELECT'), selectOnFocus : true, hidden : true, typeAhead : true, autocomplete : true, triggerAction : 'all', store : storeFrequency }), new Ext.form.ComboBox({ anchor : '85%', editable : false, fieldLabel : _('ID_SECOND_FIGURE'), id : 'DAS_IND_SECOND_FIGURE_'+ indexTab, displayField : 'CAT_LABEL_ID', valueField : 'CAT_UID', forceSelection : false, emptyText : _('ID_SELECT'), selectOnFocus : true, hidden : true, typeAhead : true, autocomplete : true, triggerAction : 'all', store : storeGraphic }), new Ext.form.ComboBox({ anchor : '85%', editable : false, fieldLabel : _('ID_PERIODICITY'), displayField : 'CAT_LABEL_ID', id : 'DAS_IND_SECOND_FREQUENCY_'+ indexTab, valueField : 'CAT_UID', forceSelection : false, emptyText : _('ID_SELECT'), selectOnFocus : true, hidden : true, typeAhead : true, autocomplete : true, triggerAction : 'all', store : storeFrequency }) ] }) ] }) ], listeners : { scope: this, activate : function (that) { if (tabActivate.indexOf(that.id) == -1 ) { tabActivate.push(that.id); } } }, closable:true }; if (flag != 'load') { tabPanel.add(tab).show(); } else { tabPanel.add(tab); } }; var deleteOwner = function (dasOwnerUid) { var rowSelected = ownerInfoGrid.getSelectionModel().getSelected(); if (rowSelected) { Ext.Msg.confirm(_('ID_CONFIRM'), _('ID_CONFIRM_DELETE_DASHBOARD_OWNER'),function(btn, text) { if (btn == 'yes') { if (rowSelected.data.DAS_UID == '' ) { store.removeAt(ownerInfoGrid.getSelectionModel().lastActive); return; } viewport.getEl().mask(_('ID_PROCESSING')); Ext.Ajax.request({ url : urlProxy + 'dashboard/'+ DAS_UID +'/owner/' + rowSelected.data.OWNER_UID, method: 'DELETE', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + credentials.access_token }, success: function (result, request) { viewport.getEl().unmask(); response = Ext.util.JSON.decode(result.responseText); PMExt.notify(_('ID_DASHBOARD'),_('ID_DASHBOARD_OWNER_SUCCESS_DELETE')); ownerInfoGrid.store.load(); }, failure: function (result, request) { Ext.MessageBox.alert( _('ID_ALERT'), _('ID_AJAX_COMMUNICATION_FAILED') ); } }); } }); } }; var validateNameDashboard = function () { Ext.Ajax.request({ url : urlProxy + 'dashboard?limit=100', method: 'GET', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + credentials.access_token }, success: function (response) { var jsonResp = Ext.util.JSON.decode(response.responseText); tabPanel.getItem(0).show(); var title = Ext.getCmp('DAS_TITLE').getValue(); for (var i=0; i<jsonResp.data.length; i++) { if (jsonResp.data[i].DAS_TITLE == title && DAS_UID != jsonResp.data[i].DAS_UID ) { PMExt.warning(_('ID_DASHBOARD'), _('ID_DIRECTORY_NAME_EXISTS_ENTER_ANOTHER', title)); return; } } saveDashboard(); }, failure: function (response) { var jsonResp = Ext.util.JSON.decode(response.responseText); PMExt.error(_('ID_ERROR'),jsonResp.error.message); } }); } var saveDashboard = function () { var title = Ext.getCmp('DAS_TITLE').getValue(); var data = {}; if (title == '' ) { PMExt.warning(_('ID_DASHBOARD'), _('ID_DASHBOARD_TITLE') + ' '+ _('ID_IS_REQUIRED')); Ext.getCmp('DAS_TITLE').focus(true,10); return false; } else if (!Ext.getCmp('DAS_TITLE').isValid()) { PMExt.warning(_('ID_DASHBOARD'), _('ID_INVALID_VALUE', _('ID_DASHBOARD_TITLE'))); Ext.getCmp('DAS_TITLE').focus(true,10); return false; } data['DAS_TITLE'] = title; var description = Ext.getCmp('DAS_DESCRIPTION').getValue(); data['DAS_DESCRIPTION'] = description; myMask.msg = _('ID_SAVING'); myMask.show(); if (DAS_UID == '') { $.ajax({ url : urlProxy + 'dashboard', type: 'POST', headers: { 'Content-Type': 'application/json; charset=utf-8', 'Authorization': 'Bearer ' + credentials.access_token }, data: JSON.stringify(data), success: function (response) { DAS_UID = response; saveAllDashboardOwner(response); saveAllIndicators(response); myMask.hide(); }, failure: function (response) { var jsonResp = Ext.util.JSON.decode(response.responseText); myMask.hide(); PMExt.error(_('ID_ERROR'), jsonResp.error.message); }, async: false }); } else { data['DAS_UID'] = DAS_UID $.ajax({ url : urlProxy + 'dashboard', type: 'PUT', headers: { 'Content-Type': 'application/json; charset=utf-8', 'Authorization': 'Bearer ' + credentials.access_token }, data: JSON.stringify(data), success: function (response) { saveAllDashboardOwner(DAS_UID); saveAllIndicators(DAS_UID); myMask.hide(); }, failure: function (response) { var jsonResp = Ext.util.JSON.decode(response.responseText); myMask.hide(); PMExt.error(_('ID_ERROR'), jsonResp.error.message); }, async: false }); } }; var saveAllIndicators = function (DAS_UID) { for (var tab in tabActivate) { if (tab == 'remove' || tab == 'indexOf' || tab == 'map') { continue; } tabPanel.getItem(tabActivate[tab]).show(); var fieldsTab = tabPanel.getItem(tabActivate[tab]).items.items[0].items.items[0].items.items; if (fieldsTab[1].getValue().trim() == '') { PMExt.warning(_('ID_DASHBOARD'), _('ID_INDICATOR_TITLE_REQUIRED', tabPanel.getItem(tabActivate[tab]).title)); fieldsTab[1].focus(true,10); return false; } else if (!fieldsTab[1].isValid()) { PMExt.warning(_('ID_DASHBOARD'), _('ID_INVALID_VALUE', _('ID_INDICATOR_TITLE'))); fieldsTab[1].focus(true,10); return false; } else if (fieldsTab[2].getValue().trim() == '') { PMExt.warning(_('ID_DASHBOARD'), _('ID_INDICATOR_TYPE_REQUIRED', tabPanel.getItem(tabActivate[tab]).title)); fieldsTab[2].focus(true,10); return false; } else if (fieldsTab[2].getValue() != '1050' && fieldsTab[4].getValue().trim() == '') { PMExt.warning(_('ID_DASHBOARD'), _('ID_INDICATOR_PROCESS_REQUIRED', tabPanel.getItem(tabActivate[tab]).title)); fieldsTab[4].focus(true,10); return false; } var goal = fieldsTab[3]; fieldsTab.push(goal.items.items[0]); fieldsTab.push(goal.items.items[1]); var data = []; data['DAS_UID'] = DAS_UID; for (var index in fieldsTab) { var node = fieldsTab[index]; if (index == 'remove' || index == 'map') { continue; } var id = node.id; if (typeof id == 'undefined' || id.indexOf('fieldSet_') != -1 ) { continue; } id = id.split('_'); var field = ''; for (var part = 0; part<id.length-1; part++) { if (part == 0) { field = id[part]; } else { field = field+'_'+id[part]; } } var value = node.getValue(); field = field == 'IND_TITLE' ? 'DAS_IND_TITLE' : field; field = field == 'IND_TYPE' ? 'DAS_IND_TYPE' : field; field = field == 'IND_PROCESS' ? 'DAS_UID_PROCESS' : field; field = field == 'IND_GOAL' ? 'DAS_IND_GOAL' : field; data[field] = value.trim(); } saveDashboardIndicator(data, fieldsTab[0].id); } window.location = 'dashboardList'; }; var saveDashboardIndicator = function (options, id) { var data = {}; data["DAS_UID"] = options['DAS_UID']; data["DAS_IND_TYPE"] = options['DAS_IND_TYPE']; data["DAS_IND_TITLE"] = options['DAS_IND_TITLE']; data["DAS_IND_GOAL"] = options['DAS_IND_GOAL']; data["DAS_IND_DIRECTION"] = options['DAS_IND_DIRECTION']; data["DAS_UID_PROCESS"] = options['DAS_UID_PROCESS']; data["DAS_IND_FIRST_FIGURE"] = options['DAS_IND_FIRST_FIGURE']; data["DAS_IND_FIRST_FREQUENCY"] = options['DAS_IND_FIRST_FREQUENCY']; data["DAS_IND_SECOND_FIGURE"] = options['DAS_IND_SECOND_FIGURE']; data["DAS_IND_SECOND_FREQUENCY"] = options['DAS_IND_SECOND_FREQUENCY']; if (options['DAS_IND_UID'] == '') { $.ajax({ url : urlProxy + 'dashboard/indicator', type: 'POST', headers: { 'Content-Type': 'application/json; charset=utf-8', 'Authorization': 'Bearer ' + credentials.access_token }, data: JSON.stringify(data), success: function (response) { Ext.getCmp(id).setValue(response); }, failure: function (response) { var jsonResp = Ext.util.JSON.decode(response.responseText); PMExt.error(_('ID_ERROR'),jsonResp.error.message); }, async: false }); } else { data["DAS_IND_UID"] = options['DAS_IND_UID']; $.ajax({ url : urlProxy + 'dashboard/indicator', type: 'PUT', headers: { 'Content-Type': 'application/json; charset=utf-8', 'Authorization': 'Bearer ' + credentials.access_token }, data: JSON.stringify(data), success: function (response) { var jsonResp = Ext.util.JSON.decode(response.responseText); }, failure: function (response) { var jsonResp = Ext.util.JSON.decode(response.responseText); PMExt.error(_('ID_ERROR'),jsonResp.error.message); }, async: false }); } }; var saveAllDashboardOwner = function (DAS_UID) { var data = store.data.items; for(var i=0; i<data.length; i++) { var owner = data[i].data; if (owner.DAS_UID == '') { saveDashboardOwner (DAS_UID, owner.OWNER_UID, owner.OWNER_TYPE); } } store.proxy.api.read.url = urlProxy + 'dashboard/'+ DAS_UID +'/owners'; ownerInfoGrid.store.load(); }; var saveDashboardOwner = function (DAS_UID, uid, type) { var data = {}; data['DAS_UID'] = DAS_UID; data['OWNER_UID'] = uid; data['OWNER_TYPE'] = type; $.ajax({ url : urlProxy + 'dashboard/owner', type: 'POST', headers: { 'Content-Type': 'application/json; charset=utf-8', 'Authorization': 'Bearer ' + credentials.access_token }, data: JSON.stringify(data), success: function (response) { var jsonResp = Ext.util.JSON.decode(response.responseText); }, failure: function (response) { var jsonResp = Ext.util.JSON.decode(response.responseText); PMExt.error(_('ID_ERROR'),jsonResp.error.message); }, async: false }); }; var loadIndicators = function (DAS_UID) { Ext.Ajax.request({ url : urlProxy + 'dashboard/' + DAS_UID + '/indicator', method: 'GET', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + credentials.access_token }, success: function (resp