Files
luos/workflow/engine/templates/dashboard/dashletInstanceForm.js
2013-05-15 16:08:04 -04:00

268 lines
9.0 KiB
JavaScript

// Declare global variables
var storeDasInsOwnerType;
var storeDasInsOwnerUID;
var hiddenDasInsUID;
var txtDasInsTitle;
var cboDasUID;
var cboDasInsOwnerType;
var cboDasInsOwnerUID;
var formFields;
var additionalFields;
var dashletInstanceFrm;
// On ready
Ext.onReady(function() {
// Stores
storeDasInsOwnerType = new Ext.data.ArrayStore({
idIndex: 0,
fields: ['id', 'value'],
data: [['USER', _('ID_USER')], ['DEPARTMENT', _('ID_DEPARTMENT')], ['GROUP', _('ID_GROUP')], ['EVERYBODY', _('ID_ALL')]]
});
storeDasInsOwnerUID = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: 'getOwnersByType',
method: 'POST'
}),
reader: new Ext.data.JsonReader({
totalProperty: 'total',
root: 'owners',
fields: [{name: 'OWNER_UID', type: 'string'}, {name: 'OWNER_NAME', type: 'string'}]
}),
autoLoad: true,
listeners: {
beforeload: function (store) {
storeDasInsOwnerUID.baseParams = {'option': 'OWNERTYPE', 'type': cboDasInsOwnerType.getValue()};
},
load: function (store, record, option) {
if (dashletInstance.DAS_INS_UID) {
cboDasInsOwnerUID.setValue(dashletInstance.DAS_INS_OWNER_UID);
}
else {
if (store.getAt(0)) {
cboDasInsOwnerUID.setValue(store.getAt(0).get(cboDasInsOwnerUID.valueField));
}
}
if (cboDasInsOwnerType.getValue() == 'EVERYBODY') {
cboDasInsOwnerUID.hide();
cboDasInsOwnerUID.container.up('div.x-form-item').setStyle('display', 'none');
}
else {
cboDasInsOwnerUID.show();
cboDasInsOwnerUID.container.up('div.x-form-item').setStyle('display', 'block');
}
}
}
});
// Fields
hiddenDasInsUID = new Ext.form.Hidden({
id: 'hiddenDasInsUID',
name: 'DAS_INS_UID'
});
txtDasInsTitle = new Ext.form.TextField({
id: 'txtDasInsTitle',
name: 'DAS_INS_TITLE',
fieldLabel: _('ID_TITLE'),
allowBlank: false,
width: 320,
listeners: {
blur: function() {
this.setValue(this.getValue().trim());
}
}
});
cboDasUID = new Ext.form.ComboBox({
id: 'cboDasUID',
name: 'DAS_UID',
fieldLabel: _('ID_DASHLET'),
editable: false,
width: 320,
store: storeDasUID,
triggerAction: 'all',
mode: 'local',
valueField: 'DAS_UID',
displayField: 'DAS_TITLE',
listeners: {
select: function (combo, record, index) {
Ext.Ajax.request({
url: 'getAdditionalFields',
method: 'POST',
params: {DAS_UID: this.getValue()},
success: function (result, request) {
var response = Ext.util.JSON.decode(result.responseText)
additionalFields = response.additionalFields;
dashletInstanceFrm.remove('additional');
if (additionalFields.length > 0) {
for (var i = 0; i < additionalFields.length; i++) {
for (var listener in additionalFields[i].listeners) {
try {
eval('additionalFields[i].listeners.' + listener + ' = ' + additionalFields[i].listeners[listener] + ';');
} catch (e) {}
}
}
dashletInstanceFrm.add(new Ext.form.FieldSet({
id: 'additional',
title: _('ID_OTHER'),
items: additionalFields
}));
}
dashletInstanceFrm.doLayout(false, true);
// Execute after render scripts
if (additionalFields.length > 0) {
for (var i = 0; i < additionalFields.length; i++) {
if (typeof(additionalFields[i]._afterRender) != 'undefined') {
try {
eval(additionalFields[i]._afterRender);
} catch (e) {}
}
}
}
},
failure: function (result, request) {
myMask.hide();
Ext.MessageBox.alert(_('ID_ALERT'), _('ID_AJAX_COMMUNICATION_FAILED'));
}
});
}
}
});
cboDasInsOwnerType = new Ext.form.ComboBox({
id: 'cboDasInsOwnerType',
name: 'DAS_INS_OWNER_TYPE',
fieldLabel: _('ID_ASSIGN_TO'),
editable: false,
width: 320,
store: storeDasInsOwnerType,
triggerAction: 'all',
mode: 'local',
value: 'USER',
valueField: 'id',
displayField: 'value',
listeners: {
select: function (combo, record, index) {
storeDasInsOwnerUID.baseParams = {'option': 'OWNERTYPE', 'type': combo.getValue()};
dashletInstance.DAS_INS_OWNER_UID = '';
cboDasInsOwnerUID.store.removeAll();
cboDasInsOwnerUID.clearValue();
cboDasInsOwnerUID.store.reload();
}
}
});
cboDasInsOwnerUID = new Ext.form.ComboBox({
id: 'cboDasInsOwnerUID',
name: 'DAS_INS_OWNER_UID',
fieldLabel: _('ID_NAME'),
editable: false,
width: 320,
store: storeDasInsOwnerUID,
triggerAction: 'all',
mode: 'local',
allowBlank: true,
valueField: 'OWNER_UID',
displayField: 'OWNER_NAME'
});
formFields = [
new Ext.form.FieldSet({
id: 'general',
title: _('ID_GENERAL'),
items: [hiddenDasInsUID, txtDasInsTitle, cboDasUID, cboDasInsOwnerType, cboDasInsOwnerUID]
})
];
if (additionalFields.length > 0) {
if (additionalFields.length > 0) {
for (var i = 0; i < additionalFields.length; i++) {
for (var listener in additionalFields[i].listeners) {
try {
eval('additionalFields[i].listeners.' + listener + ' = ' + additionalFields[i].listeners[listener] + ';');
} catch (e) {alert('3->'+e);}
}
}
}
formFields.push(new Ext.form.FieldSet({
id: 'additional',
title: _('ID_OTHER'),
items: additionalFields
}));
}
// Form
dashletInstanceFrm = new Ext.form.FormPanel({
id: 'dashletInstanceFrm',
labelWidth: 100,
border: true,
width: 465,
frame: true,
title: _('ID_DASHLET_INSTANCE_CONFIGURATION'),
items: formFields,
buttonAlign: 'right',
buttons: [
new Ext.Action({
id: 'btnSubmit',
text: _('ID_SAVE'),
handler: function () {
if (dashletInstanceFrm.getForm().isValid()) {
var myMask = new Ext.LoadMask(Ext.getBody(), {msg: _('ID_SAVING_LABEL') + '.' + _('ID_PLEASE_WAIT') });
myMask.show();
Ext.Ajax.request({
url: 'saveDashletInstance',
method: 'POST',
params: dashletInstanceFrm.getForm().getFieldValues(),
success: function (result, request) {
myMask.hide();
var dataResponse = Ext.util.JSON.decode(result.responseText)
switch (dataResponse.status) {
case 'OK':
window.location.href = 'dashletsList';
break;
default:
Ext.MessageBox.alert( _('ID_ALERT'), _('ID_FAILED_DASHBOARD INSTANCE') );
break;
}
},
failure: function (result, request) {
myMask.hide();
Ext.MessageBox.alert( _('ID_ALERT'), _('ID_AJAX_COMMUNICATION_FAILED') );
}
});
}
else {
Ext.MessageBox.alert(_('ID_INVALID_DATA'), _('ID_CHECK_FIELDS_MARK_RED'));
}
}
}),
{
xtype: 'button',
id: 'btnCancel',
text: _('ID_CANCEL'),
handler: function () {
window.location.href = 'dashletsList';
}
}
]
});
// Set initial values
dashletInstanceFrm.getForm().setValues(dashletInstance);
// Render
dashletInstanceFrm.render(document.body);
// Execute after render scripts
if (additionalFields.length > 0) {
for (var i = 0; i < additionalFields.length; i++) {
if (typeof(additionalFields[i]._afterRender) != 'undefined') {
try {
eval(additionalFields[i]._afterRender);
} catch (e) {}
}
}
}
});