#set ($TEMPLATE_TEXT = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "BacklogTable", "backlogtable.templatetext")))
#set ($ADD_STORY_TITLE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "BacklogTable", "backlogtable.addstorytitle")))
#set ($ADD_CHILD_STORY_TITLE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "BacklogTable", "backlogtable.addchildstorytitle")))
#if ($canManageStories)
#set ($EDIT_STORY_TITLE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "BacklogTable", "backlogtable.editstorytitle")))
#else
#set ($EDIT_STORY_TITLE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "BacklogTable", "backlogtable.viewstorytitle")))
#end
#set ($STORY_DLG_SAVE_ERROR_TITLE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.save.error.dialog.title")))
#set ($DLG_NAME = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "dialog.label.name")))
#set ($DLG_DESC = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "dialog.label.desc")))
#set ($DLG_SAVE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "dialog.button.save")))
#set ($DLG_SAVE_WAIT = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "dialog.save.wait")))
#set ($DLG_CANCEL = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "dialog.button.cancel")))
#set ($STORY_SUBMITTEDBY = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.submittedby")))
#set ($STORY_ACCEPTEDBY = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.acceptedby")))
#set ($STORY_CATEGORY = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.category")))
#set ($STORY_ACCPTCRI = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.acceptcriteria")))
#set ($STORY_EXTID = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.externalid")))
#set ($STORY_STATUS = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.status")))
#set ($STORY_SIZE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.size")))
#set ($STORY_CONFID = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.confidence")))
#set ($STORY_BUSIVAL = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.busivalue")))
#set ($STORY_EXTREF = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.extref")))
#set ($STORY_NOTES = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.notes")))
#set ($STORY_INFO = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.storyinfo")))
#set ($STORY_CUSTOM = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.custom")))
#set ($FORM_REQUIRED_FIELD_ERROR= $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "FocusCommon", "form.required.field.error")))
#set ($REQUIRED_FIELD = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "FocusCommon", "requiredfield.error")))
#set ($DESCRIPTION_TOO_LONG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.desctoolong", "{0}", "{1}")))
#set ($ACCPTCRIT_TOO_LONG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.accptcrittoolong", "{0}", "{1}")))
#set ($NOTES_TOO_LONG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "GStoryDialog", "storydialog.label.notestoolong", "{0}", "{1}")))
var storyFieldId = {
NAME: 'Name',
BACKLOGID: 'reqbacklogid',
REQID: 'reqId',
RANK: 'rank',
CATEGORY: 'category',
NOTES: 'notes',
ACCEPTANCECRITERIA: 'AcceptanceCtiteria',
ACCEPTEDBY: 'AcceptedBy',
BUSINESSVALUE: 'BusinessValue',
CONFIDENCE: 'Confidence',
DESCRIPTION: 'Description',
EXTERNALREFERENCE: 'ExternalReference',
SIZE: 'Size',
STATUS: 'Status',
SUBMITTEDBY: 'SubmittedBy',
PARENT_ID: 'parentid'
};
// ---------- story Dialog ---------
/*
* StoryDialog object implements dialog for new and edit story.
* Main entry from external callers:
* AddNewRequirement
* ShowRequirementDetails
* Followings need to be set by the caller before calling the entries:
* 1. productBacklog - backlogId for which the story is associated with or launched on behalf or
* projectId,sprintId - projectId,sprintId for which the story is associated with or launched on behalf
* 2. saveSuccessHandlerFn - call back when save story is successfull, provided by the caller
* 3.(updaterdlgBklogComboByRec and updaterdlgBklogComboByDS) are called to update the backlog combo list on the story dialog.
*/
var storyDialog = {
// linkages to panel which launches it
tabx: 'pbx', //tab view or not? must be set before launching it
productBacklog : null, // must be set before launching it if projectId is not set
projectId:null,//must be set before launching it if productBacklog is not set
sprintId:null,//must be set before launching it if productBacklog is not set
saveSuccessHandlerFn : null, // must be set before launching it
saveFailureHandlerFn : null, // handler for failure or when the returned data is different from form record data.
loadSuccessHandlerFn : null, // must be set before launching it
// local properties
blComboRec : null,
requirementDialog : null,
rdlgFormCtrl : null,
rdlgFormRec: null, // add/edit Story form data record
rdlgNewFormRec: null, // cached copy of the new Story data record to load the form
rdlgReqTitle : null,
rdlgBklogCombo : null, // Requirement dialog backlog combo
rdlgBklogCombods : null, // Requirement dialog backlog combo ds.
rdlgRankField:null,
storyDescription: null,
storyAccptCrit: null,
storyNotes: null,
demandArtifactId: null,
hiddenParentReqId: null,
loadMask:null,
init : function() {
Ext.QuickTips.init();
storyDialog.blComboRec = Ext.data.Record.create( [
{ name:'id' },
{ name:'name', sortType:'asUCString' }
]);
storyDialog.rdlgBklogCombods = new Ext.data.Store({
id : 0,
proxy: new Ext.data.HttpProxy({url:'pbv/PBVAsyncHandler?action=BACKLOGLIST'}),
reader: new Ext.data.JsonReader({
totalProperty: 'backlogCount',
root: 'backlogs'
}, storyDialog.blComboRec),
sortInfo:{field: 'name', direction: "ASC"}
});
// backlog combo on form
if( storyDialog.rdlgBklogCombo == null ) {
storyDialog.rdlgBklogCombo = new Ext.form.ComboBox({
id: storyFieldId.BACKLOGID,
fieldLabel: 'Backlog',
hiddenName: 'reqbacklogid',
name: 'reqbacklogid',
store: storyDialog.rdlgBklogCombods,
displayField: 'name',
valueField: 'id',
selectOnFocus: true,
forceSelection : true,
listClass: 'x-combo-list-small',
mode: 'local',
triggerAction: 'all',
editable: false,
autoWidth: false,
anchor: '93%',
tpl: '{[Ext.util.Format.htmlEncode(values.name)]}
'
});
}
// status combo
storyDialog.statusComboDS = new Ext.data.Store({
proxy:new Ext.data.HttpProxy({url:'focus/FocusAdminHandler?action=GET-STATUS-ENUM'}),
reader: new Ext.data.JsonReader( {
id:'id',
totalCount: 'storyStatusCount',
root: 'storyStatuses'
}, Bxt.EnumRecordType),
sortInfo:{field: 'seq', direction: "ASC"}
}
);
storyDialog.statusCombo = new Ext.form.ComboBox ({
autoCreate: {tag: "input", type: "combo", id: "storyDlgStatus"},
id: storyFieldId.STATUS,
fieldLabel: '$STORY_STATUS',
hiddenName: 'status',
name: 'status',
store: storyDialog.statusComboDS,
displayField: 'value',
valueField: 'id',
//value: 'Not Started',
selectOnFocus: true,
forceSelection : true,
listClass: 'x-combo-list-small',
mode: 'local',
triggerAction: 'all',
editable: false,
autoWidth: false,
anchor: '100%',
tpl: '{[Ext.util.Format.htmlEncode(values.value)]}
'
});
// confidence combo
storyDialog.confidComboDS = new Ext.data.Store({
proxy:new Ext.data.HttpProxy({url:'focus/FocusAdminHandler?action=GET-CONFD-ENUM'}),
reader: new Ext.data.JsonReader( {
id:'id',
totalProperty: 'storyConfidCount',
root: 'storyConfids'
}, Bxt.EnumRecordType),
sortInfo:{field: 'seq', direction: "ASC"}
}
);
storyDialog.confidCombo = new Ext.form.ComboBox({
autoCreate: {tag: "input", type: "combo", id: "storyDlgConfidence"},
id: storyFieldId.CONFIDENCE,
fieldLabel: '$STORY_CONFID',
hiddenName: 'confid',
store: storyDialog.confidComboDS,
displayField: 'value',
valueField: 'id',
value: '',
selectOnFocus: true,
forceSelection : true,
listClass: 'x-combo-list-small',
mode: 'local',
triggerAction: 'all',
editable: false,
autoWidth: false,
width: 200,
tpl: '{[Ext.util.Format.htmlEncode(values.value)]}
'
});
// form record
storyDialog.rdlgFormRec = Ext.data.Record.create( [
{ name:'reqId' },
{ name:'name' },
{ name:'reqbacklogid' },
{ name:'submittedby' },
{ name:'acceptedby' },
{ name:'category' },
{ name:'desc' },
{ name:'acceptcrit' },
{ name:'status' },
{ name:'rank' },
{ name:'size' },
{ name:'businessvalue' },
{ name:'confid' },
{ name:'externalref' },
{ name:'notes' }
]);
//----------------------------------------------------------------------------------------------------------
#parse("/focus/storydialogcontrols.vm")
storyDialog.rdlgReqTitle = titleField;
storyDialog.rdlgReqDesc = descField;
storyDialog.rdlgRankField = rankField;
//----------------------------------------------------------------------------------------------------------
var bPanel = new Ext.Panel({
layout: 'column',
anchor: '95%',
border: false,
items: [{
columnWidth: .5,
border: false,
layout: 'form',
items: [ businessValueField,
sizeField ]
},{
columnWidth: .5,
border: false,
layout: 'form',
items: [ storyDialog.statusCombo,
categoryField
]
}]
});
storyDialog.storyInfoPanel = new Ext.Panel({
title:'$STORY_INFO',
layout:'form',
items: [
storyIdField,
storyDialog.hiddenParentReqId,
storyDialog.rdlgRankField,
titleField,
descField,
descHTMLField,
bPanel
],
id: 'StoryTab'
});
storyDialog.tabPanel = new Ext.TabPanel({
id: 'sdlg-id',
height: 428,
activeTab: 0,
bodyStyle:'padding:10px',
items:[
storyDialog.storyInfoPanel,
{
title:'$STORY_ACCPTCRI',
layout:'form',
items: [ acceptanceCriteriaField,
acceptanceCriteriaHTMLField ],
id: 'ACTab'
},{
title:'$STORY_NOTES',
layout:'form',
items: [ notesHTMLField,
notesField ],
id: 'NotesTab'
}, {
title: '$STORY_CUSTOM',
layout: 'form',
items: [ storyDialog.confidCombo,
submittedByField,
acceptedByField,
externalRefField ],
id: 'CustomTab'
}]
});
try {
storyDialog.rdlgFormCtrl = new Ext.FormPanel({
id: 'sdlg-form',
labelWidth: 90,
border:false,
width: 550,
layout: 'fit',
buttonAlign: 'right',
labelAlign: 'right',
renderTo: document.body,
reader: new Ext.data.JsonReader({}, storyDialog.rdlgFormRec),
items: [ storyDialog.tabPanel ]
});
} catch (error) {}
// form dialog
if(!storyDialog.requirementDialog){
storyDialog.requirementDialog = new Bxt.BMSWindow({
id : 'sdlg-win',
layout:'fit',
width:700,
height:450,
closeAction:'hide',
plain: true,
items: storyDialog.rdlgFormCtrl,
modal: true,
resizable : false,
closable: true,
renderTo: document.body,
saveFunc: storyDialog.saveHandler,
formCtrl: storyDialog.rdlgFormCtrl,
buttons: [{
id: 'storyDlgSaveButton',
#if (!$canManageStories)
disabled: true,
#end
text: '$DLG_SAVE',
handler: function(){
storyDialog.saveHandler();
}
},
{
text: '$DLG_CANCEL',
handler: function() {
storyDialog.requirementDialog.hide();
}
}]
});
};
// Intercept backspace key on dialog
var keymap = new Ext.KeyMap('sdlg-win', {
key: Ext.EventObject.BACKSPACE,
fn : function(k, e) {
if(!BxtUtil.handleBACKSPACEKey(k,e)) {
var tid = e.getTarget().id;
if( tid === 'storyDlgStatus' || tid === 'storyDlgConfidence') {
e.preventDefault();
}
}
}
});
storyDialog.requirementDialog.on('show', function(){
hideField(storyFieldId.RANK);
storyDialog.rdlgReqTitle.getEl().dom.focus();
}, null, {delay: 100});
storyDialog.requirementDialog.on('beforeshow', function(){
storyDialog.tabPanel.setActiveTab(storyDialog.storyInfoPanel);
});
},
saveHandler : function(){
if(!storyDialog.rdlgFormCtrl.form.isValid()) {
var valid = true;
var invalidForm = null;
storyDialog.tabPanel.items.each( function(item) {
var formGroup = item;
formGroup.items.each( function(item2) {
try {
if (valid && !item2.validate()) {
valid = false;
invalidForm = formGroup;
}
} catch (e) {
}
});
});
if(invalidForm != null)
{
storyDialog.tabPanel.setActiveTab(invalidForm);
}
BxtUtil.showErrorMsg('$FORM_REQUIRED_FIELD_ERROR');
return;
}
storyDialog.requirementDialog.confirmHide = true;
// reqbacklogId not in the form submit values ,
// so post them explicitly.
var rblogid = storyDialog.rdlgBklogCombo.getValue();
// get text area values
var descVal = '';
var isDescRichText = false;
if (storyDialog.storyDescription) {
descVal = storyDialog.storyDescription.getValue();
var maxLength = storyDialog.storyDescription.maxLength;
if (undefined != maxLength && null != maxLength) {
if (undefined != descVal && null != descVal) {
if (descVal.length > maxLength) {
var msg = '$DESCRIPTION_TOO_LONG';
msg = msg.replace(/\{0\}/, maxLength);
msg = msg.replace(/\{1\}/, descVal.length);
BxtUtil.showErrorMsg(msg);
return;
}
}
}
}
if (storyDialog.storyDescription.id.search(/_html/) > -1) {
isDescRichText = true;
}
var accptCritVal = '';
var isAccCritRichText = false;
if (storyDialog.storyAccptCrit) {
accptCritVal = storyDialog.storyAccptCrit.getValue();
var maxLength = storyDialog.storyAccptCrit.maxLength;
if (undefined != maxLength && null != maxLength) {
if (undefined != accptCritVal && null != accptCritVal) {
if (accptCritVal.length > maxLength) {
var msg = '$ACCPTCRIT_TOO_LONG';
msg = msg.replace(/\{0\}/, maxLength);
msg = msg.replace(/\{1\}/, accptCritVal.length);
BxtUtil.showErrorMsg(msg);
return;
}
}
}
}
if (storyDialog.storyAccptCrit.id.search(/_html/) > -1) {
isAccCritRichText = true;
}
var notesVal = '';
var isNotesRichText = false;
if (storyDialog.storyNotes) {
notesVal = storyDialog.storyNotes.getValue();
var maxLength = storyDialog.storyNotes.maxLength;
if (undefined != maxLength && null != maxLength) {
if (undefined != notesVal && null != notesVal) {
if (notesVal.length > maxLength) {
var msg = '$NOTES_TOO_LONG';
msg = msg.replace(/\{0\}/, maxLength);
msg = msg.replace(/\{1\}/, notesVal.length);
BxtUtil.showErrorMsg(msg);
return;
}
}
}
}
if (storyDialog.storyNotes.id.search(/_html/) > -1) {
isNotesRichText = true;
}
if (storyDialog.parentStoryId != null) {
storyDialog.hiddenParentReqId.setValue(storyDialog.parentStoryId);
}
storyDialog.rdlgFormCtrl.form.submit({url:'pbv/PBVAsyncHandler',
waitMsg : ' ',
waitTitle : '$DLG_SAVE_WAIT',
params:{action:'SAVE-REQ', demandArtifactId: storyDialog.demandArtifactId, backlogid: storyDialog.productBacklog, projectid:storyDialog.projectId,sprintid:storyDialog.sprintId,
reqbacklogid: rblogid, reqbacklogid:storyDialog.productBacklog, tabx:storyDialog.tabx, descVal: descVal, accptCritVal: accptCritVal, notesVal: notesVal,
isDescRichText: isDescRichText, isAccCritRichText: isAccCritRichText, isNotesRichText: isNotesRichText},
settings: {show: true, title:'$STORY_DLG_SAVE_ERROR_TITLE'},
success:function(form, action) {
storyDialog.requirementDialog.hide();
if(storyDialog.saveSuccessHandlerFn) {
storyDialog.saveSuccessHandlerFn(form, action);
}
},
failure : function(form, action){
//BxtUtil.showActionError(action);
storyDialog.requirementDialog.confirmHide = false;
ErrorHandlerLib.onFormFailure(form, action);
}
});
},
setupRankField:function()
{
storyDialog.rdlgRankField.hide();//always hide because we are moving towards positional
},
// ---------- Edit Requirement ----------
showRequirementDetails : function(reqId, copy, el, loadMask) {
storyDialog.requirementDialog.confirmHide = false;
storyDialog.loadMask = loadMask;
var currBacklogId = storyDialog.productBacklog;
var currProjectId = storyDialog.projectId;
var currSprintId = storyDialog.sprintId;
var parentStoryId = storyDialog.parentStoryId;
storyDialog.rdlgFormCtrl.form.reset();
BxtLoadUtil.loadWidget(
'pbv/PBVAsyncHandler?action=LOAD-REQ',
{
reqId: reqId,
backlogId: currBacklogId,
projectId: currProjectId,
sprintId: currSprintId,
parentstoryId: parentStoryId,
isNew: false,
isCopy: copy
},
{
el: el
},
null,//loadMask is casing scrolling issues, so use progress bar
storyDialog.loadDlgCallback,
true //showProgress
);
},
// ---------- Add Requirement ----------
addNewRequirement : function(el, loadMask) {
storyDialog.requirementDialog.confirmHide = false;
storyDialog.loadMask = loadMask;
var currBacklogId = storyDialog.productBacklog;
var currProjectId = storyDialog.projectId;
var currSprintId = storyDialog.sprintId;
var parentStoryId = storyDialog.parentStoryId;
storyDialog.rdlgFormCtrl.form.reset();
BxtLoadUtil.loadWidget(
'pbv/PBVAsyncHandler?action=LOAD-REQ',
{
backlogId: currBacklogId,
projectId: currProjectId,
sprintId: currSprintId,
parentstoryId: parentStoryId,
isNew: true
},
{
el: el
},
null,
storyDialog.loadDlgCallback,
true//showProgress
);
},
loadDlgCallback : function(formJSON, action) {
storyDialog.loadDlgComponents(formJSON.fields, false);
if (action && action.params && action.params.isNew) {
storyDialog.rdlgBklogCombo.enable();
if(storyDialog.parentStoryId == null) {
storyDialog.requirementDialog.setTitle('$ADD_STORY_TITLE');
} else {
storyDialog.requirementDialog.setTitle('$ADD_CHILD_STORY_TITLE' + " - " + BxtUtil.formatId(storyDialog.parentStoryId));
}
} else if (action && action.params) {
storyDialog.rdlgBklogCombo.setDisabled(!action.params.isCopy);
var title = (!action.params.isCopy) ? '$EDIT_STORY_TITLE' : '$ADD_STORY_TITLE';
// do not show the story id in the title if it is a copy story
var titleId = (action.params.isCopy) ? "" : ": " + BxtUtil.formatId(action.params.reqId);
storyDialog.requirementDialog.setTitle(title + titleId);
}
storyDialog.setupRankField();
storyDialog.requirementDialog.show(action.settings.el);
// make a call back once the story dialog is loaded
try {
storyDialog.loadSuccessHandlerFn();
} catch (e) {
}
},
loadDlgComponents : function(fields, reload, reloadDesc, reloadAccptCrit, reloadNotes) {
//*********************
// Set Field Values
//*********************
if (fields) {
for (var i = 0; i < fields.length; i++) {
// get form component
var fieldId = fields[i].fieldId;
var cmp = Ext.getCmp(fieldId);
//if(cmp)??? why is this not working??
{
// create text area for description, acceptance criteria, and notes
if (storyFieldId.DESCRIPTION == fieldId ||
storyFieldId.ACCEPTANCECRITERIA == fieldId ||
storyFieldId.NOTES == fieldId ) {
if (storyFieldId.NOTES == fieldId || fields[i].HTMLText) {
hideField(fieldId);
showField(fieldId + "_html");
cmp = Ext.getCmp(fieldId + "_html");
}
else {
showField(fieldId);
hideField(fieldId + "_html");
}
}
// set handles to the text areas so we can get the value on save
if (storyFieldId.DESCRIPTION == fieldId) {
storyDialog.storyDescription = cmp;
if (reload) {
cmp.setValue(reloadDesc);
}
}
else
if (storyFieldId.ACCEPTANCECRITERIA == fieldId) {
storyDialog.storyAccptCrit = cmp;
if (reload) {
cmp.setValue(reloadAccptCrit);
}
}
else
if (storyFieldId.NOTES == fieldId) {
storyDialog.storyNotes = cmp;
if (reload) {
cmp.setValue(reloadNotes);
}
}
// clear field
if (!reload) {
if (cmp.store) {
cmp.store.removeAll();
}
cmp.reset();
}
// check for component data and load
if (null != fields[i].data && !reload) {
cmp.store.loadData(fields[i].data);
}
//localize blank text
cmp.blankText = '$REQUIRED_FIELD';
// st field validation
if (null != fields[i].required) {
cmp.allowBlank = !fields[i].required;
}
if (null != fields[i].maxLength && -1 != fields[i].maxLength) {
cmp.maxLength = fields[i].maxLength;
}
else {
cmp.maxLength = undefined;
}
// set component value
if (!reload) {
if(null != fields[i].value)
{
cmp.setValue(fields[i].value);
}else
{
cmp.setValue();
}
}
}
}
}
},
reloadValidation : function(combo, record, index) {
var currBacklogId = storyDialog.productBacklog;
var currProjectId = storyDialog.projectId;
var currSprintId = storyDialog.sprintId;
var desc = '';
if (storyDialog.storyDescription) {
desc = storyDialog.storyDescription.getValue();
}
var accptCrit = '';
if (storyDialog.storyAccptCrit) {
accptCrit = storyDialog.storyAccptCrit.getValue();
}
var notes = '';
if (storyDialog.storyNotes) {
notes = storyDialog.storyNotes.getValue();
}
BxtLoadUtil.loadWidget(
'pbv/PBVAsyncHandler?action=LOAD-REQ',
{
backlogId: currBacklogId,
projectId: currProjectId,
sprintId: currSprintId,
isNew: true
},
{
reloadDesc: desc,
reloadAccptCrit: accptCrit,
reloadNotes: notes
},
null,//loadMask is casing scrolling issues, so use progress bar
storyDialog.reloadValidationCallback,
true
);
},
reloadValidationCallback : function(formJSON, action) {
storyDialog.loadDlgComponents(formJSON.fields, true, action.settings.reloadDesc,
action.settings.reloadAccptCrit, action.settings.reloadNotes);
// make a call back once the story dialog is loaded
try {
storyDialog.loadSuccessHandlerFn();
} catch (e) {
}
},
// ------ update storyDialog backlog combo ----------
updaterdlgBklogCombodsByRec: function(rec){
var ds = storyDialog.rdlgBklogCombods;
ds.removeAll();
for (var i = 0; i < rec.length; i++) {
var r = rec[i];
ds.add(new storyDialog.blComboRec({'id': r.get('id'), 'name': r.get('name')}));
}
ds.sort('name', 'ASC');
},
updaterdlgBklogCombodsByDS: function(srcds){
var ds = storyDialog.rdlgBklogCombods;
ds.removeAll();
var len = srcds.getCount();
for (var i = 0; i < len; i++) {
var r = srcds.getAt(i);
ds.add(new storyDialog.blComboRec({
'id': r.get('id'),
'name': r.get('name')
}));
}
ds.sort('name', 'ASC');
},
resetDialog : function() {
storyDialog.productBacklog = null;
storyDialog.projectId = null;
storyDialog.sprintId = null;
storyDialog.parentStoryId = null;
storyDialog.tabx = null;
storyDialog.saveSuccessHandlerFn = null;
},
//watir support
setDescription:function(description){
if (storyDialog.storyDescription) {
storyDialog.storyDescription.setValue(description);
}
},
setAC:function(value){
if (storyDialog.storyAccptCrit) {
storyDialog.storyAccptCrit.setValue(value);
}
},
setNotes:function(value){
if (storyDialog.storyNotes) {
storyDialog.storyNotes.setValue(value);
}
}
};
hideField = function(fieldName) {
var field = storyDialog.rdlgFormCtrl.findById(fieldName);
if (field != null) {
field.hide();
if (field.getEl()) {
field.getEl().up('.x-form-item').setDisplayed(false);
}
} else {
alert("Field could not be found");
}
}
showField = function(fieldName) {
var field = storyDialog.rdlgFormCtrl.findById(fieldName);
if (field != null) {
field.show();
if (field.getEl()){
field.getEl().up('.x-form-item').setDisplayed(true);
}
} else {
alert("Field could not be found");
}
}